feat(Flyover): export a static QA atlas - #270
Open
kyleve wants to merge 6 commits into
Open
Conversation
kyleve
commented
Aug 14, 2026
| /// Throws when a settle phase cannot produce a trustworthy capture. | ||
| @MainActor | ||
| func reportIfUnsettled( | ||
| func throwIfUnsettled( |
Owner
Author
There was a problem hiding this comment.
Review focus: this deliberately changes unsettled and starved captures from recorded test issues followed by image generation into typed throws. assertSnapshots still records the thrown error, while the new hosted PNG caller stops immediately and cannot publish that image. Cancellation now follows the same path through CancellationError.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
./flyover exportto generate a portable, network-free Where QA atlas with canvas, list, search, zoom, route playback, deep links, profile switching, and a native-image inspectorWhereUISnapshotTestswith one frozen in-memoryWhereFlyoverWorld; production Flyover and app scope behavior remain unchangedWhy
Flyover could inspect the native screen catalog only inside the app. This adds a disposable static artifact that reviewers can open from
file://or any static host without reproducing SwiftUI in a browser or reading user data.The first web shell covered the functional review path but gave little help with a large catalog. The revised shell makes groups, connected routes, capture types, build data, and long-form review controls visible without adding a web dependency.
Product behavior
Architecture
./test, validates every asset, then atomically replaces only a marked generated directory.Review focus
manifest.jsinstead offetch, which keepsfile://support and avoids all external network requests.mainand the Flyover command regression in every normal./testrun.Compatibility
The feature is DEBUG/test-only. It changes no production data, backup, persistence, or app runtime behavior. The generated artifact is disposable;
schemaVersion: 1is its compatibility boundary.Testing
./test FlyoverTests SnapshotKitTestingTests WhereUITests— 570 tests passed./flyover export --output /tmp/where-flyover-codex --profile phone-light— 50 screens, 108 states, 41 routes, 108 PNGs./flyover export --output /tmp/where-flyover-codex --profile phone-light --profile phone-dark— 50 screens, 108 states, 41 routes, 216 PNGsbash -n flyover test Shared/Flyover/Tools/Tests/flyover_test.shbash Shared/Flyover/Tools/Tests/flyover_test.sh./flyover --help./swiftformat --lint./test FlyoverTestsafter merging currentmain— 15 architecture rule tests and 51 Flyover tests passed; no architecture violations./test --everything— 1,962 unit tests and 47 snapshot tests passed before the UX-only web-shell follow-up; no snapshot references changed