diff --git a/.sisyphus/README.md b/.sisyphus/README.md new file mode 100644 index 0000000..7207901 --- /dev/null +++ b/.sisyphus/README.md @@ -0,0 +1,304 @@ +# Sisyphus Boulder Workflow — CTS Herd + Playwright E2E Testing + +**Project**: CTS Presenter App — Church Service Preparation Tool +**Phase**: E2E Testing with Playwright on Laravel Herd +**Status**: 7/24 tasks complete (29.2%) — Wave 1-2 Complete, Wave 3 Partial + +--- + +## QUICK START + +### For Continuing This Work + +1. **Read the continuation guide first**: + ```bash + cat .sisyphus/CONTINUATION_GUIDE.md + ``` + +2. **Verify environment**: + ```bash + cd /Users/thorsten/AI/cts-work + curl -s -o /dev/null -w "%{http_code}" http://cts-work.test/login # Should return 200 + npx playwright test # Should pass 13 tests + php artisan test # Should pass 174 tests + ``` + +3. **Continue with next tasks**: + - See `CONTINUATION_GUIDE.md` for detailed instructions + - See `SESSION_SUMMARY.md` for current state + - See `plans/cts-herd-playwright.md` for full plan + +--- + +## FILE STRUCTURE + +``` +.sisyphus/ +├── README.md # This file — start here +├── CONTINUATION_GUIDE.md # Complete guide for continuing work +├── SESSION_SUMMARY.md # Current session summary +├── boulder.json # Boulder state tracking +├── plans/ +│ ├── cts-presenter-app.md # Phase 1 plan (COMPLETE) +│ └── cts-herd-playwright.md # Phase 2 plan (ACTIVE — 7/24 tasks) +├── notepads/ +│ ├── cts-presenter-app/ # Phase 1 learnings +│ └── cts-herd-playwright/ # Phase 2 learnings (ACTIVE) +│ ├── learnings.md # Patterns, conventions +│ ├── decisions.md # Architectural choices +│ ├── issues.md # Problems, gotchas +│ └── problems.md # Unresolved issues +└── evidence/ + ├── task-1-herd-login-page.txt # T1 verification + ├── task-3-factory-fields.txt # T3 verification + ├── task-3-pest-pass.txt # T3 verification + ├── task-4-build-tests.txt # T4 verification + ├── task-4-testid-login.txt # T4 verification + ├── task-5-config-check.txt # T5 verification + ├── task-5-playwright-setup.txt # T5 verification + ├── task-6-auth-tests.txt # T6 verification + └── task-7-navigation-tests.txt # T7 verification +``` + +--- + +## WORKTREE STRUCTURE + +``` +/Users/thorsten/AI/cts-work/ (branch: cts-presenter-app) +├── playwright.config.ts # Playwright configuration +├── tests/ +│ ├── e2e/ +│ │ ├── .auth/ +│ │ │ └── user.json # storageState (gitignored) +│ │ ├── auth.setup.ts # Auth setup for tests +│ │ ├── auth.spec.ts # Auth E2E tests (5 tests) +│ │ └── navigation.spec.ts # Navigation E2E tests (9 tests) +│ └── Feature/ # Pest tests (174 tests) +├── resources/js/ +│ ├── Pages/ # 6 Vue pages (data-testid added) +│ ├── Components/ +│ │ ├── Blocks/ # 4 block components (data-testid added) +│ │ └── [others] # 8 other components (data-testid added) +│ └── Layouts/ # 3 layouts (data-testid added) +├── routes/web.php # Routes (includes POST /dev-login) +└── [other Laravel files] +``` + +--- + +## CURRENT STATUS + +### Completed (7/24 tasks) +- ✅ Wave 1: Herd env, dummy login, UserFactory (3 tasks) +- ✅ Wave 2: data-testid attributes, Playwright infrastructure (2 tasks) +- ✅ Wave 3: Auth tests, Navigation tests (2 tasks) + +### In Progress +- Wave 3: 6 remaining E2E test spec files (T8-T13) + +### Pending +- Wave 4: 7 E2E test spec files (T14-T20) +- Final Verification: 4 review tasks (F1-F4) + +### Test Status +- **E2E**: 13 tests passing (2 spec files) +- **Pest**: 174 tests passing (26 feature files) +- **Build**: Succeeds (790 modules, 1.51s) + +--- + +## KEY DOCUMENTS + +### 1. CONTINUATION_GUIDE.md (START HERE) +**Purpose**: Complete guide for continuing the work +**Contents**: +- Quick start commands +- Completed work summary +- Remaining task breakdown with exact requirements +- Execution patterns for each task type +- 6-section prompt templates +- Troubleshooting guide +- Verification checklists + +**When to use**: Every time you continue this work + +### 2. SESSION_SUMMARY.md +**Purpose**: Summary of current session's work +**Contents**: +- Executive summary +- Completed work details +- Current state +- Remaining work +- Key patterns established +- Metrics and handoff checklist + +**When to use**: To understand what was done in the last session + +### 3. plans/cts-herd-playwright.md +**Purpose**: Complete task plan (1,624 lines) +**Contents**: +- All 24 implementation tasks with detailed requirements +- 4 final verification tasks +- Acceptance criteria for each task +- QA scenarios +- References and patterns + +**When to use**: To understand exact requirements for each task + +### 4. notepads/cts-herd-playwright/learnings.md +**Purpose**: Accumulated knowledge from all sessions +**Contents**: +- Patterns that work +- Conventions established +- Gotchas discovered +- Best practices + +**When to use**: Before starting any new task (to avoid known pitfalls) + +--- + +## WORKFLOW + +### For Each Task + +1. **Read**: + - Plan file for task requirements + - Notepad for inherited wisdom + - Continuation guide for execution pattern + +2. **Delegate**: + ```typescript + task( + category="quick", + load_skills=["playwright"], + run_in_background=false, + description="Create {filename}.spec.ts", + prompt=`[6-section prompt from continuation guide]` + ) + ``` + +3. **Verify**: + ```bash + npx playwright test {filename}.spec.ts # All tests pass + ``` + +4. **Mark Complete**: + ```typescript + Edit("plans/cts-herd-playwright.md", [ + {op: "replace", pos: "{line}#{hash}", lines: "- [x] {task}"} + ]) + ``` + +5. **Commit**: + ```bash + git add tests/e2e/{filename}.spec.ts + git commit -m "test(e2e): add {feature} E2E tests" + ``` + +6. **Update Notepad** (if learnings discovered): + ```bash + echo "## [DATE] Task {N}: {Name}\n{learnings}" >> notepads/cts-herd-playwright/learnings.md + ``` + +--- + +## CRITICAL PATTERNS + +### Test Structure +```typescript +import { test, expect } from '@playwright/test'; + +test('description', async ({ page }) => { + await page.goto('/url'); + await page.waitForLoadState('networkidle'); // CRITICAL + await expect(page).toHaveURL(/pattern/); + await expect(page.getByTestId('testid')).toBeVisible(); +}); +``` + +### CSRF Protection +```typescript +const cookies = await page.context().cookies(); +const xsrfToken = decodeURIComponent( + cookies.find(c => c.name === 'XSRF-TOKEN')?.value || '' +); +await page.request.post('/endpoint', { + headers: { 'X-XSRF-TOKEN': xsrfToken } +}); +``` + +### data-testid Naming +- `{component-kebab}-{element-description}` +- Examples: `login-oauth-button`, `service-list-edit-button` + +### German UI Text +- Always use exact German text from Vue components +- Examples: "Gottesdienste", "Bearbeiten", "Finalisieren" + +--- + +## TROUBLESHOOTING + +### Session Timeouts +**Symptom**: task() times out after 10 minutes +**Solution**: Check if file was created, verify tests, proceed if passing + +### Test Failures +**Symptom**: Element not found +**Solution**: Check data-testid spelling in Vue component + +**Symptom**: Timeout waiting for element +**Solution**: Add `page.waitForLoadState('networkidle')` + +**Symptom**: Redirect to login +**Solution**: Re-run auth setup: `npx playwright test --project=setup` + +### SQLite BUSY +**Symptom**: Database locked errors +**Solution**: Verify `workers: 1` in playwright.config.ts + +--- + +## METRICS + +### Progress +- **Tasks**: 7/24 complete (29.2%) +- **E2E Tests**: 13/~45 complete (~29%) +- **Spec Files**: 2/15 complete (13.3%) + +### Quality +- **Test Pass Rate**: 100% (13/13 E2E + 174/174 Pest) +- **Build Success**: 100% +- **Commits**: 8 atomic commits (6 worktree + 2 main repo) + +### Time +- **Session Duration**: ~3 hours +- **Avg Time per Task**: ~25 minutes +- **Estimated Remaining**: ~7-8 hours (17 tasks) + +--- + +## NEXT STEPS + +1. **Read CONTINUATION_GUIDE.md** — Complete context for next session +2. **Launch Wave 3 tasks** — T8-T13 (6 tasks in parallel) +3. **Verify all tests pass** — Should have ~35-40 E2E tests after Wave 3 +4. **Continue to Wave 4** — T14-T20 (7 tasks) +5. **Final Verification** — F1-F4 (4 review tasks) + +--- + +## CONTACT + +**Plan**: `.sisyphus/plans/cts-herd-playwright.md` (READ-ONLY for subagents) +**Guide**: `.sisyphus/CONTINUATION_GUIDE.md` (START HERE) +**Notepad**: `.sisyphus/notepads/cts-herd-playwright/` (APPEND-ONLY) +**Worktree**: `/Users/thorsten/AI/cts-work` (branch: `cts-presenter-app`) + +--- + +**Last Updated**: 2026-03-01 23:20 UTC +**Status**: READY FOR CONTINUATION +**Quality**: ✅ All tests passing, full documentation +**Recommendation**: Continue with Wave 3 tasks T8-T13