1
0
mirror of https://github.com/bitwarden/browser synced 2026-01-28 23:33:27 +00:00
Files
browser/playwright.config.ts
Matt Gibson 06e6600f6a Use playId to track all creations within a worker.
This simplifies scenes and allows tracking of entities created during tests as well as those set up for tests.

However, we need to override the browser's `fetch` method to accomplish this. I have added a page extension that does this, but it is possible to create pages from browser contexts, contexts from browsers and even browsers from browser names. We simply need to expect imperfect coverage on this header.
2025-11-10 18:10:31 -08:00

88 lines
2.5 KiB
TypeScript

import { defineConfig, devices } from "@playwright/test";
export const webServerBaseUrl = process.env.WEB_SERVER_BASE_URL ?? "https://localhost:8080";
/**
* Read environment variables from file.
* https://github.com/motdotla/dotenv
*/
// import dotenv from 'dotenv';
// import path from 'path';
// dotenv.config({ path: path.resolve(__dirname, '.env') });
/**
* See https://playwright.dev/docs/test-configuration.
*/
export default defineConfig({
testDir: "./",
testMatch: ["**/*.play.spec.ts"],
/* 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", { open: "never" }]],
/* 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: webServerBaseUrl,
/* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */
trace: "on-first-retry",
launchOptions: {
slowMo: parseInt(process.env.PLAYWRIGHT_SLOW_MO || "0"),
},
locale: "en-US", // Sets a default locale for all tests
timezoneId: "Europe/Stockholm", // Slightly different from server time
},
/* 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: "cd apps/web && npm run build:bit:watch",
url: webServerBaseUrl,
reuseExistingServer: true, //!process.env.CI,
ignoreHTTPSErrors: true,
},
});