diff --git a/tests/crx/crxTest.ts b/tests/crx/crxTest.ts index 6a8b223c4b..e0a961dc91 100644 --- a/tests/crx/crxTest.ts +++ b/tests/crx/crxTest.ts @@ -15,24 +15,25 @@ */ import type { Worker } from '@playwright/test'; -import { test as base, chromium } from '@playwright/test'; +import { test as base, chromium, mergeTests } from '@playwright/test'; import fs from 'fs'; import os from 'os'; import path from 'path'; -import type { CrxApplication, Page as CrxPage, BrowserContext as CrxBrowserContext } from 'playwright-crx'; +import type { CrxApplication, BrowserContext as CrxBrowserContext, Page as CrxPage } from 'playwright-crx'; +import type * as CrxTests from 'playwright-crx/test'; import { rimrafSync } from 'rimraf'; -type Server = { +type CrxServer = { EMPTY_PAGE: string; PREFIX: string; }; type CrxFixtures = { - expect: typeof expect; + expect: typeof CrxTests.expect; page: CrxPage; context: CrxBrowserContext; crxApp: CrxApplication; - server: Server; + server: CrxServer; _debug: Debug; } @@ -47,8 +48,8 @@ declare const serviceWorker: ServiceWorker; // from https://playwright.dev/docs/chrome-extensions#testing export const test = base.extend<{ + basePath: string, extensionPath: string; - basePath: string; createUserDataDir: () => string; extensionServiceWorker: Worker; extensionId: string; @@ -58,10 +59,10 @@ export const test = base.extend<{ _debug: Debug; }>({ - extensionPath: path.join(__dirname, '..', 'test-extension', 'dist'), - basePath: path.join(__dirname, '..', '..', 'playwright', 'tests', 'assets'), + extensionPath: path.join(__dirname, '..', 'test-extension', 'dist'), + createUserDataDir: async ({}, run) => { const dirs: string[] = []; await run(() => { @@ -72,7 +73,7 @@ export const test = base.extend<{ rimrafSync(dirs); }, - context: async ({ extensionPath, createUserDataDir, basePath, baseURL }, use) => { + context: async ({ extensionPath, createUserDataDir }, use) => { const context = await chromium.launchPersistentContext(createUserDataDir(), { headless: false, args: [ @@ -80,7 +81,6 @@ export const test = base.extend<{ `--load-extension=${extensionPath}`, ], }); - context.route(`${baseURL}/**/*`, (route, request) => route.fulfill({ path: path.join(basePath, new URL(request.url()).pathname) })); await use(context); await context.close(); }, @@ -108,8 +108,9 @@ export const test = base.extend<{ await use(extensionId); }, - runCrxTest: async ({ extensionServiceWorker }, use) => { - use((fn) => extensionServiceWorker.evaluate(`_runTest(${fn.toString()})`)); + runCrxTest: async ({ extensionServiceWorker, baseURL }, use) => { + const params = { server: { PREFIX: baseURL, EMPTY_PAGE: `${baseURL}/empty.html` } }; + use((fn) => extensionServiceWorker.evaluate(`_runTest(${fn.toString()}, ${JSON.stringify(params)})`)); }, mockPaths: async ({ context, baseURL }, run) => { @@ -164,4 +165,5 @@ export const test = base.extend<{ }); }, }); + export const expect = test.expect; diff --git a/tests/package.json b/tests/package.json index 5c974b99af..95e1b8d6b3 100644 --- a/tests/package.json +++ b/tests/package.json @@ -5,7 +5,7 @@ "author": "", "scripts": { "build": "tsc -p ./test-extension/tsconfig.json && vite build ./test-extension", - "serve": "http-server ../playwright/tests/assets -p 3000 -s" + "serve": "vite ./server --host 127.0.0.1 --port 3000" }, "devDependencies": { "@playwright/test": "^1.39.0" diff --git a/tests/playwright.config.ts b/tests/playwright.config.ts index 878ab534e5..972c0d5058 100644 --- a/tests/playwright.config.ts +++ b/tests/playwright.config.ts @@ -17,4 +17,8 @@ export default defineConfig({ use: { ...devices['Desktop Chrome'] }, }, ], + webServer: { + command: 'npm run serve', + url: 'http://127.0.0.1:3000', + } }); diff --git a/tests/server/index.html b/tests/server/index.html new file mode 100644 index 0000000000..0103ad1444 --- /dev/null +++ b/tests/server/index.html @@ -0,0 +1 @@ +