diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1d23389..a2d395e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,4 +33,5 @@ jobs: - run: npm ci --no-audit --no-fund - run: npm run lint - run: npm run typecheck - - run: npm test + # Limited parallelism: several test files start headless Chrome or MCP servers. + - run: npm run test:ci diff --git a/package.json b/package.json index a6b08ba..433be53 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "mcp:elos": "node --experimental-strip-types --no-warnings --import ./tests/register-loader.mjs mcp/elos-server.ts", "typecheck": "tsc --noEmit", "test": "node --test --experimental-strip-types --import ./tests/register-loader.mjs \"tests/unit/**/*.test.ts\" \"tests/integration/**/*.test.ts\" \"tests/integration/**/*.test.cjs\"", + "test:ci": "node --test --test-concurrency=2 --experimental-strip-types --import ./tests/register-loader.mjs \"tests/unit/**/*.test.ts\" \"tests/integration/**/*.test.ts\" \"tests/integration/**/*.test.cjs\"", "validate:v1:local": "node scripts/validate-v1-local.mjs", "db:push": "prisma db push", "db:setup:local": "node scripts/setup-local-db.mjs", diff --git a/tests/integration/learning-history/browser-driver.mjs b/tests/integration/learning-history/browser-driver.mjs index cd0d8d8..13c8512 100644 --- a/tests/integration/learning-history/browser-driver.mjs +++ b/tests/integration/learning-history/browser-driver.mjs @@ -31,7 +31,7 @@ class DevTools { send(method, params = {}, sessionId = undefined) { const id = ++this.sequence; return new Promise((resolve, reject) => { - const timeout = setTimeout(() => { this.pending.delete(id); reject(new Error("CDP timeout: " + method)); }, 60000); + const timeout = setTimeout(() => { this.pending.delete(id); reject(new Error("CDP timeout: " + method)); }, 180000); // large 10k-event round-trips are slow on small CI runners this.pending.set(id, { resolve, reject, timeout }); this.socket.send(JSON.stringify({ id, method, params, ...(sessionId ? { sessionId } : {}) })); });