Skip to content

Local report viewer, themed sortable reports, axe-core e2e checks - #63

Merged
noteflowai merged 1 commit into
mainfrom
feat/report-viewer
Oct 1, 2026
Merged

noteflowai merged 1 commit into
mainfrom
feat/report-viewer

Conversation

@noteflowai

Copy link
Copy Markdown
Owner

Summary

  • evalarc view [DIR]: lists every report under a folder with its verdict and opens it in the browser. Follows the mainstream pattern (inspect view, promptfoo view, mlflow ui): read-only local server + the user's browser, standard library only. Binds 127.0.0.1, rejects foreign Host headers (DNS rebinding), traversal and directory listings. --write-index writes a static index.
  • Reports: design tokens with light/dark from the system setting, sticky table headers, tabular numbers, sortable columns (WAI-ARIA APG sortable-table pattern) and a labelled row filter on long tables. One packaged script, inlined and allowed by CSP hash; pages remain complete without JavaScript.
  • E2E checks: check_reports_browser.cjs now uses axe-core (@axe-core/playwright 4.13.0, pinned) for WCAG 2.2 A/AA in both themes instead of a hand-written contrast check, plus reviewer task scenarios: verdict on first screen, skip link, keyboard sort asc/desc with single aria-sort, filter with live count, 320 px reflow, no-JS, print, viewer index → report → back.

No desktop client: Electron/Tauri would add a large runtime or Rust toolchain without capability the browser lacks; rationale in docs/viewer.md.

Testing

  • pytest: 677 passed (9 new viewer tests incl. Host/traversal/listing boundaries); ruff clean.
  • check_reports_browser.cjs, npm run test:site, check_model_upgrade.cjs pass locally; wheel includes the JS asset.
  • Not done: manual screen-reader testing.

evalarc view serves every report under a folder on 127.0.0.1 with an
index of verdicts, following inspect view / promptfoo view; read-only,
Host-checked, no listings. Reports gain light/dark themes, sticky headers
and progressive-enhancement sorting (WAI-ARIA APG) and filtering via one
CSP-hashed inline script. scripts/check_reports_browser.cjs runs axe-core
WCAG 2.2 AA in both themes plus reviewer task scenarios.
@noteflowai
noteflowai merged commit eba182f into main Oct 1, 2026
14 checks passed
@noteflowai
noteflowai deleted the feat/report-viewer branch October 1, 2026 22:51
@noteflowai noteflowai mentioned this pull request Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant