UI Test Screenshots

The UI test suite captures a screenshot at each step of every flow (timer, tag management, record editing, settings, filtering, reports, performance). These are the same images shown in the app store / marketing gallery.

Most flows are journey-style tests: one app launch runs several scenarios sequentially (each wrapped in XCTContext.runActivity), snapshotting along the way, instead of paying a fresh launch per check. Snapshot names are stable across this structure — the gallery consumes them by name.

Where to view them

The rendered screenshots live in the public gallery at /screenshots — iPhone and Mac, grouped by test flow with captions. That page reads every PNG under src/assets/screenshots/{iphone,mac}/ via import.meta.glob, so it always reflects the latest captured set.

Where they come from

  • Captured during UI test runs into Minuta/UITests/__Snapshots__/{TestClass}/.
  • run-uitests.sh copies them, flattened, into minuta.tools/src/assets/screenshots/{iphone,mac}/ using the naming convention TestClass--name.png. Only the current run’s screenshots are copied — __Snapshots__/ is shared between platforms and can hold leftovers from a previous run on the other platform, which once leaked Mac screenshots into the iPhone gallery (and vice versa).
  • The website imports them from there; there is no per-doc copy to maintain.
  • On Mac Catalyst, test launches pin the window to 400x600pt (SceneDelegate applies sizeRestrictions of 520x779 UIKit points, which Catalyst scales by 0.77; 783x971pt until 2026-10-15). The window is as narrow as an iPhone, so tests tell the platforms apart with #if targetEnvironment(macCatalyst), never by the window width. At 600pt the History list does not fit: Mac tests scroll it with scrollMainList(down:) (MinutaUITests, wheel events over the window, since a Catalyst list does not scroll on drags; iOS keeps dragScroll). Without the pin, tests inherit the real app’s last saved window frame, making screenshot sizes nondeterministic and the sheet-width assertion meaningless.

Regenerating

cd Minuta
./scripts/run-uitests.sh          # iPhone
./scripts/run-uitests.sh --mac    # Mac Catalyst

See 601-testing-guide for the full test workflow, and the project CLAUDE.md for the screenshot regeneration and deploy steps.