diff --git a/examples/api/package.json b/examples/api/package.json index 54bb2149..15ce8261 100644 --- a/examples/api/package.json +++ b/examples/api/package.json @@ -11,6 +11,7 @@ "dev:worker": "wrangler dev --port 8770", "preview:worker": "pnpm build:worker && pnpm dev:worker", "e2e": "playwright test", + "e2e:dev": "playwright test -c playwright.dev.config.ts", "cf-typegen": "wrangler types --env-interface CloudflareEnv" }, "dependencies": { diff --git a/examples/api/playwright.dev.config.ts b/examples/api/playwright.dev.config.ts new file mode 100644 index 00000000..e3cc777b --- /dev/null +++ b/examples/api/playwright.dev.config.ts @@ -0,0 +1,80 @@ +import { defineConfig, devices } from "@playwright/test"; + +declare var process: { env: Record }; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// import dotenv from 'dotenv'; +// dotenv.config({ path: path.resolve(__dirname, '.env') }); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: "./e2e-tests", + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: "html", + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('/')`. */ + baseURL: "http://localhost:3333", + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: "on-first-retry", + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: "chromium", + use: { ...devices["Desktop Chrome"] }, + }, + + { + name: "firefox", + use: { ...devices["Desktop Firefox"] }, + }, + + { + name: "webkit", + use: { ...devices["Desktop Safari"] }, + }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ], + + /* Run your local dev server before starting the tests */ + webServer: { + command: "pnpm dev --port 3333", + url: "http://localhost:3333", + reuseExistingServer: !process.env.CI, + }, +}); diff --git a/package.json b/package.json index 7bae7dd2..fdffc8c9 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "prettier:fix": "prettier --write .", "postinstall": "pnpm --filter cloudflare build", "install-playwright": "playwright install --with-deps", - "e2e": "pnpm -r e2e" + "e2e": "pnpm -r e2e", + "e2e:dev": "pnpm -r e2e:dev" } }