Skip to content

tech debt: ui-screenshotter map flow waits on animation, not tile HTTP #71

@torlando-agent

Description

@torlando-agent

Filed by greptile-iterator from rejected (out-of-scope-for-PR) greptile suggestion on PR #69.

Source PR: #69
Source thread: #69 (comment)
File: flows/map.yml:33

What greptile suggested

waitForAnimationToEnd drains the UI animation queue but has no visibility into in-flight HTTP requests. With timeout: 8000 the map surface may still be blank or show a loading spinner when the screenshot fires, since tile JSON and raster tiles load asynchronously over HTTP. Suggested asserting a tile-layer accessibility identifier is visible, or accepting the limitation.

Why it was deferred

Out of scope for the source PR (per the Stage 1 best-effort design noted in flows/README.md: "capture + write the table to PLAN.md only"). Adding assertVisible for a tile-layer element requires identifying a stable accessibility identifier on the MapLibre canvas — a non-trivial app-side investigation that doesn't belong in a Maestro-flows-only PR.

Suggested follow-up

When ui-screenshotter graduates to Stage 2 (pixel diff) or Stage 3 (regression gating), add a tile-load assertion before takeScreenshot in flows/map.yml. Two paths: (1) inspect the MapLibre MGLMapView/SwiftUI wrapper for an accessibilityIdentifier on the tile layer and assert against it, or (2) add a debug-only AID specifically for the screenshotter. Until then, accept that map screenshots may occasionally capture a blank/loading map surface.


🤖 Filed by greptile-iterator. Rationale + audit trail in the agent run record under `/80 Assistant/Agent Bus/runs/2026-05/greptile-iterator-Columba-iOS-pr69.md`.

Metadata

Metadata

Assignees

No one assigned

    Labels

    tech debtDeferred from a PR for scope; standalone follow-up filed by greptile-iterator.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions