80 lines
4.2 KiB
Markdown
80 lines
4.2 KiB
Markdown
# Task 5 Report: Fixture Coverage, Documentation, And Regression Tests
|
|
|
|
## Result
|
|
|
|
Completed the fixture regression coverage and operational UX documentation.
|
|
The fixture retains its explicit non-production command gate and the default
|
|
100-Agent/500-event/100-job shape. Its deterministic blocker count is now 51:
|
|
50 distinct open tenant/product pairs, including two open blocker rows for the
|
|
same first product. Safe-blocked snapshot counts match the fixture's open
|
|
product pairs. Failed jobs have duration timestamps, and linked events point to
|
|
their job and, where present, the correct blocker/product and installation.
|
|
|
|
## TDD evidence
|
|
|
|
1. Added assertions for the additional same-product blocker, unique fingerprints,
|
|
exact UUID5 installation identities, ownership, failed-job durations, and
|
|
job/blocker/product event links. The first focused run was RED as expected:
|
|
fixture returned 50 blockers while the requirement expected 51.
|
|
2. After implementing the blocker/job/event fixtures, added an assertion that
|
|
each snapshot's `safe_blocked` value matched its open product pairs. The
|
|
focused run was RED as expected because the old sample formula reported
|
|
blocked products for installations without an open blocker.
|
|
3. Updated the deterministic snapshot values to match the generated open
|
|
product pairs. The focused test then passed.
|
|
|
|
## Verification commands
|
|
|
|
- RED: `python -m pytest central/tests/test_control_panel_fixture.py -q` —
|
|
failed on the expected blocker count gap (`50 != 51`).
|
|
- RED: `python -m pytest central/tests/test_control_panel_fixture.py -q` —
|
|
failed on the expected safe-blocked snapshot mismatch (`1 != 0`).
|
|
- GREEN: `python -m pytest central/tests/test_control_panel_fixture.py -q` —
|
|
passed (`1 passed`).
|
|
- Full central suite: `python -m pytest central/tests -q` — passed
|
|
(`275 passed`). Pytest emitted its existing `pytest-asyncio` fixture-loop
|
|
deprecation warning and one existing `openpyxl` print-area warning.
|
|
- `git diff --cached --check` — passed with no whitespace errors.
|
|
|
|
## Documentation review
|
|
|
|
Updated `docs/CONTROL_PANEL_V1.md` to link to the new operational UX contract
|
|
and distinguish the installation-wide confirmation step from the validated
|
|
blocker context workflow. Added `docs/CONTROL_PANEL_OPERATIONAL_UX_V1.md`
|
|
covering the health invariant, technical/fiscal distinction, blocker/product
|
|
counts, dashboard attention and empty states, identity-first views, timestamp
|
|
and timezone presentation, blocker filters and summaries, operational-only
|
|
priority tiers, safe resolution/auth/CSRF/audit fields, reprocess confirmation,
|
|
password policy, performance limits, responsiveness, fixture command, and
|
|
write/deployment boundaries.
|
|
|
|
## Commit
|
|
|
|
- Implementation and product documentation: `4ba0fa8`
|
|
(`test: complete control panel fixture UX coverage`)
|
|
|
|
## Concerns
|
|
|
|
- Resolved in the timestamp tooltip follow-up below: templates now use raw ISO
|
|
UTC timestamps in `title` and retain localized human-readable visible text.
|
|
- Full central tests retain the two pre-existing dependency warnings described
|
|
above; they did not fail the suite.
|
|
|
|
## Timestamp tooltip follow-up
|
|
|
|
Resolved the full technical timestamp concern: agent, job, blocker, and
|
|
populated dashboard failure timestamps now keep their localized human-readable
|
|
text visible and expose the complete ISO UTC timestamp (including seconds and
|
|
`+00:00`) in the `title` attribute. Blocker detail includes first- and
|
|
last-seen timestamps. The existing raw ISO serializer now explicitly normalizes
|
|
naive SQLite timestamps as UTC, matching the presentation layer's existing
|
|
interpretation without changing the view-model shape.
|
|
|
|
### TDD and verification
|
|
|
|
- RED: `python -m pytest central/tests/test_control_panel_pages.py -q -k "localized_last_seen or localized_created or localized_seen_times or bounded_failed_job_rows"` — 4 expected failures because the tooltips did not contain the required raw ISO values.
|
|
- GREEN: `python -m pytest central/tests/test_control_panel_pages.py -q` — passed (`12 passed`).
|
|
- Full suite: `python -m pytest central/tests -q` — passed (`278 passed`, one existing `openpyxl` warning; pytest-asyncio also emits its existing fixture-loop deprecation warning).
|
|
- `git diff --check` — passed.
|
|
- Commit message: `fix: show technical timestamps in tooltips`.
|