Repository navigation
fix(ci): correct wiki repo URL, add Home.md, SQLite history, remove Quick Presets - #119
Conversation
… above history - Replace JSON-file run storage with SQLite (better-sqlite3): archiveRun() now writes id/run_at/spec/counts/run_log/raw_json into a single runs.db; GET /history reads via prepared SELECT; GET /results/:id reads raw_json + run_log from DB; DELETE /history executes DELETE FROM runs — no more RUNS_DIR file scatter - Remove Quick Presets entirely: delete Preset interface, SV_CONFIG, SV_ALL_SPECS, PRESETS array, applyPreset(), noPresets prop, both JSX blocks (SettingsView card + always-visible presets bar), and unused Zap icon import - Move Run Output terminal above Run History (RunsPanel) so users see the latest stdout immediately after a run without scrolling past the history table Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tent - Quick Start: add playwright.config.ts essentials block (multi-project, reporters, trace/screenshot/video defaults) - Locator Strategies: add getByTitle(), expand code examples with chaining, correct all descriptions - Core Assertions: expand from 11 to 20 assertions across 4 card groups (toBeAttached, toBeDisabled, toBeEditable, toHaveValues, toHaveClass, toHaveCSS, toHaveCount, toHaveAccessibilityTree); add negation + soft-assertion examples - Common Patterns: add Parallel & Sharded runs section; expand POM with typed Locator fields; update Fixtures with DashboardPage; add network modify-response pattern - Authentication (new section): global-setup storageState, multi-role auth, API-based JWT auth, config project setup - Visual & Accessibility Testing (new section): screenshot workflow steps, mask/maxDiffPixelRatio options, axe-core WCAG 2.1 AA integration, accessibility checklist (keyboard, contrast, alt text, RTL, ARIA) - CI / CD Integration (new section): GitHub Actions workflow, sharding across parallel jobs, environment variables, recommended CI flags - CLI Reference: expand from 11 to 16 flags (--grep-invert, --forbid-only, --shard, --update-snapshots, --pass-with-no-tests); add merge-reports and --help examples - Add GitBranch icon import; add 3 new TOC entries and sidebar links Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… cache
- Remove RUN_HISTORY_KEY and the lazy localStorage initialiser for
runHistory — state now always starts as [] and is populated by the
first fetchHistory() call on mount
- Remove the useEffect that wrote runHistory back to localStorage after
every change (stale cache was masking real DB data on page refresh)
- Add one-time localStorage.removeItem('pw_run_history_v1') at module
level to clear any stale pre-SQLite data in existing browsers
- Remove LIMIT 30 cap from GET /api/playwright/history — all runs are
returned from SQLite; caller can pass ?limit=N to override
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The Stop button was calling setRunning(false) directly, which only
updated local state. The AbortController inside runWithSSE/runDynamicTest
was never invoked, so:
1. The fetch/SSE stream kept running server-side after Stop was clicked
2. When the orphaned stream eventually finished, its finally block
called setRunning(false) again — silently cancelling any new run
the user had just started
Fix: store the AbortController in runAbortRef (useRef). The Stop button
now calls runAbortRef.current?.abort() which throws an AbortError inside
the running fetch, causing the catch block to log [TIMEOUT] and the
finally block to clean up normally. Both runWithSSE and runDynamicTest
are updated; the ref is cleared in each finally block.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… SQLite streamSummary() still used path.join(RUNS_DIR, ...) to load the archived run JSON for the AI post-mortem, but RUNS_DIR was deleted in the SQLite migration. This crashed the server the moment a run finished, keeping the dashboard stuck in RUNNING state forever. Fix: when creds.runId is set, query the runs table directly (SELECT raw_json FROM runs WHERE id = ?); fall back to RESULTS_PATH only when no runId is provided (legacy path). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…& run output reorder Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The update-wiki workflow was cloning the old repo name (intelligent-testing-toolkit instead of open-qa) and the .github/wiki/ directory didn't exist, causing the cp step to fail immediately. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (7)
📝 WalkthroughWalkthroughThis PR migrates Playwright run archival from filesystem JSON files to a SQLite database, refactors corresponding API endpoints, improves test run cancellation via AbortController tracking, removes the Quick Presets UI feature, relocates the run output terminal, and substantially expands dashboard documentation with updated guides and CLI references. ChangesSQLite Run History & Dashboard Modernization
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Possibly related PRs
Poem
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Description
Bundles two CI fixes with the dashboard feature work from this branch.
CI fixes:
update-wiki.ymlwas cloning the old repo name (intelligent-testing-toolkitinstead ofopen-qa), causing the wiki sync job to fail on every push tomainthat touchedREADME.md. Fixed the URL and added a guard so the copy step doesn't fail if.github/wiki/is ever empty..github/wiki/Home.md— the wiki directory didn't exist at all, so thecpstep died immediately.Dashboard features:
better-sqlite3(test-results/runs.db).archiveRun()INSERTs into the DB; history, results replay, and clear all query SQLite directly.runAbortRefpattern ensures Stop aborts the active SSE fetch without blocking the next run.streamSummarycrash fix — removed staleRUNS_DIRreference left from the JSON-file era.Type of change
Checklist
Summary by CodeRabbit
New Features
Bug Fixes
Documentation
Chores