Skip to content

Commit 28f6a84

Browse files
committed
test: keep sessionid in browser for tests
1 parent 2910400 commit 28f6a84

File tree

5 files changed

+23
-18
lines changed

5 files changed

+23
-18
lines changed

packages/playwright-cloudflare/internal.d.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { isUnderTest } from 'playwright-core/lib/utils';
2+
13
export * from './tests';
24
export { expect, _baseTest, Fixtures } from './types/test';
35

@@ -62,3 +64,6 @@ interface Debug {
6264
}
6365

6466
export const debug: Debug;
67+
68+
export function setUnderTest(underTest: boolean): boolean;
69+
export function isUnderTest(): boolean;

packages/playwright-cloudflare/src/index.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type { AcquireResponse, ActiveSession, Browser, BrowserWorker, ClosedSess
99
import { transportZone, WebSocketTransport } from './cloudflare/webSocketTransport';
1010
import { wrapClientApis } from './cloudflare/wrapClientApis';
1111
import { kBrowserCloseMessageId } from 'playwright-core/lib/server/chromium/crConnection';
12+
import { isUnderTest } from 'playwright-core/lib/utils';
1213

1314
export { fs };
1415

@@ -35,6 +36,10 @@ export async function launch(endpoint: BrowserWorker, options?: WorkersLaunchOpt
3536
const transport = new WebSocketTransport(webSocket, sessionId);
3637
// keeps the endpoint and options for client -> server async communication
3738
const browser = await createBrowser(transport) as Browser;
39+
40+
if (isUnderTest())
41+
(browser as any).__sessionIdForTest = sessionId;
42+
3843
const browserImpl = (browser as any)._toImpl() as CRBrowser;
3944
// ensure we actually close the browser
4045
const doClose = async () => {

packages/playwright-cloudflare/src/internal.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { WorkerMain } from 'playwright/lib/worker/workerMain';
88
import { ManualPromise } from 'playwright-core/lib/utils';
99

1010
export { debug } from 'playwright-core/lib/utilsBundle';
11+
export { isUnderTest, setUnderTest } from 'playwright-core/lib/utils';
1112

1213
// @ts-ignore
1314
export const _baseTest: TestType<{}, {}> = rootTestType.test;

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

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,30 +4,21 @@ import { launch, connect, sessions, BrowserWorker, Browser, history, acquire } f
44

55
setCurrentTestFile("browser-rendering/api.spec.ts");
66

7-
function diff<T>(a: T[], b: T[]): T[] {
8-
return a.filter(x => !b.includes(x));
9-
}
10-
117
async function launchAndGetSession(endpoint: BrowserWorker): Promise<[Browser, string]> {
12-
const before = await sessions(endpoint);
138
const browser = await launch(endpoint);
14-
const after = await sessions(endpoint);
15-
const newSessionIds = diff(after.map(a => a.sessionId), before.map(b => b.sessionId));
16-
expect(newSessionIds).toHaveLength(1);
17-
return [browser, newSessionIds[0]];
9+
const sessionId = (browser as any).__sessionIdForTest;
10+
expect(sessionId).toBeDefined();
11+
return [browser, sessionId];
1812
}
1913

2014
test(`should list sessions @smoke`, async ({ env }) => {
2115
const before = await sessions(env.BROWSER);
22-
const browser = await launch(env.BROWSER);
16+
const [browser, sessionId] = await launchAndGetSession(env.BROWSER);
2317
const after = await sessions(env.BROWSER);
2418

25-
expect(after).toHaveLength(before.length + 1);
26-
const sessionIdsDiff = diff(after.map(a => a.sessionId), before.map(b => b.sessionId));
27-
expect(sessionIdsDiff).toHaveLength(1);
28-
const [newSessionId] = sessionIdsDiff;
29-
expect(after.find(a => a.sessionId === newSessionId)?.connectionId).toBeDefined();
30-
19+
expect(before.map(a => a.sessionId)).not.toContain(sessionId);
20+
expect(after.map(a => a.sessionId)).toContain(sessionId);
21+
3122
browser.close();
3223
});
3324

packages/playwright-cloudflare/tests/src/testsServer.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { launch, connect, sessions, limits, acquire } from '@cloudflare/playwright';
1+
import { connect, sessions, limits, acquire } from '@cloudflare/playwright';
22

3-
import { testSuites, TestRunner } from '@cloudflare/playwright/internal';
3+
import { testSuites, TestRunner, setUnderTest } from '@cloudflare/playwright/internal';
44
import { setAssetsUrl, setCurrentBrowser, setCurrentEnv } from './workerFixtures';
55

66
import { skipTests } from './tests';
@@ -17,6 +17,9 @@ function send(ws: WebSocket, message: any) {
1717

1818
const skipTestsFullTitles = new Set(skipTests.map(t => t.join(' > ')));
1919

20+
// ensure we are in test mode
21+
setUnderTest(true);
22+
2023
export default {
2124

2225
async fetch(request: Request, env: Env): Promise<Response> {

0 commit comments

Comments
 (0)