@@ -94,37 +94,14 @@ jobs:
9494 echo "Waiting for frontend to be ready..."
9595 timeout 60 bash -c 'until curl -sf http://localhost:5173 > /dev/null; do sleep 2; done'
9696
97- - name : Validate BrowserStack Credentials
98- run : |
99- if [ -z "${{ secrets.BROWSERSTACK_USERNAME }}" ] || [ -z "${{ secrets.BROWSERSTACK_ACCESS_KEY }}" ]; then
100- echo "⚠️ WARNING: BrowserStack credentials not configured"
101- echo " E2E tests will be skipped"
102- echo " To enable E2E tests in CI:"
103- echo " 1. Go to BrowserStack account settings to get credentials"
104- echo " 2. Go to: GitHub repo → Settings → Secrets and variables → Actions"
105- echo " 3. Create new secrets: BROWSERSTACK_USERNAME, BROWSERSTACK_ACCESS_KEY"
106- export SKIP_E2E=1
107- else
108- echo "✅ BrowserStack credentials available - E2E tests enabled"
109- export SKIP_E2E=0
110- fi
111- echo "SKIP_E2E=$SKIP_E2E" >> $GITHUB_ENV
112-
113- - name : Run Complete QA Suite (with E2E)
114- if : env.SKIP_E2E == '0'
97+ - name : Run Complete QA Suite
11598 run : cd .cursor && task qa:all
116-
117- - name : Run QA Suite without E2E
118- if : env.SKIP_E2E == '1'
119- run : cd .cursor && task qa:all:no-e2e
12099
121100# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
122101# Implementation Notes:
123102# ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
124103#
125- # SIMPLICITY: Single job runs conditional QA suite based on credentials
126- # - With BrowserStack: `task qa:all` (includes E2E tests)
127- # - Without BrowserStack: `task qa:all:no-e2e` (skips E2E tests)
104+ # SIMPLICITY: Single job runs `task qa:all` - same as pre-push hook
128105# MIRRORS LOCAL: Exact same command developers run locally
129106# DRY: No duplication - all logic in .cursor/commands/qa/Taskfile.yml
130107#
@@ -136,9 +113,10 @@ jobs:
136113# 5. qa:unit - Unit tests (backend only - encore test)
137114# 6. qa:e2e - E2E tests (frontend Playwright) - REQUIRES BrowserStack
138115#
139- # What `task qa:all:no-e2e` runs (same as above, but WITHOUT E2E):
140- # - Skips E2E tests when BrowserStack credentials unavailable
141- # - Useful for early CI setup or pull requests from forks
116+ # CRITICAL: ALL tests run in CI - NO SKIPPING
117+ # - Tests must pass before merge
118+ # - BrowserStack credentials REQUIRED for E2E tests
119+ # - If missing, CI will FAIL (intentional - no incomplete testing)
142120#
143121# Note: Auto-fix (qa:fix) is intentionally excluded from qa:all
144122# - Git hooks should validate, not modify uncommitted code
@@ -157,30 +135,32 @@ jobs:
157135# - ENCORE_AUTH_KEY: GitHub Secret (app-specific auth key) for Encore Cloud authentication
158136# - BROWSERSTACK_USERNAME & BROWSERSTACK_ACCESS_KEY: Optional GitHub Secrets for E2E tests
159137#
160- # GitHub Secrets Setup:
138+ # GitHub Secrets Setup (REQUIRED for CI to pass) :
161139#
162- # REQUIRED:
163- # 1. Go to: https://app.encore.cloud/screengraph-ovzi → App Settings → Auth Keys
164- # 2. Create new auth key (NOT `encore auth token` - that's different!)
165- # 3. Go to: GitHub repo → Settings → Secrets and variables → Actions
166- # 4. Create new secret: ENCORE_AUTH_KEY
167- # 5. Paste the auth key from step 2
140+ # 1. ENCORE_AUTH_KEY (for Encore Cloud auth)
141+ # - Go to: https://app.encore.cloud/screengraph-ovzi → App Settings → Auth Keys
142+ # - Create new auth key (NOT `encore auth token` - that's different!)
143+ # - Add as GitHub Secret: ENCORE_AUTH_KEY
168144#
169- # OPTIONAL (for E2E tests):
170- # 1. Get BrowserStack credentials (account settings or ask team)
171- # 2. Go to: GitHub repo → Settings → Secrets and variables → Actions
172- # 3. Create new secrets: BROWSERSTACK_USERNAME, BROWSERSTACK_ACCESS_KEY
173- # 4. Without these, E2E tests will be skipped (not failed)
145+ # 2. BROWSERSTACK_USERNAME & BROWSERSTACK_ACCESS_KEY (for E2E tests)
146+ # - Get credentials from BrowserStack account settings (ask team if needed)
147+ # - Add as GitHub Secrets: BROWSERSTACK_USERNAME, BROWSERSTACK_ACCESS_KEY
148+ # - WITHOUT these, E2E tests WILL FAIL and block CI/CD
174149#
175- # Testing before activation:
176- # 1. Create feature branch
177- # 2. Push to trigger workflow
178- # 3. Verify appropriate QA suite passes (all or all:no-e2e)
179- # 4. Merge to main after review
150+ # Setup steps:
151+ # 1. Go to: GitHub repo → Settings → Secrets and variables → Actions
152+ # 2. Create 3 new secrets with values from above
153+ # 3. Push to trigger CI - all tests must pass for merge
180154#
181- # Validation checklist when modifying :
155+ # Testing workflow :
182156# 1. Create feature branch
183157# 2. Push to trigger workflow
184- # 3. Confirm appropriate QA suite passes in GitHub Actions
185- # 4. Merge to main after review
158+ # 3. All tests MUST pass (no skipping allowed)
159+ # 4. Fix failures and re-push
160+ # 5. Once green, merge to main after review
161+ #
162+ # Validation checklist (MANDATORY):
163+ # 1. All 6 QA suite components pass (rules, smoke, lint, typecheck, unit, e2e)
164+ # 2. No test skipping allowed - CI enforces full validation
165+ # 3. E2E tests require BrowserStack credentials (blocking if missing - intentional)
186166
0 commit comments