fix(ci): implement preflight setup to ensure storage state exists in CI environments

This commit is contained in:
GitHub Actions
2026-02-04 22:48:24 +00:00
parent 9187d19a60
commit 0262f7c79d
2 changed files with 20 additions and 5 deletions

View File

@@ -93,8 +93,6 @@ export default defineConfig({
testDir: './tests',
/* Ignore old/deprecated test directories */
testIgnore: ['**/frontend/**', '**/node_modules/**', '**/backend/**'],
/* Global setup - runs once before all tests to clean up orphaned data */
globalSetup: './tests/global-setup.ts',
/* Global timeout for each test - increased to 90s for feature flag propagation
* CI uses 60s to fail fast in resource-constrained environment (2-core runners)
*/
@@ -176,6 +174,17 @@ export default defineConfig({
testMatch: /auth\.setup\.ts/,
},
// 2. Preflight setup - runs AFTER auth.setup.ts to ensure storage state exists
// This replaces Playwright globalSetup so authenticated setup work can run
// deterministically in fresh CI workspaces.
{
name: 'preflight',
testMatch: /preflight\.setup\.ts/,
dependencies: ['setup'],
fullyParallel: false,
workers: 1,
},
// 2. Security Tests - Run WITH security enabled (SEQUENTIAL, headless Chromium)
// These tests enable security modules, verify enforcement, then teardown disables all.
{
@@ -213,7 +222,7 @@ export default defineConfig({
// Use stored authentication state
storageState: STORAGE_STATE,
},
dependencies: ['setup'], // Temporarily removed 'security-tests'
dependencies: ['preflight'], // Temporarily removed 'security-tests'
},
{
@@ -222,7 +231,7 @@ export default defineConfig({
...devices['Desktop Firefox'],
storageState: STORAGE_STATE,
},
dependencies: ['setup'], // Temporarily removed 'security-tests'
dependencies: ['preflight'], // Temporarily removed 'security-tests'
},
{
@@ -231,7 +240,7 @@ export default defineConfig({
...devices['Desktop Safari'],
storageState: STORAGE_STATE,
},
dependencies: ['setup'], // Temporarily removed 'security-tests'
dependencies: ['preflight'], // Temporarily removed 'security-tests'
},
/* Test against mobile viewports. */

6
tests/preflight.setup.ts Normal file
View File

@@ -0,0 +1,6 @@
import { test } from './fixtures/test';
import globalSetup from './global-setup';
test('preflight', async () => {
await globalSetup();
});