v1.1 WP-C: browser release coverage
Drives in a real browser the reader workflows v1 proved only through the API or the component suite, including an export that leaves the browser as a file. Final run: 91 checks (the 38 existing M11 checks plus 53 new), 0 failed, 0 skipped, on the production build over trusted-LAN HTTPS. - tools/m11_browser.py: scenarios for Retry and takes, Save Point create / restore / Redo, state correction (accepted, and a refused correction with its reason), narration length reaching each turn's prompt, failed generation (an unserved model blocked up front; a listed model that cannot narrate failing in the open) and recovery, and export download from the library and from campaign settings, imported into a fresh application. Rows are tagged M11 / WP-C and counted separately; --only for development. The M11 checks now wait on conditions instead of sleeping. - tools/m11_webdriver.py: Firefox download preferences, a $HOME-only download folder, a download wait that ignores partial, empty, pre-existing and still-growing files, centred real clicks, tabs, and condition waits. - tests/test_v11_c_browser_helpers.py: the download wait, prefs and $HOME guard, without a browser. - frontend: a correction the story refused was presented as "Generation failed" with a Retry offer and a typed-input claim. It is now "That correction was not applied", not retryable, with the reason kept (errors.js, FailureNotice.jsx; 3 regression tests). - DEVELOPMENT.md: the harness command, download profile and $HOME rule, what counts as a finished download, and the no-sleep rule. - docs: V1.1-PLAN, VERSION v4.4, planning README, reports/v1.1/V1.1-WP-C-REPORT.md. Open for the owner: "Correct" on an Important Facts row is always refused (K1), and a partly refused correction is not reachable from the reader UI. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VvegagkhuCZoFPdv4M1egY
This commit is contained in:
co-authored by
Claude Opus 5
parent
0c1ba836ba
commit
59b5ebc2d8
+38
-3
@@ -408,9 +408,17 @@ AIDND_TEST_ENDPOINT=... AIDND_TEST_MODEL=... AIDND_TEST_EMBED_MODEL=... \
|
||||
# What that campaign is worth on a machine that has never seen it (I01-I07).
|
||||
.venv/bin/python -m tools.m11_recovery --bundle "$HOME/m11-evidence/m01/bundle.json" --out "$HOME/m11-evidence/m01"
|
||||
|
||||
# The browser release regression and the accessibility measurements. Needs
|
||||
# `frontend/dist` built and geckodriver on PATH.
|
||||
.venv/bin/python -m tools.m11_browser --out "$HOME/m11-evidence/browser"
|
||||
# The browser release regression and the accessibility measurements: M11's 38
|
||||
# checks plus v1.1 WP-C's reader workflows (Retry, Save Points, state correction,
|
||||
# narration length, failed generation, export download). Needs `frontend/dist`
|
||||
# built, geckodriver on PATH, and --out under $HOME (the downloads land inside
|
||||
# it). Release evidence needs the narrator over trusted-LAN HTTPS.
|
||||
AIDND_TEST_ENDPOINT=https://... AIDND_TEST_MODEL=qwen2.5:3b-instruct \
|
||||
.venv/bin/python -m tools.m11_browser --out "$HOME/v11-evidence/wp-c/browser"
|
||||
# Without a narrator (a partial smoke run, not evidence), or one scenario while
|
||||
# developing (--only takes: shell, history, markdown, hidden, context, csp, a11y,
|
||||
# retry, savepoint, state, length, failure, export).
|
||||
.venv/bin/python -m tools.m11_browser --out "$HOME/v11-evidence/wp-c/smoke" --no-narrator
|
||||
|
||||
# A container with no network at all: the offline run and the packaging path.
|
||||
.venv/bin/python -m tools.m11_offline --out "$HOME/m11-evidence/offline"
|
||||
@@ -499,6 +507,33 @@ It exists so browser evidence needs no Selenium in the dependency surface, and
|
||||
it documents the one environment quirk that matters here: a snap Firefox will
|
||||
not open a file the driver names under `/tmp`, but will under `$HOME`.
|
||||
|
||||
**Downloads in the browser harness (v1.1 WP-C).** The export checks click the
|
||||
real Export controls and wait for the file on disk, so the browser has to save
|
||||
without asking. `m11_webdriver.firefox_download_prefs` gives the WebDriver
|
||||
session a profile that does that:
|
||||
- `browser.download.folderList` 2, `browser.download.dir` the run's
|
||||
`downloads/` folder, `browser.download.useDownloadDir` true;
|
||||
- no "always ask", and `application/json` saved to disk.
|
||||
|
||||
It works on the snap Firefox this machine has (155.0.1, geckodriver 0.37.1), and
|
||||
no separate Firefox is needed. The same sandbox rule applies as for opening
|
||||
files: the download folder must be under `$HOME`, and the harness refuses one
|
||||
that is not.
|
||||
|
||||
A download counts as finished only when all of these hold at once
|
||||
(`m11_webdriver.wait_for_download`):
|
||||
- a new name has appeared;
|
||||
- no `*.part` file is left;
|
||||
- the file is more than zero bytes;
|
||||
- its size is the same across consecutive polls.
|
||||
|
||||
The toast that says "Campaign exported." is not evidence.
|
||||
|
||||
**Waiting.** Nothing in the harness sleeps before an assertion. Every wait is on
|
||||
something the page, the browser or the filesystem shows. A condition that
|
||||
already holds before the action it waits for does not count as waiting for that
|
||||
action; the harness defects found in M8, M11 and WP-C were all of that shape.
|
||||
|
||||
## Backing up, and getting a campaign back
|
||||
|
||||
There are two recovery tools and they answer different questions. Using the
|
||||
|
||||
Reference in New Issue
Block a user