feat(e2e): add the customer account checkout test on all four targets - #562
Conversation
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. |
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Install this buildOpen Tophat, select your target device, then click Install. Links open on the Mac running Tophat.
Checkout Kit E2E results
FailuresCaution These E2E checks are not yet required, so they do not block merging — but a failure may still indicate a real issue to resolve before merging.
iOS — react-native
Android — react-native
Android — kotlin
iOS — swift
|
Six tests pass locally on all four targets and fail on BrowserStack. PR #561 and PR #562 show the same two patterns, so no sample change causes them. Both patterns need the Maestro logs, which need BrowserStack access. Separate them from the flake register, because a flake gives a different result from the same code and these give the same result every run. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Assisted-By: devx/5b4b8d5b-690a-4389-841e-039723ade1da
6f86347 to
7a16bc3
Compare
0b5e09e to
260aa4a
Compare
7a16bc3 to
d854029
Compare
d854029 to
5dfb0bb
Compare
5dfb0bb to
b16294b
Compare
6437e1a to
0c65d8f
Compare
b16294b to
0075a38
Compare
The test signs a test customer in through the hosted login page, seeds a cart with the customer buyer identity, and orders. Checkout reads the contact and the saved delivery address from the account, so the test asserts the prefill instead of typing an address. Three sample repairs fall out of running it: - The Swift E2E build signed nothing, so the app carried no application-identifier and every keychain write returned -34018. The cart then dropped the customer and checkout opened as a guest. The build now signs ad hoc. - generate_android_env wrote only EMAIL and PHONE, so the Android sample used its Canadian fallbacks and the billing labels never matched. It now writes the same eleven keys as the Swift and React Native generators, and test_setup_storefront_env asserts all three. - The React Native sign-in link opened Login with no AccountHome beneath it, so goBack() left the tab and the sample landed on the catalog. The link now passes initial: false. The account credentials and the login web view user agent stay out of the repository. A run without them skips the account tag instead of failing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Assisted-By: devx/5b4b8d5b-690a-4389-841e-039723ade1da
BrowserStack answers HTTP 422 BROWSERSTACK_DUPLICATE_TAGS when one tag appears in both includeTags and excludeTags. The account skip added `account` to the exclude list and left it in the include list, so every CI row failed before it started a build. `resolve_tags` now removes the tag from the include list at the same moment it adds it to the exclude list. `run_maestro` applies the same rule locally, and it exits early when the requested tags need account credentials, because an empty include list makes Maestro run the whole suite. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Assisted-By: devx/5b4b8d5b-690a-4389-841e-039723ade1da
Two columns carried no information. `execute` is the tests folder on every row now that tags select the flows, so the Suite column read `.` four times. The column now names the include tags, and reads `all` when a row carries none. The failure heading and the missing-run label used the same value, so both change too. A row that fails before it starts a build reports no test cases. `result.json` already holds `error` and `error_class`, but the report dropped both, so a reader saw an empty row and had to open Bitrise. The report now names the class and the message above the table. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Assisted-By: devx/5b4b8d5b-690a-4389-841e-039723ade1da
Six tests pass locally on all four targets and fail on BrowserStack. PR #561 and PR #562 show the same two patterns, so no sample change causes them. Both patterns need the Maestro logs, which need BrowserStack access. Separate them from the flake register, because a flake gives a different result from the same code and these give the same result every run. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Assisted-By: devx/5b4b8d5b-690a-4389-841e-039723ade1da
Bitrise holds no address secrets, so a CI clone had no root .env, no React Native .env and no xcconfig. Every address key fell through to the Canadian default, and the generated cart carried a Toronto address into a US shop. That shop offers no delivery method for Canada, so checkout-hardcoded-buyer-identity died deep inside checkout on both Android targets. The address is the same public fixture the guest test already types, so it needs no secret. The Android sample's Gradle build carried a second copy of the same Canadian fallbacks; it now matches. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Assisted-By: devx/5b4b8d5b-690a-4389-841e-039723ade1da
Eight BrowserStack iOS builds carrying clearState failed on five different units. Three builds without it passed, two of them on units that had just failed. The fault is deterministic, so a retry cannot recover it and the removal stands on measurement rather than on one run. Also confirms flake B4. The Android sample gives a guest cart a Canadian buyer identity, while Swift and React Native take the shop market, so the Kotlin checkout renders a Canadian form against a United States fixture. The Maestro version pin moves out of this stack. #568 adds e2e/.maestro-version and makes the executor read it, so DEFAULT_MAESTRO_VERSION and its tests leave here rather than sit as a second copy of the same number. The iOS control link tests fail until #568 merges. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Assisted-By: devx/5b4b8d5b-690a-4389-841e-039723ade1da
0c65d8f to
b132a3d
Compare
0075a38 to
9571f14
Compare

What changes are you making?
How to test
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.