54 lines
1.7 KiB
TypeScript
54 lines
1.7 KiB
TypeScript
import path from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
import { defineConfig, devices } from "@playwright/experimental-ct-vue";
|
|
|
|
const projectRoot = fileURLToPath(new URL(".", import.meta.url));
|
|
const artifactNamespace = (process.env.PLAYWRIGHT_ARTIFACT_NAMESPACE || "ct").trim();
|
|
const artifactRoot = path.join("output", "playwright", artifactNamespace);
|
|
const reporterMode = (process.env.PLAYWRIGHT_REPORTER_MODE || "").trim();
|
|
const reporter =
|
|
reporterMode === "line-html"
|
|
? [["line"], ["html", { open: "never", outputFolder: path.join(artifactRoot, "report") }]]
|
|
: [["list"], ["html", { open: "never", outputFolder: path.join(artifactRoot, "report") }]];
|
|
const configuredWorkers = Number(process.env.PLAYWRIGHT_WORKERS || 2);
|
|
const workers = Number.isFinite(configuredWorkers) && configuredWorkers > 0 ? configuredWorkers : 2;
|
|
|
|
export default defineConfig({
|
|
testDir: "./tests/ct",
|
|
timeout: 45_000,
|
|
fullyParallel: true,
|
|
forbidOnly: !!process.env.CI,
|
|
retries: process.env.CI ? 1 : 0,
|
|
workers,
|
|
reporter,
|
|
outputDir: path.join(artifactRoot, "test-results"),
|
|
use: {
|
|
trace: "retain-on-failure",
|
|
screenshot: "only-on-failure",
|
|
video: "retain-on-failure",
|
|
ctViteConfig: {
|
|
resolve: {
|
|
alias: {
|
|
"@": path.resolve(projectRoot, "src"),
|
|
},
|
|
preserveSymlinks: true,
|
|
dedupe: ["vue", "vue-router", "vue-i18n", "@vueuse/core", "@vueuse/head", "@unhead/vue"],
|
|
},
|
|
},
|
|
},
|
|
projects: [
|
|
{
|
|
name: "chromium-desktop",
|
|
use: {
|
|
...devices["Desktop Chrome"],
|
|
},
|
|
},
|
|
{
|
|
name: "chromium-mobile",
|
|
use: {
|
|
...devices["Pixel 5"],
|
|
},
|
|
},
|
|
],
|
|
});
|