61 lines
2.4 KiB
TypeScript
61 lines
2.4 KiB
TypeScript
import { defineConfig, devices, chromium } from "@playwright/test";
|
|
import os from "node:os";
|
|
import path from "node:path";
|
|
|
|
const apiUrl = "http://localhost:5302";
|
|
const appUrl = "http://localhost:3300";
|
|
const dataRoot = path.join(os.tmpdir(), `jobtracker-e2e-${process.pid}-${Date.now().toString(36)}`);
|
|
const reuseServers = process.env.PLAYWRIGHT_REUSE_SERVERS === "true";
|
|
const useStaticExport = process.env.PLAYWRIGHT_STATIC_EXPORT === "true";
|
|
const usePrebuiltExport = process.env.PLAYWRIGHT_PREBUILT_EXPORT === "true";
|
|
const quote = (value: string) => `"${value.replaceAll('"', '\\"')}"`;
|
|
const nodeCommand = quote(process.execPath);
|
|
const dotnetCommand = quote(process.env.DOTNET_HOST_PATH || "dotnet");
|
|
const nextCommand = quote(path.resolve("node_modules/next/dist/bin/next"));
|
|
const exportServerCommand = quote(path.resolve("scripts/serve-export.mjs"));
|
|
|
|
export default defineConfig({
|
|
testDir: "./e2e",
|
|
fullyParallel: false,
|
|
workers: 1,
|
|
retries: process.env.CI ? 1 : 0,
|
|
reporter: process.env.CI ? "github" : "list",
|
|
use: {
|
|
baseURL: appUrl,
|
|
trace: "retain-on-failure",
|
|
screenshot: "only-on-failure",
|
|
},
|
|
projects: [{ name: "chromium", use: { ...devices["Desktop Chrome"] } }],
|
|
webServer: [
|
|
{
|
|
command: `${dotnetCommand} run --no-build --configuration Release --project ../JobTrackerApi/JobTrackerApi.csproj --urls http://localhost:5302`,
|
|
url: `${apiUrl}/health`,
|
|
timeout: 120_000,
|
|
reuseExistingServer: reuseServers,
|
|
env: {
|
|
ASPNETCORE_ENVIRONMENT: "Development",
|
|
Auth__Require: "true",
|
|
Auth__JwtKey: "e2e-only-key-at-least-thirty-two-characters-long",
|
|
Auth__AdminEmail: "e2e@example.test",
|
|
Auth__AdminPassword: "E2ePassword123!",
|
|
Auth__AllowRegistration: "false",
|
|
App__Version: "e2e-verification",
|
|
App__CommitSha: "e2e1234",
|
|
Cors__Origins__0: appUrl,
|
|
Data__Root: dataRoot,
|
|
HttpsRedirection__Enabled: "false",
|
|
CV_PDF_BROWSER_PATH: chromium.executablePath(),
|
|
},
|
|
},
|
|
{
|
|
command: useStaticExport
|
|
? `${usePrebuiltExport ? "" : `${nodeCommand} ${nextCommand} build && `}${nodeCommand} ${exportServerCommand}`
|
|
: `${nodeCommand} ${nextCommand} dev --webpack --hostname localhost --port 3300`,
|
|
url: appUrl,
|
|
timeout: 120_000,
|
|
reuseExistingServer: reuseServers,
|
|
env: { NEXT_PUBLIC_API_BASE_URL: `${apiUrl}/api` },
|
|
},
|
|
],
|
|
});
|