Skip to content

docs mobile p24 t02 usability accessibility

AlexandreZanata edited this page Oct 2, 2026 · 1 revision

P24-T02 — Novice usability and accessibility (protocol + first remediation)

Status: IN_PROGRESS on codex/phase-24-android-acceptance. Issue: #97 OPEN (not done). Entry: G19–G23 integrated (P23 PR #95 b4f664e); P24-T01 automated loop PAUSED for user manual validation (TEST_STAGE_CLOSED_USER_MANUAL), so no device acceptance is claimed here. Binds B-BR-C01–C06 / BUC-C01–C05. No migration, no backend change, no iOS work.

Protocol (frozen before running, from P19-T02 baseline)

  • Sample: 3–5 novice drivers (Android daily users, never used abastevo) + 1 maintainer observer. No PII collected beyond first name + consent; sessions not recorded.
  • Tasks (predeclared, BUC-derived):
    • T1 (BUC-C01): guest selects city + fuel, reads recent community price or explicit absence, identifies source (community vs dated ANP) and recency.
    • T2 (B-BR-C01/C06): explains condition label on a loyalty/app-only price (no cheap ranking assumption).
    • T3 (BUC-C02): photo contribution review → confirm station/fuel/price/condition.
    • T4 (BUC-C03): rate/comment/reply/vote + report abuse path (280-char bound visible).
  • Pass thresholds: T1 ≥ 4/5 first-try source/recency identification; T3 zero silent publishes of queued data; T4 zero PII/GPS exposure; screen-reader + 2x font-scale rows green (existing AccessibilityUiTest 4/4). Failures remediate presentation, never domain rules.
  • Novice sessions: NOT RUN in this slice (no participants recruited). Protocol above is frozen so P24-T02 can execute without redefinition. Maintainer heuristic walkthrough below is early evidence only, not a substitute.

Automated accessibility baseline (this tree)

  • Existing instrumented AccessibilityUiTest 4/4 preserved (Loading TalkBack, Error/Home/Search at 2x font-scale). Device rerun stays P24-T01-row-owned while the user validates manually; not claimed here.
  • pt-BR coverage verified: source_badge_*, a11y_source_badge_*, a11y_station_price_row, stations_collected_at_label, a11y_nav_update_price present in values-pt-rBR; a11y_station_price_row present in all 7 locales.

Finding + remediation (this task)

  • Finding: StationPriceRow announced only a11y_station_navigate ("Ir para X") — TalkBack lost price + recency, failing B-BR-C01 comprehension. The richer string a11y_station_price_row ("%1$s, preço %2$s") existed in all locales but was unused.
  • Fix (app/.../ui/components/StationPriceRow.kt): description is now a11y_station_price_row(displayName, priceFormatted) + optional localized stations_collected_at_label, joined by pure stationRowTalkBackDescription (Role.Button preserved, so the row stays actionable). No new strings, no domain change.
  • SourceTimeBadge needs no change: text + icon (never color-alone) + per-kind screen-reader description already covered by SourceTimeBadgeTest 3/3.

Validation (this slice)

  • RED → GREEN: new StationPriceRowA11yTest 3/0-fail (price-only, blank-recency, recency-appended).
  • :app:testDebugUnitTest target + :app:assembleDebug (record outcome in commit evidence); git diff --check clean; scoped secret review (no secrets/PII/GPS/photo).
  • Open for phase exit: novice sessions T1–T4, instrumented rerun on frozen P24-T01 rows, low-end hardware row (P24-T03-owned).

Fuel prices wiki

Source: AlexandreZanata/brazil-fuel-prices @ 08a54dc49c2e43a85aba56a7b56ae96d692cec61

Clone this wiki locally