Files
bitvid/docs/testing/playback-qa-4-client10-acceptance-plan-2026-10-27.md
T

7.0 KiB

QA4 acceptance plan for client10 animation cleanup

Preparation only at printed QA HEAD0ffd92a8d2072a19fe61ac6edcf5097a9538fddd. Dispatch013223 routes source-only acceptance preparation; exact boundaries read in docs/agents/ROUTING-2026-10-27-client10-animation-cleanup.md from dispatch worktree. Client sole product writer. No runner execution or new browser/full/build/submit grant; implementation API/candidate not yet reviewed.

Before validation

  1. Review READY candidate, exact product SHA/source diff, focused scenarios, per-case failing mutants, meaningful real initialization wiring evidence and lint. Read current primary rules/KNOWN_ISSUES and candidate contract. Obtain separate exclusive bounded browser slot and fresh installed healthOK; START/task/progress before launch. Preserve preview3000/peer servers and use private own app/relay ports only.
  2. Preserve original QA boot failure, native-click A failure and strict historical362/360+394/390 overflow. Keep593fc055 causal runner and all original results immutable. Prepare a new uniquely named durable candidate runner/result, hash/record all inputs and list dependencies in manifest; source/hash guards must identify the actual candidate and matching generated CSS. No fake application, installs/downloads/builds without routing. Verified genuine archive+Buffer mirror, actual application readiness, real disclaimer close UI, existing fixture-only identity, local relay/no events; block/log all other HTTP/WS, including media/trackers. No real account/signer/cloud/publishing.

Actual-app acceptance matrix (pending execution)

Scenario Entry/action Required observation
360x800, default motion Fresh actual-app navigation, disclaimer through native UI, fixture login, native Upload; one bounded wheel to original saved rectangle if reachable No intervention: native point(46.375,592.4375) hits INPUT#check-comments and toggles exactly once; retain exact checkbox rectangles and modal/document scroll before click. If geometry differs, report it and stop exact-coordinate comparison; do not silently replace with a convenient point.
390x844, default motion Same actual UI Upload flow Measure input rectangle and native center hit/toggle, associated label target size, close and focus restoration; record control rather than assert historical360 coordinates apply.
1280x720, default motion Same actual UI Upload flow Same measured native input/control/close-focus checks, no mobile coordinate assumption.
360x800, reduced motion Fresh context with browser reduced-motion preference, same actual UI Input reachable/toggles once; app visible, no stuck transient context; record actual computed animations. Do not require an animationend event when CSS suppresses animation.

Every viewport records innerWidth/documentElement.clientWidth/documentElement.scrollWidth/body.scrollWidth plus component rectangles, scroll positions, ordered elementsFromPoint at original six checkbox sample points where applicable, computed app/sidebar/modal animation/stacking/pointer state, native event composedPath and checked before/after. Require strict document width<=viewport as a distinct original assertion, with each failure retained. A width failure must be reported independently of native-click recovery; never relax tolerance or label whole mobile baseline all-green. No app.fade-in removal or other causal B intervention in candidate acceptance: success must come from product initialization itself. Prior failed-A/passed-B remains historical evidence and is not a requirement for the fixed candidate to fail again.

Capture Tab/focus-visible containment and close-focus restoration using native keyboard events with unchanged real UI, critical target rectangles and vertical reachability. Report exact number of Tab steps and element identities; stop if focus escapes. Input16x16 alone is not total associated-label target size/AA compliance. No unsupported zoom or real-device claim; horizontal scroll/zoom coverage only if explicitly included in the bounded run grant. Keep dimensions separate from usability and original overflow diagnosis.

Animation lifecycle controls

Client focused regressions own deterministic helper/wiring behavior; QA reviews those results before using browser budget. Each retained new case needs its own failing mutant per routing. Candidate API determines the smallest real-module control harness; never claim a module harness is actual-app acceptance.

  • Late initialization: native finished interface animation exists before actual cleanup installation. Record native animationend timestamp and real listener/helper initialization timestamp; require finished fade-in/delay cleanup and original input reachability. Instrument transparently before navigation, forwarding original listener registration arguments. If natural app ordering does not exercise late-init, report boundary; do not force delays/retry to manufacture a passing assertion. Use approved deterministic real-module scenario for that branch.
  • Active initialization: still-running matching entrance keeps class/delay until genuine finish/cancel; record native animation state and completion event. Future matching animation retains animation until completion. No synthetic animationend, arbitrary sleep, timeout extension or forced layout.
  • Cancellation: genuine cancellation cleans only the matching supported transient state. Distinguish runtime event semantics from a helper test event model; report whichever was measured.
  • Unrelated animation/classes remain; thumbnail cleanup keeps its existing target/data-attribute contract; repeated initialization does not duplicate listener effects/resources. Review existing controlled regressions/mutants for these rather than invent additional app navigation solely to repeat their coverage.
  • Reduced-motion CSS may yield no animation object/event; review expected initialization behavior in candidate contract and independently record actual browser state. Do not assume no event is a product defect without matching accepted contract.

Stop, release and reporting

One bounded pass only as granted; stop at first readiness/network/geometry/runtime hard blocker, preserve natural exit and partial counts, no retries or assertion weakening. Discrete strict-width failure remains FAIL even if other authorized measurements continue. Close only owned context/browser/relay/server; relay events must remain0. Record START/endUTC, exact command/SHA/hashes, browser/version/viewports, named checks/pass/fail/unexecuted counts, page/network errors and explicit cleanup evidence plus RELEASE/task/progress. New defect goes to dispatch for ownership; no QA CSS/product/helper/config/test patch.

Remaining gates: READY/candidate review, fresh slot+health, actual candidate execution, unchanged normal landing/build/artifact proof by assigned owner, independent acceptance as routed. Source-only plan executes0 checks and proves no fixed behavior. Missed cleanup demonstrated in prior controlled runs; original horizontal overflow, FirefoxCI, real-device/AA/live playback qualification remain open.