Merge integration/rpa-dashboard-skills (d89dce3) into ticket 04
Brings in tickets 05-07 (AI skill, cost page, AI desktop sections). tests/README.md keeps both the optional-section notes and the AI page-check notes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
commit
73adc74637
67 files changed
+4826
-100
No files matched your search
@@ -27,6 +27,23 @@ uv run --with pytest --with playwright pytest tests
|
||||
the login section is signed in (`login_result ok`) before each case.
|
||||
- `test_sections.py`: the optional-section strip tool keeps only the chosen
|
||||
sections, and a page with none of them still passes the page check.
|
||||
- `page_check_ai/`: **Seam 1, AI web page.** Builds the React starter with npm
|
||||
(filled with test values, in a temp folder that keeps `node_modules`), serves it with
|
||||
its own `server_stub.py`, and checks bands, band filters, drafts, the approve gate
|
||||
"page X of Y" and the cost page (spend tiles, coverage pill, month breakdown,
|
||||
by-hand assumptions), plus every no-AI case. Tests set run and review state on the stub
|
||||
directly (the `stub` fixture). To check a generated dashboard folder instead, set
|
||||
`PAGE_CHECK_AI_DIR=path/to/dashboard`. Needs npm on PATH, else it skips.
|
||||
- `page_check_ai_desktop/`: **Seam 1, AI desktop page.** The no-AI `dashboard.html` with
|
||||
`ai_sections.html` pasted in, loaded from `file://` with a fake Qt bridge whose
|
||||
`ai_request` slot goes to `server_stub.dispatch()` in this process (what `ai_bridge.py`
|
||||
does). Runs the AI web page's review and cost cases and the no-AI cases unchanged, plus
|
||||
a tampered page calling the slot directly (still refused). To check a generated folder,
|
||||
set `PAGE_CHECK_AI_DESKTOP_DIR=path/to/dashboard`; `PAGE_CHECK_WIRED=1` as above.
|
||||
- `test_pricing.py`: the AI cost function (normal, long-context, thinking tokens,
|
||||
unknown model).
|
||||
- `test_reference_scan.py`: no patient data, internal IPs, credentials or keys in any
|
||||
bundled file, and every Superbill extract carries an `EXAMPLE ONLY` banner.
|
||||
- `evals/`: **Seam 2.** Runs the skills on a fixture project with `claude -p`,
|
||||
then grades the reply and runs the page check on the page it built:
|
||||
|
||||
@@ -38,6 +55,10 @@ uv run --with pytest --with playwright pytest tests
|
||||
`FIXTURES` in `run_eval.py`. An entry with a `"fixture"` key reuses another
|
||||
fixture folder with different answers: `c-keep` and `c-restyle` both run on
|
||||
`c-web-existing-frontend`, and also check what changed in the files it already had.
|
||||
An `"ai": True` entry (`d-ai-extraction`) expects the AI skill's React starter and
|
||||
runs `page_check_ai/` on the folder it built. An `"ai_desktop": True` entry
|
||||
(`e-pyqt-ai`) expects the desktop AI page and runs `page_check/` (with the bot replay)
|
||||
and `page_check_ai_desktop/` on it.
|
||||
For a bot fixture (`b-pyqt-bot`), the eval also dry-runs the generated
|
||||
`bot_runner.py`, saves its events to `evals/results/<fixture>.run.jsonl`, and
|
||||
replays them in the page check.
|
||||
|
||||
Reference in new issue
Block a user