mirror of
https://github.com/tompro/sattle.git
synced 2026-10-25 17:39:58 +00:00
test(e2e): warm the dev server before the suite runs
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import { chromium } from '@playwright/test';
|
||||
import { execSync } from 'child_process';
|
||||
|
||||
// Warms the freshly booted dev server before any test runs. `quasar dev`
|
||||
// answers HTTP the moment its port is up, but vite still transforms the
|
||||
// module graph on the first page load - a window in which the first test's
|
||||
// multi-step onboarding flow can race lazy compilation (observed as the
|
||||
// create flow never reaching /#/). One full load plus a reload completes
|
||||
// that work before the suite starts. Uses the same system-chromium
|
||||
// resolution as the main config (CI falls back to the bundled browser).
|
||||
const findSystemChromium = (): string | undefined => {
|
||||
try {
|
||||
return execSync('command -v chromium').toString().trim() || undefined;
|
||||
} catch {
|
||||
return undefined;
|
||||
}
|
||||
};
|
||||
|
||||
const globalSetup = async (): Promise<void> => {
|
||||
const executablePath = process.env.CHROMIUM_PATH || findSystemChromium();
|
||||
const browser = await chromium.launch({
|
||||
...(executablePath ? { executablePath } : {}),
|
||||
});
|
||||
try {
|
||||
const page = await (await browser.newContext({ baseURL: 'http://localhost:9333' })).newPage();
|
||||
await page.goto('/');
|
||||
await page
|
||||
.getByRole('button', { name: 'Get started' })
|
||||
.waitFor({ state: 'visible', timeout: 60_000 });
|
||||
await page.reload();
|
||||
await page
|
||||
.getByRole('button', { name: 'Get started' })
|
||||
.waitFor({ state: 'visible', timeout: 60_000 });
|
||||
} finally {
|
||||
await browser.close();
|
||||
}
|
||||
};
|
||||
|
||||
export default globalSetup;
|
||||
@@ -13,6 +13,7 @@ const findSystemChromium = (): string | undefined => {
|
||||
|
||||
export default defineConfig({
|
||||
testDir: './e2e',
|
||||
globalSetup: './e2e/global-setup.ts',
|
||||
fullyParallel: true,
|
||||
forbidOnly: !!process.env.CI,
|
||||
retries: process.env.CI ? 2 : 0,
|
||||
|
||||
Reference in New Issue
Block a user