Skip to content

Commit f01ca6c

Browse files
committed
chore: ensure session management api is exposed in default export
tests added to check keep_alive and limits
1 parent 403c327 commit f01ca6c

File tree

3 files changed

+60
-7
lines changed

3 files changed

+60
-7
lines changed

packages/playwright-cloudflare/index.d.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,4 +116,13 @@ export async function history(endpoint: BrowserWorker): Promise<ClosedSession[]>
116116
*/
117117
export async function limits(endpoint: BrowserWorker): Promise<LimitsResponse>;
118118

119-
export default Playwright;
119+
declare const playwright: Pick<Playwright, 'chromium' | 'selectors' | 'devices' | 'errors' | 'request'> & {
120+
connect,
121+
launch,
122+
limits,
123+
sessions,
124+
history,
125+
acquire,
126+
};
127+
128+
export default playwright;

packages/playwright-cloudflare/src/index.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,16 @@ export const devices = playwright.devices;
123123
export const errors = playwright.errors;
124124
export const request = playwright.request;
125125

126-
export default playwright;
126+
export default {
127+
chromium,
128+
selectors,
129+
devices,
130+
errors,
131+
request,
132+
launch,
133+
connect,
134+
sessions,
135+
history,
136+
acquire,
137+
limits,
138+
};

packages/playwright-cloudflare/tests/src/browser-rendering/api.spec.ts

Lines changed: 37 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
import { launch, connect, sessions, BrowserWorker, Browser, history, acquire } from '@cloudflare/playwright';
1+
import { launch, connect, sessions, history, acquire, limits } from '@cloudflare/playwright';
2+
import playwright from '@cloudflare/playwright';
23

34
import { test, expect } from '../workerFixtures';
45

5-
async function launchAndGetSession(endpoint: BrowserWorker): Promise<[Browser, string]> {
6-
const browser = await launch(endpoint);
6+
import type { BrowserWorker, Browser, WorkersLaunchOptions } from '@cloudflare/playwright';
7+
8+
async function launchAndGetSession(endpoint: BrowserWorker, options?: WorkersLaunchOptions): Promise<[Browser, string]> {
9+
const browser = await launch(endpoint, options);
710
const sessionId = browser.sessionId();
811
expect(sessionId).toBeDefined();
912
return [browser, sessionId];
@@ -42,14 +45,43 @@ test(`should close session when launched browser is closed`, async ({ env }) =>
4245
expect(afterClose.map(a => a.sessionId)).not.toContain(sessionId);
4346
});
4447

48+
test(`should close session after keep_alive`, async ({ env }) => {
49+
const [browser, sessionId] = await launchAndGetSession(env.BROWSER, { keep_alive: 15000 });
50+
await new Promise(resolve => setTimeout(resolve, 11000));
51+
const beforeKeepAlive = await sessions(env.BROWSER);
52+
expect(beforeKeepAlive.map(a => a.sessionId)).toContain(sessionId);
53+
expect(browser.isConnected()).toBe(true);
54+
await new Promise(resolve => setTimeout(resolve, 5000));
55+
const afterKeepAlive = await sessions(env.BROWSER);
56+
expect(afterKeepAlive.map(a => a.sessionId)).toContain(sessionId);
57+
expect(browser.isConnected()).toBe(true);
58+
});
4559

4660
test(`should add new session to history when launching browser`, async ({ env }) => {
4761
const before = await history(env.BROWSER);
48-
const [launchedBrowse, sessionId] = await launchAndGetSession(env.BROWSER);
62+
const [launchedBrowser, sessionId] = await launchAndGetSession(env.BROWSER);
4963
const after = await history(env.BROWSER);
5064

5165
expect(before.map(a => a.sessionId)).not.toContain(sessionId);
5266
expect(after.map(a => a.sessionId)).toContain(sessionId);
5367

54-
await launchedBrowse.close();
68+
await launchedBrowser.close();
69+
});
70+
71+
test(`should show sessionId in active sessions under limits endpoint`, async ({ env }) => {
72+
const [launchedBrowser, sessionId] = await launchAndGetSession(env.BROWSER);
73+
74+
const response = await limits(env.BROWSER);
75+
expect(response.activeSessions.map(s => s.id)).toContain(sessionId);
76+
77+
await launchedBrowser.close();
78+
});
79+
80+
test(`should have functions in default exported object`, () => {
81+
expect(playwright.launch).toBe(launch);
82+
expect(playwright.connect).toBe(connect);
83+
expect(playwright.sessions).toBe(sessions);
84+
expect(playwright.history).toBe(history);
85+
expect(playwright.acquire).toBe(acquire);
86+
expect(playwright.limits).toBe(limits);
5587
});

0 commit comments

Comments
 (0)