Files
ui/_docs/02_tasks/todo/AZ-473_test_photo_mode.md
T
Oleksandr Bezdieniezhnykh 15a878d6f1 [AZ-455] Decompose Step 3 — test task specs (AZ-457..AZ-482)
Adds 26 blackbox-test task specs under epic AZ-455 plus the matching
rows in _dependencies_table.md. Each task depends on AZ-456 (test
infrastructure). Advances autodev existing-code flow Step 5 → Step 6
(Implement Tests, cycle 1) ready for batch implementation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-11 01:49:44 +03:00

2.3 KiB

Test — PhotoMode Switch & yoloId Wire

Task: AZ-473_test_photo_mode Name: PhotoMode switch + auto-select + yoloId offsetting on the wire Description: Implement the 3 blackbox tests pinning PhotoMode behavior: switching modes sets the offset filter, auto-selecting when the prior class is no longer valid, and the on-wire classNum == classId + photoModeOffset assertion. Complexity: 2 points Dependencies: AZ-456_test_infrastructure Component: 06_annotations (PhotoModeContext + AnnotationsPage) (Blackbox Tests) Tracker: AZ-473 Epic: AZ-455

Problem

PhotoMode offsets classId to classNum on the wire (classNum == classId + photoModeOffset). Getting this wrong leaks a different class on every save without any user-visible symptom — until a downstream consumer mis-buckets the data.

Outcome

  • 3 scenarios pass — mode switch, auto-select on invalid, wire offset arithmetic.

Scope

Included

Scenario Profile Source file
FT-P-48 — PhotoMode switch — mode set + filter fast blackbox-tests.md
FT-P-49 — PhotoMode auto-select when prior class no longer valid fast blackbox-tests.md
FT-P-50 — yoloId on the wire — classNum == classId + photoModeOffset fast + e2e blackbox-tests.md

Excluded

  • DetectionClasses load + hotkeys (covered in 17_test_detection_classes).

Acceptance Criteria

AC-1: Switch sets filter FT-P-48 — toggling PhotoMode updates the rendered class list (filter applied); the selected mode is persisted in <PhotoModeContext> (asserted via the rendered filter, not via context read).

AC-2: Auto-select FT-P-49 — switching to a mode where the currently-selected class is out-of-range auto-selects the first valid class in the new window.

AC-3: Wire offset FT-P-50 — issue an annotation save in mode P; outbound body carries classNum == classId + P for every detection.

System Under Test Boundary

  • System under test: <PhotoModeContext> + <AnnotationsPage> save call.
  • Allowed stubs: MSW for /api/annotations/classes + annotation save.
  • Disallowed: reading <PhotoModeContext> state directly.
  • Expected observables per results_report.md rows 77-80 region.

Constraints

  • Tests exercise all three modes (P ∈ {0, 20, 40}); each saves a probe annotation and asserts the wire offset.