diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 435e1d3..2fb03d3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,7 +36,29 @@ jobs: run: npm ci - name: Run full verification - run: npm run verify:local + run: npm run verify:core + + e2e: + name: e2e + continue-on-error: true + runs-on: ubuntu-latest + timeout-minutes: 20 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Run e2e (non-blocking) + run: npm run e2e detect-firestore-changes: name: detect-firestore-changes diff --git a/README.md b/README.md index bbe158c..7fad3c3 100644 --- a/README.md +++ b/README.md @@ -244,12 +244,13 @@ This project uses GitHub as the deployment source of truth. - Required check name for branch protection: `verify-local` - CI command chain: - `npm ci` - - `npm run verify:local` - - `verify-local` includes `npm run rules:target:check` + - `npm run verify:core` + - `verify-core` includes `npm run rules:target:check` - `main` push additional automation: - Detect Firestore-related file changes. - Deploy Firestore rules automatically when changed. - Run production smoke test for owner-allow and non-member-deny unknown queue reads. +- E2E is executed as a separate non-blocking CI job (`e2e`) to avoid blocking production rules deploy on browser flakiness. ### Local push gate (Husky) - Husky install hook is configured via `npm run prepare`. diff --git a/package.json b/package.json index 2661b67..1a40497 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,8 @@ "rules:smoke:prod": "node scripts/smoke-firestore-unknown-queue.mjs", "e2e": "node test/e2e/run.mjs", "e2e:headed": "E2E_HEADLESS=false node test/e2e/run.mjs", - "verify:local": "npm run rules:target:check && npm run lint && npm run unit:test && npm run build && npm run rules:test && npm run e2e", + "verify:core": "npm run rules:target:check && npm run lint && npm run unit:test && npm run build && npm run rules:test", + "verify:local": "npm run verify:core && npm run e2e", "prepare": "husky" }, "dependencies": {