/* Copyright 2024 New Vector Ltd. Copyright 2023 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ import { defineConfig, devices } from "@playwright/test"; const baseURL = process.env["BASE_URL"] ?? "http://localhost:8080"; export default defineConfig({ projects: [ { name: "Chrome", use: { ...devices["Desktop Chrome"], channel: "chromium", permissions: ["clipboard-write", "clipboard-read", "microphone"], launchOptions: { args: ["--use-fake-ui-for-media-stream", "--use-fake-device-for-media-stream", "--mute-audio"], }, }, }, { name: "Firefox", use: { ...devices["Desktop Firefox"], launchOptions: { firefoxUserPrefs: { "permissions.default.microphone": 1, }, }, // This is needed to work around an issue between Playwright routes, Firefox, and Service workers // https://github.com/microsoft/playwright/issues/33561#issuecomment-2471642120 serviceWorkers: "block", }, ignoreSnapshots: true, }, { name: "WebKit", use: { ...devices["Desktop Safari"], // Seemingly WebKit has the same issue as Firefox in Playwright routes not working // https://playwright.dev/docs/network#missing-network-events-and-service-workers serviceWorkers: "block", }, ignoreSnapshots: true, }, ], use: { viewport: { width: 1280, height: 720 }, ignoreHTTPSErrors: true, video: "retain-on-failure", baseURL, trace: "on-first-retry", }, webServer: { command: process.env.CI ? "npx serve -p 8080 -L ./webapp" : "yarn start", url: `${baseURL}/config.json`, reuseExistingServer: true, timeout: (process.env.CI ? 30 : 120) * 1000, }, testDir: "playwright/e2e", outputDir: "playwright/test-results", workers: 1, retries: process.env.CI ? 2 : 0, reporter: process.env.CI ? [["blob"], ["github"]] : [["html", { outputFolder: "playwright/html-report" }]], snapshotDir: "playwright/snapshots", snapshotPathTemplate: "{snapshotDir}/{testFilePath}/{arg}-{platform}{ext}", forbidOnly: !!process.env.CI, });