Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
6b23950
docs: Playwright UI test suite design spec
clates May 27, 2026
f28ee9a
feat: Playwright E2E implementation plan
clates May 27, 2026
1777168
feat: install Playwright and add test:e2e scripts
clates May 27, 2026
c365d91
feat: Playwright global-setup spawns uvicorn backend
clates May 27, 2026
a4341cb
fix: global-setup writes PID after backend ready, surfaces spawn errors
clates May 27, 2026
fa0c689
feat: Playwright global-teardown kills backend process
clates May 27, 2026
233b687
feat: Playwright config — chromium, webServer, global setup/teardown
clates May 27, 2026
38b08ab
feat: e2e_seed.py CLI helper for seeding Playwright test data
clates May 27, 2026
10c1b75
feat: Playwright seed fixture helpers (createStudent, createPacket, s…
clates May 27, 2026
6e4a4e6
fix: use execFileSync to prevent shell injection in seed fixtures
clates May 27, 2026
cde8d1d
feat: Playwright feedback.spec.ts — plans list, detail modal, feedbac…
clates May 27, 2026
08e508e
fix: feedback.spec.ts — parallel safety, scoped locators, serial mode…
clates May 27, 2026
5ec676f
feat: Playwright students.spec.ts — CRUD flows
clates May 27, 2026
10addb0
fix: students.spec.ts — re-run safety, fixtures import, semantic loca…
clates May 27, 2026
96bf8b6
feat: Playwright print.spec.ts — route smoke tests for worksheet prin…
clates May 27, 2026
87f8d06
fix: print.spec.ts — add catch for re-run safety on createStudent
clates May 27, 2026
2a9d1a1
chore: ignore Playwright report and test-results output
clates May 27, 2026
22a8553
fix: use port 3002 for Playwright Next.js dev server to avoid conflicts
clates May 27, 2026
152a28d
fix: resolve all 41 Playwright E2E test failures
clates May 28, 2026
4a8dc36
ci: add Playwright E2E job to CI workflow
clates May 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 55 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,30 +33,79 @@ jobs:
frontend-checks:
name: Frontend Checks
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: frontend/package-lock.json

- name: Install dependencies
working-directory: frontend
run: npm ci

- name: Run type check
working-directory: frontend
run: npm run type-check

- name: Run Prettier check
working-directory: frontend
run: npm run format:check

- name: Build
working-directory: frontend
run: npm run build

e2e-tests:
name: E2E Tests (Playwright)
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'

- name: Create venv and install Python dependencies
run: |
python -m venv venv
venv/bin/pip install -r requirements.txt

- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: frontend/package-lock.json

- name: Install npm dependencies
working-directory: frontend
run: npm ci

- name: Install Playwright browsers
working-directory: frontend
run: npx playwright install --with-deps chromium

- name: Run E2E tests
working-directory: frontend
run: npm run test:e2e
env:
CI: true
PLAYWRIGHT_DB_FILE: /tmp/playwright-test.db

- name: Upload Playwright report
uses: actions/upload-artifact@v4
if: failure()
with:
name: playwright-report
path: frontend/playwright-report/
retention-days: 7
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,8 @@ us_map/
test_integration_output/

# Personal scratch directory for one-off scripts and experiments
scratch/
scratch/

# Playwright
playwright-report/
test-results/
Loading
Loading