Repository navigation
ci(ios): stop noise updates of the doc site screenshots - #4446
Merged
Merged
Conversation
Compare doc screenshots with a channel tolerance of 32 and a 0.25% threshold, only update a changed screenshot when last night's capture agrees, and pin the doc screenshot simulator to iPhone 17 / iOS 26.5.
This branch was previously deployed
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.
Description
The nightly doc screenshot job opens a maps-docs PR almost every night for changes nobody wants (maps-docs#32). The main source is
LineLayer/ThirdPartyVectorSource, which differs by 0.60–0.66% between any two nightly captures, just over the 0.5% threshold. This PR makes three changes:update-doc-screenshots.jsuses a channel tolerance of 32 (was 16) and a threshold of 0.25% (was 0.5%).doc-screenshotsartifact of the latest successful nightly that has one, and passes it to the script. A screenshot that differs from the docs is only updated if it also matches last night's capture. If it doesn't, it's listed under "Unstable, not updated" in the PR summary, or only in the job log when nothing else changed. Without a previous capture, the script logs that and keeps the current behaviour.E2E_MODE: doc-screenshots,pick-ios-simulator.shis pinned to iPhone 17 on iOS 26.5, the device the nightly picks today. If the runner image lacks either one, it fails and lists what the image has. Other modes still pick the newest plain iPhone.Validation against the 9 nightly artifacts from 10-26 to 11-09, using the script's metric:
Why ThirdPartyVectorSource varies: on the same simulator (iPhone 17, iOS 26.5), 10 fresh launches with a cleared tile cache, 5 with a warm cache, and 3 captured after 8 s instead of 30 s are all pixel-identical (0.000%). So it isn't GPU blending, tile load order or capture timing. All the lines are the same colour, so draw order and
lineSortKeycan't change the result either. The CI diffs are short stretches of line with Δ mostly 17–31, which is what one more or one fewer overlapping 0.6-opacity stroke produces. That points to the Mapillary tile content changing between nights, not to the renderer. I tried opacity 1.0 against simulated tile churn and it didn't reduce the diff, so the example is unchanged.Checklist
CONTRIBUTING.mdyarn generatein the root folder/exampleapp./example)Screenshot OR Video
Component to reproduce the issue you're fixing
Local-only harness used for the ThirdPartyVectorSource captures (registered as the app root, captured with
xcrun simctl io screenshotafter fresh launches). AreproVariant.jsonfile next to it sets the opacity, colour and an optional tile URL for a local proxy that drops or shifts features.