/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ import {defineConfig, devices} from '@playwright/test'; import path from 'path'; // Use process.env.PORT by default and fallback to port 3000 const PORT = process.env.PORT || 3000; // Set webServer.url and use.baseURL with the location of the WebServer respecting the correct set port const baseURL = `http://localhost:${PORT}`; // Reference: https://playwright.dev/docs/test-configuration export default defineConfig({ // Timeout per test timeout: 30 * 1000, // Run all tests in parallel. fullyParallel: true, // Test directory testDir: path.join(__dirname, '__tests__/e2e'), // If a test fails, retry it additional 2 times retries: 3, // Artifacts folder where screenshots, videos, and traces are stored. outputDir: 'test-results/', // Note: we only use text snapshots, so its safe to omit the host environment name snapshotPathTemplate: '{testDir}/__snapshots__/{testFilePath}/{arg}{ext}', // Run your local dev server before starting the tests: // https://playwright.dev/docs/test-advanced#launching-a-development-web-server-during-the-tests webServer: { command: 'yarn dev', url: baseURL, timeout: 300 * 1000, reuseExistingServer: !process.env.CI, }, // 'github' for GitHub Actions CI to generate annotations, plus a concise 'dot' // default 'list' when running locally reporter: process.env.CI ? 'github' : 'list', use: { // Use baseURL so to make navigations relative. // More information: https://playwright.dev/docs/api/class-testoptions#test-options-base-url baseURL, // Retry a test if its failing with enabled tracing. This allows you to analyze the DOM, console logs, network traffic etc. // More information: https://playwright.dev/docs/trace-viewer trace: 'retry-with-trace', // All available context options: https://playwright.dev/docs/api/class-browser#browser-new-context // contextOptions: { // ignoreHTTPSErrors: true, // }, viewport: {width: 1920, height: 1080}, }, projects: [ { name: 'chromium', use: { ...devices['Desktop Chrome'], viewport: {width: 1920, height: 1080}, }, }, // { // name: 'Desktop Firefox', // use: { // ...devices['Desktop Firefox'], // }, // }, // { // name: 'Desktop Safari', // use: { // ...devices['Desktop Safari'], // }, // }, // Test against mobile viewports. // { // name: "Mobile Chrome", // use: { // ...devices["Pixel 5"], // }, // }, // { // name: "Mobile Safari", // use: devices["iPhone 12"], // }, ], });