# TestSprite verification log

## 2026-10-06 — TASK-005 UX sweep

- Flutter: `flutter test` — 75 passed; `flutter analyze` — warnings only (info-level lints on skeleton separators).
- Ops: `UnitPriceTest` added; PHPUnit not run on host (no `vendor/`). Run in Docker when stack is up.
- Live API smoke deferred until Ops container healthy after category sync fix + TASK-005 deploy.

## 2026-10-06 — TASK-004 category taxonomy

- Docker Desktop was not running — Ops `php spark migrate` and TestSprite deferred.
- Flutter: `flutter test test/shop_categories_test.dart` — passed.
- Ops: `vendor/bin/phpunit` not present on host; run in Docker when stack is up.
- Manual smoke (when Ops deployed): Home/Shop aisles distinct counts; category filters; admin catalog unmapped queue.

## 2026-10-02 — Ops-only cutover verification

- Flutter: `flutter test` — 35 tests passed.
- Ops: Docker `php spark migrate --all` applied `OptimizePublicCatalogue`, `CreateCustomerAppAuth`, `CreateShopperPayments`.
- Manual: deploy Ops + set `BASKIT_PAYSTACK_SECRET`, `JWT_SECRET`, `APP_ANALYTICS_KEY`; run Bitbucket `release-apk` or tag `v*`.

## 2026-10-02 — Paystack hosted checkout
- TestSprite MCP was unavailable in this workspace.
- `flutter test`: 35 tests passed.
- `flutter analyze`: changed files clean; one pre-existing unused test helper remains.
- `flutter build apk --debug`: passed.
- `flutter build web`: passed, including Wasm dry run.
- Local API: `pay/initialize` returned an HTTPS hosted-checkout URL, `BK-` reference, and callback URL; public callback returned HTTP 200.
- Browser smoke: Flutter web opened on port 8080 and `/checkout/pay` rendered the secure hosted-checkout screen.

## 2026-10-02 — Paystack Sonar cleanup
- TestSprite MCP remained unavailable; server behavior was verified with direct API smokes.
- `pay_handlers.php`: no Sonar findings after camelCase renames and HTTP transport refactor.
- Verified-TLS Paystack initialize and bogus-reference fetch both reached Paystack successfully.
- Callback route returned HTTP 200; all 35 Flutter tests passed.

## 2026-10-06 — Emulator basket worker (Phase 1)
- TestSprite MCP unavailable; Docker Desktop not running (Ops migrate / :8080 stack not up).
- `flutter test`: 67 tests passed (includes emulator API + setup tests).
- `flutter analyze`: no errors (one pre-existing info in `test/basket_fly_test.dart`).
- `pytest emulator_worker/tests`: 5 passed.
- Manual E2E (register → setup → Paystack → basket status) deferred until Ops Docker + golden AVD apps + worker `.env` are configured.

## 2026-10-06 — PnP / Woolworths drivers + credential wiring
- TestSprite MCP unavailable; Docker Desktop not running (Ops `:8080` not up; new migration not applied).
- `pytest emulator_worker/tests -m "not live"`: 7 passed; 3 live tests deselected.
- `flutter test` (emulator/setup/api_client): 7 passed.
- Device spike on `emulator-5556`: PnP (email+password+SMS OTP), Woolworths (email+password), selectors in `docs/emulator_spike.md`.

## 2026-10-05 — App versioning
- `flutter test`: all 47 tests passed, including package version formatting, display, and fallback coverage.
- `flutter analyze --no-fatal-infos`: no errors or warnings; one pre-existing `sized_box_for_whitespace` info remains in `test/basket_fly_test.dart`.
- `flutter build apk --release`: passed with version `1.0.0+1`; the versioned copy matches `app-release.apk`.
- Browser smoke: Flutter web started on port 8081 and `/#/profile` rendered successfully. The footer text is covered by the widget test because Flutter's canvas viewport did not expose its internal scroll area to browser automation.
