Add local maestro runner - Run cart control-link on kotlin/swift - #558
Merged
kieran-osgood-shopify merged 1 commit intoAug 14, 2026
Merged
Conversation
This was referenced Jul 31, 2026
This was referenced Jul 31, 2026
Contributor
Author
This was referenced Jul 31, 2026
tiagocandido
force-pushed
the
kieran-osgood/e2e-matrix-tags
branch
from
August 3, 2026 12:12
8947b3c to
05b95c0
Compare
tiagocandido
force-pushed
the
kieran-osgood/e2e-cart-from-control-link
branch
2 times, most recently
from
August 3, 2026 14:42
893721f to
ecc30cc
Compare
This was referenced Aug 3, 2026
kieran-osgood-shopify
force-pushed
the
kieran-osgood/e2e-cart-from-control-link
branch
from
August 4, 2026 17:04
ecc30cc to
f3d5bf1
Compare
This was referenced Aug 4, 2026
kieran-osgood-shopify
force-pushed
the
kieran-osgood/e2e-matrix-tags
branch
from
August 5, 2026 11:06
275339e to
69fc2dd
Compare
kieran-osgood-shopify
force-pushed
the
kieran-osgood/e2e-cart-from-control-link
branch
from
August 5, 2026 11:06
f3d5bf1 to
3cb7142
Compare
kieran-osgood-shopify
force-pushed
the
kieran-osgood/e2e-cart-from-control-link
branch
from
August 12, 2026 13:50
68a47a1 to
a599103
Compare
kieran-osgood-shopify
changed the base branch from
kieran-osgood/e2e-matrix-tags
to
graphite-base/558
August 12, 2026 13:57
kieran-osgood-shopify
force-pushed
the
kieran-osgood/e2e-cart-from-control-link
branch
from
August 12, 2026 13:58
a599103 to
04a053e
Compare
kieran-osgood-shopify
force-pushed
the
graphite-base/558
branch
from
August 12, 2026 13:58
fb92dd6 to
f88ff08
Compare
kieran-osgood-shopify
changed the base branch from
graphite-base/558
to
kieran-osgood/e2e-matrix-tags
August 12, 2026 13:58
kieran-osgood-shopify
changed the base branch from
kieran-osgood/e2e-matrix-tags
to
graphite-base/558
August 12, 2026 14:33
kieran-osgood-shopify
force-pushed
the
graphite-base/558
branch
from
August 12, 2026 14:34
f88ff08 to
4a7e58f
Compare
kieran-osgood-shopify
force-pushed
the
kieran-osgood/e2e-cart-from-control-link
branch
from
August 12, 2026 14:34
04a053e to
436c2f9
Compare
kieran-osgood-shopify
force-pushed
the
kieran-osgood/e2e-cart-from-control-link
branch
2 times, most recently
from
August 12, 2026 14:37
fd81530 to
36073ce
Compare
kieran-osgood-shopify
marked this pull request as ready for review
August 12, 2026 14:42
Package Size
React Native file breakdown
Android file breakdown
Measured from the PR base SHA and PR head SHA. The file breakdown shows uncompressed sizes within each package artifact, so individual files do not sum to the compressed artifact total. This comment reports package artifact sizes only; it is not a final app binary-size report. |
kieran-osgood-shopify
force-pushed
the
kieran-osgood/e2e-cart-from-control-link
branch
from
August 12, 2026 14:45
36073ce to
0ef90cb
Compare
Install this buildOpen Tophat, select your target device, then click Install. Links open on the Mac running Tophat.
Checkout Kit E2E results
|
kieran-osgood-shopify
force-pushed
the
kieran-osgood/e2e-cart-from-control-link
branch
4 times, most recently
from
August 13, 2026 13:41
f606716 to
7848c02
Compare
kieran-osgood-shopify
force-pushed
the
kieran-osgood/e2e-cart-from-control-link
branch
from
August 14, 2026 09:34
7848c02 to
7ee2368
Compare
The first shared test that runs on Swift iOS, Kotlin Android, React Native iOS and React Native Android. It drives the `cart` control link and asserts the `cart-checkout-ready` marker, which appears only after the app parsed the link, resolved a variant, created a cart, added the line, and navigated. Adds `e2e/scripts/run_maestro`, the single Maestro invocation every local runner calls, plus `dev swift e2e` and `dev android e2e` so all four targets run locally. Verified locally: React Native iOS 23s, Swift iOS 23s, Kotlin Android 15s, React Native Android 19s. Three deliberate deviations from the plan: - `E2E_CONTROL_LINK` is derived as `<app_id>://e2e` rather than configured per application. The scheme equals the app id on all four targets, so a second copy would drift from `app_id`. - Maestro runs the workspace root, not `tests`. Maestro resolves the `flows:` glob in `config.yaml` relative to the path on the command line, so `tests` would look for `tests/tests/**` and match nothing. `tests_path` remains for tag discovery. - The flow no longer stops the app before the link. `SceneDelegate` discards a cold-start URL and Android would need launch-intent handling, so one flow line replaces native work on two platforms. The account journey needs a running app anyway. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Assisted-By: devx/62deda35-c064-4e16-99eb-02b2792eaf51
kieran-osgood-shopify
force-pushed
the
kieran-osgood/e2e-cart-from-control-link
branch
from
August 14, 2026 12:01
7ee2368 to
477a242
Compare
kyle-schellen
approved these changes
Aug 14, 2026
kieran-osgood-shopify
deleted the
kieran-osgood/e2e-cart-from-control-link
branch
August 14, 2026 14:08
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.

What changes are you making?
bootstrap-cart-from-linkonly ran on react-nativeAdds support for this to run on swift/kotlin too
How
Adds a smoke test for 558 to exercise this path on CI, as of 559 it'll be removed in favour of opting in the shared tests and moving swift/kotlin tags
There was some flakiness observed on iOS where the
clearStatewould cause the test to failIt would uninstall the app (which is how maestro handles clearing the state) but it would seemingly report success, move on to our next assertion (the ready marker appears), which held the app for its timeout, before eventually the app successfully launched but we already passed the assertion.
The workaround was to add a retry, which essentially works like this:
Before
After
Refactors to use a singular script
e2e/scripts/run_maestrowhich is a single entry point for all e2e tests to start fromTesting
Running the local wrapper we can see that it picks up the tests only for that suite
Swift

Android
Before you merge
Important
platforms/swift/README.mdand/orplatforms/android/README.md)Releasing a new Swift version?
ShopifyCheckoutKit.podspecplatforms/swift/Sources/ShopifyCheckoutKit/ShopifyCheckoutKit.swiftplatforms/swift/README.md(major version only)Releasing a new Embedded Checkout Protocol version?
embeddedCheckoutProtocolAndroidinplatforms/android/gradle/libs.versions.tomlprotocol/languages/kotlin/embedded-checkout-protocol/api/embedded-checkout-protocol.apiif the public API changedReleasing a new Android version?
checkoutKitAndroidinplatforms/android/gradle/libs.versions.tomlplatforms/android/README.mdTip
See the Contributing documentation for the full release process per platform.