mirror of
https://github.com/penpot/penpot.git
synced 2026-11-13 05:22:03 +00:00
* 🔧 Run the Playwright tests with a dark color scheme Since #12480 a profile without a theme follows the system one, and headless Chrome reports a light scheme, so the e2e tests ran with the light UI. Set colorScheme to dark in the shared Playwright options so the tests use the default dark UI again. Tests that need another scheme still set it with page.emulateMedia. AI-assisted-by: claude-opus-5-5 * 🔧 Drop the dark color scheme overrides now set for every test The shared Playwright options now set the dark color scheme, so the ds project override and the emulateMedia call in the selection size badge test do nothing. AI-assisted-by: claude-opus-5-5
118 lines
3.5 KiB
JavaScript
118 lines
3.5 KiB
JavaScript
import { defineConfig, devices } from "@playwright/test";
|
|
import { platform } from "os";
|
|
|
|
/**
|
|
* Read environment variables from file.
|
|
* https://github.com/motdotla/dotenv
|
|
*/
|
|
// require('dotenv').config();
|
|
|
|
const userAgent = platform === 'darwin' ?
|
|
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" :
|
|
undefined;
|
|
|
|
// Default timeout of the retrying expects (toBeVisible and friends). CI
|
|
// runners are slower and the first load of a page fetches its module, so
|
|
// they get more time. A project that sets its own `expect` replaces the
|
|
// top-level one instead of merging with it, so every such project has to
|
|
// repeat this timeout or it falls back to Playwright's 5 seconds.
|
|
const expectTimeout = process.env.CI ? 40000 : 5000;
|
|
|
|
/**
|
|
* @see https://playwright.dev/docs/test-configuration
|
|
*/
|
|
export default defineConfig({
|
|
testDir: "./playwright",
|
|
outputDir: './test-results',
|
|
/* 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 by default; can be overriden with --workers */
|
|
workers: 1,
|
|
/* Timeout for expects (longer in CI) */
|
|
|
|
timeout: 80000,
|
|
expect: {
|
|
timeout: expectTimeout,
|
|
},
|
|
|
|
/* Reporter to use. See https://playwright.dev/docs/test-reporters */
|
|
reporter: "list",
|
|
/* 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:3000",
|
|
|
|
locale: "en-US",
|
|
|
|
/* Profiles without a theme follow the system one; run the UI in dark */
|
|
colorScheme: "dark",
|
|
|
|
permissions: ["clipboard-write", "clipboard-read"],
|
|
},
|
|
|
|
/* Configure projects for major browsers */
|
|
projects: [
|
|
{
|
|
name: "default",
|
|
testDir: "./playwright/ui/specs",
|
|
use: {
|
|
...devices["Desktop Chrome"],
|
|
viewport: { width: 1920, height: 1080 }, // Add custom viewport size
|
|
video: 'retain-on-failure',
|
|
trace: 'retain-on-failure',
|
|
userAgent,
|
|
},
|
|
snapshotPathTemplate: "{testDir}/{testFilePath}-snapshots/{arg}.png",
|
|
expect: {
|
|
timeout: expectTimeout,
|
|
toHaveScreenshot: {
|
|
maxDiffPixelRatio: 0.001,
|
|
},
|
|
},
|
|
},
|
|
{
|
|
name: "ds",
|
|
use: { ...devices["Desktop Chrome"] },
|
|
testDir: "./playwright/ui/visual-specs",
|
|
expect: {
|
|
timeout: expectTimeout,
|
|
toHaveScreenshot: { maxDiffPixelRatio: 0.005 },
|
|
},
|
|
},
|
|
{
|
|
name: "render-wasm",
|
|
use: {
|
|
...devices["Desktop Chrome"],
|
|
viewport: { width: 1920, height: 1080 }, // Add custom viewport size
|
|
deviceScaleFactor: 2,
|
|
launchOptions: {
|
|
args: [
|
|
'--enable-gpu',
|
|
],
|
|
}
|
|
},
|
|
testDir: "./playwright/ui/render-wasm-specs",
|
|
snapshotPathTemplate: "{testDir}/{testFilePath}-snapshots/{arg}.png",
|
|
timeout: 2 * 60 * 1000,
|
|
expect: {
|
|
timeout: process.env.CI ? 20000 : 10000,
|
|
toHaveScreenshot: {
|
|
maxDiffPixelRatio: 0.001,
|
|
},
|
|
},
|
|
},
|
|
],
|
|
|
|
/* Run your local dev server before starting the tests */
|
|
webServer: {
|
|
timeout: 2 * 60 * 1000,
|
|
command: "node ./scripts/e2e-server.js",
|
|
url: "http://localhost:3000",
|
|
reuseExistingServer: !process.env.CI,
|
|
},
|
|
});
|