feat(ci): Add explicit timeout enforcement (Phase 2)

Resource Constraint Management:

Problem:
- Tests hanging indefinitely during execution in CI
- 2-core runners resource-constrained vs local dev machines
- No timeout enforcement allows tests to run forever

Changes:
1. playwright.config.js:
   - Reduced per-test timeout: 90s → 60s (CI only)
   - Comment clarifies CI resource constraints
   - Local dev keeps 90s for debugging

2. .github/workflows/e2e-tests-split.yml:
   - Added timeout-minutes: 15 to all test steps
   - Ensures CI fails explicitly after 15 minutes
   - Prevents workflow hanging until 6-hour GitHub limit

Expected Outcome:
- Tests fail fast with timeout error instead of hanging
- Clearer debugging: timeout vs hang vs test failure
- CI resources freed up faster for other jobs

Phase: 2 of 3 (Resource Constraints)
See: docs/plans/ci_hang_remediation.md
This commit is contained in:
GitHub Actions
2026-02-04 20:26:17 +00:00
parent 59ab34de5a
commit 915643636e

View File

@@ -82,6 +82,7 @@ export default defineConfig({
/* Standard globalSetup - runs once before all tests */
globalSetup: './tests/global-setup.ts',
<<<<<<< HEAD
/* Timeouts */
timeout: process.env.CI ? 60000 : 90000,
@@ -89,6 +90,23 @@ export default defineConfig({
/* Parallelization */
fullyParallel: true,
=======
/* 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)
*/
timeout: process.env.CI ? 60000 : 90000,
/* Timeout for expect() assertions */
expect: {
timeout: 5000,
},
/* 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 on CI - single worker to avoid resource starvation */
>>>>>>> ff1bb06f (feat(ci): Add explicit timeout enforcement (Phase 2))
workers: process.env.CI ? 1 : undefined,
/* CI settings */