Skip to content

feat(e2e): add an E2EController to each sample app - #555

Merged
kieran-osgood-shopify merged 1 commit into
mainfrom
kieran-osgood/e2e-controller
Aug 12, 2026
Merged

feat(e2e): add an E2EController to each sample app#555
kieran-osgood-shopify merged 1 commit into
mainfrom
kieran-osgood/e2e-controller

Conversation

@kieran-osgood-shopify

@kieran-osgood-shopify kieran-osgood-shopify commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

What changes are you making?

Previous PR added classes to handle parsing deep links for e2e scenarios
This one adds a controller for E2E that utilises the parser to receive the intent, and then dispatch the actions we need in the sample after

React Native already had most of the wiring as we set them up first so this PR brings kotlin and swift up to speed on wiring in the entry points for deep links into the E2EControlLink classes from PR #554

How to test

These things aren't wired up yet so nothing really to test, just dividing up the work


Before you merge

Important

  • I've added tests to support my implementation
  • I have read and agree with the Contribution Guidelines
  • I have read and agree with the Code of Conduct
  • I've updated the relevant platform README (platforms/swift/README.md and/or platforms/android/README.md)

Releasing a new Swift version?
  • I have bumped the version in ShopifyCheckoutKit.podspec
  • I have bumped the version in platforms/swift/Sources/ShopifyCheckoutKit/ShopifyCheckoutKit.swift
  • I have updated the SwiftPM/CocoaPods version snippets in platforms/swift/README.md (major version only)
Releasing a new Embedded Checkout Protocol version?
  • I have bumped embeddedCheckoutProtocolAndroid in platforms/android/gradle/libs.versions.toml
  • I have updated protocol/languages/kotlin/embedded-checkout-protocol/api/embedded-checkout-protocol.api if the public API changed
Releasing a new Android version?
  • I have bumped checkoutKitAndroid in platforms/android/gradle/libs.versions.toml
  • I have updated the Gradle/Maven version snippets in platforms/android/README.md

Tip

See the Contributing documentation for the full release process per platform.

@github-actions github-actions Bot added the #gsd:50662 Rebase Checkout Kit on UCP label Jul 31, 2026
@tiagocandido
tiagocandido force-pushed the kieran-osgood/e2e-control-link branch from fd87aa1 to 278ce30 Compare August 3, 2026 12:12
@tiagocandido
tiagocandido force-pushed the kieran-osgood/e2e-controller branch 2 times, most recently from c5d3696 to fe4b7c7 Compare August 3, 2026 14:42
@tiagocandido
tiagocandido force-pushed the kieran-osgood/e2e-control-link branch from 278ce30 to 66ee89d Compare August 3, 2026 14:42
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-control-link branch from 66ee89d to 7c28f96 Compare August 4, 2026 17:04
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-controller branch from fe4b7c7 to 5034ed1 Compare August 4, 2026 17:04
@kieran-osgood-shopify
kieran-osgood-shopify changed the base branch from kieran-osgood/e2e-control-link to graphite-base/555 August 6, 2026 17:06
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-controller branch from 1d9643c to 7c8c6aa Compare August 6, 2026 17:30
@kieran-osgood-shopify
kieran-osgood-shopify changed the base branch from graphite-base/555 to kieran-osgood/e2e-control-link August 6, 2026 17:30
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-control-link branch from 9a982e4 to e650dc3 Compare August 7, 2026 11:05
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-controller branch from 7c8c6aa to bb2d777 Compare August 7, 2026 11:05
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-control-link branch 2 times, most recently from ae68cf6 to a3846f6 Compare August 7, 2026 11:21
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-controller branch 2 times, most recently from be0b6ac to 5dc2272 Compare August 7, 2026 13:51
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-control-link branch 2 times, most recently from 38169bc to e746744 Compare August 10, 2026 09:08
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-controller branch from 5dc2272 to 467121c Compare August 10, 2026 09:08
@kieran-osgood-shopify
kieran-osgood-shopify marked this pull request as ready for review August 10, 2026 13:44
@kieran-osgood-shopify
kieran-osgood-shopify requested a review from a team as a code owner August 10, 2026 13:44
@github-actions

github-actions Bot commented Aug 10, 2026

Copy link
Copy Markdown

React Native — Coverage Report

Lines Statements Branches Functions
Coverage: 92%
91.64% (307/335) 88.88% (176/198) 100% (81/81)

@github-actions

github-actions Bot commented Aug 10, 2026

Copy link
Copy Markdown

Package Size

Platform Artifact Base Head Delta
React Native npm tarball 101.6 KiB 101.6 KiB 0 B
Android release AAR 281.8 KiB 281.8 KiB 0 B
React Native file breakdown
File Base Head Delta
node_modules/@shopify/checkout-kit-protocol/src/generated/Models.ts 85.4 KiB 85.4 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/Models.d.ts 53.0 KiB 53.0 KiB 0 B
ios/AcceleratedCheckoutButtons.swift 14.1 KiB 14.1 KiB 0 B
ios/ShopifyCheckoutKit.swift 13.5 KiB 13.5 KiB 0 B
src/components/AcceleratedCheckoutButtons.tsx 13.0 KiB 13.0 KiB 0 B
android/src/main/java/com/shopify/reactnative/checkoutkit/ShopifyCheckoutKitModule.java 12.8 KiB 12.8 KiB 0 B
lib/commonjs/index.js 12.3 KiB 12.3 KiB 0 B
src/index.ts 12.2 KiB 12.2 KiB 0 B
lib/commonjs/components/AcceleratedCheckoutButtons.js 11.4 KiB 11.4 KiB 0 B
lib/commonjs/components/AcceleratedCheckoutButtons.js.map 10.4 KiB 10.4 KiB 0 B
lib/module/components/AcceleratedCheckoutButtons.js 10.2 KiB 10.2 KiB 0 B
lib/module/index.js 10.2 KiB 10.2 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/ProtocolNotifications.ts 9.5 KiB 9.5 KiB 0 B
src/index.d.ts 9.1 KiB 9.1 KiB 0 B
lib/module/components/AcceleratedCheckoutButtons.js.map 9.1 KiB 9.1 KiB 0 B
src/present-dispatcher.ts 8.0 KiB 8.0 KiB 0 B
lib/module/index.js.map 7.9 KiB 7.9 KiB 0 B
lib/commonjs/index.js.map 7.7 KiB 7.7 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/ProtocolNotifications.d.ts 7.6 KiB 7.6 KiB 0 B
node_modules/@shopify/checkout-kit-protocol/src/generated/ProtocolRenameMap.ts 7.2 KiB 7.2 KiB 0 B
…and 110 smaller files
Android file breakdown
File Base Head Delta
classes.jar 297.7 KiB 297.7 KiB 0 B
res/layout/checkout_view_content.xml 2.6 KiB 2.6 KiB 0 B
res/layout/checkout_sheet_content.xml 2.0 KiB 2.0 KiB 0 B
res/values/values.xml 1.3 KiB 1.3 KiB 0 B
R.txt 1.2 KiB 1.2 KiB 0 B
AndroidManifest.xml 922 B 922 B 0 B
proguard.txt 798 B 798 B 0 B
res/drawable/close.xml 431 B 431 B 0 B
res/menu/checkout_menu.xml 354 B 354 B 0 B
META-INF/com/android/build/gradle/aar-metadata.properties 157 B 157 B 0 B

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.

@bitrise

bitrise Bot commented Aug 10, 2026

Copy link
Copy Markdown

Install this build

Open Tophat, select your target device, then click Install. Links open on the Mac running Tophat.

SDK Install
React Native Install with Tophat
Swift Install with Tophat
Kotlin Install with Tophat

Checkout Kit E2E results

Status Suite Target Platform OS version tag Device
tests/shared/launch-smoke.yaml react-native ios latest iPhone 15
iOS 27 Beta
tests/shared/launch-smoke.yaml react-native android latest Google Pixel 9
Android 17.0
tests/shared/launch-smoke.yaml kotlin android latest Google Pixel 9
Android 17.0
tests/shared/launch-smoke.yaml swift ios latest iPhone 15
iOS 27 Beta

@kyle-schellen kyle-schellen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems good to me!

@kieran-osgood-shopify
kieran-osgood-shopify changed the base branch from kieran-osgood/e2e-control-link to graphite-base/555 August 12, 2026 10:23
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-controller branch from 467121c to 6609003 Compare August 12, 2026 10:23
@graphite-app
graphite-app Bot changed the base branch from graphite-base/555 to main August 12, 2026 10:23
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-controller branch from 6609003 to d76cfa1 Compare August 12, 2026 10:23
Every E2E command now enters one controller per sample. The controller composes
existing primitives only, so E2E logic stays out of the cart, storefront and
account code that merchants read as integration guidance.

An injectable E2ECommandTarget makes the decision order testable without a
network or a UI. Eight tests per platform assert an ordered list of calls, which
pins the one rule that matters: selecting a buyer identity mode resets the cart,
so it must run before seeding.

Production code touches E2E in one named line per call site:
SceneDelegate.scene(_:openURLContexts:), MainActivity, and Routes.

Android needs two touch points, not one. Navigation state lives in Compose, so
E2ENavigation plus one E2ENavigationEffect line lets the app self-navigate to
the cart. The Maestro flow stops the app before opening the link, so a cold
start delivers the intent to onCreate; both entry points route through
E2EControlLinkHandler. The manifest gains a VIEW filter and singleTask.

Swift gains a second URL scheme, without which openURLContexts never fires.

Cart markers now match the React Native precedent on all four targets: the
button carries checkout-button, the label carries cart-checkout-ready.

signIn reports that it is not implemented yet. A later PR adds it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-controller branch from d76cfa1 to 7022342 Compare August 12, 2026 11:12
@kieran-osgood-shopify
kieran-osgood-shopify merged commit 94873ec into main Aug 12, 2026
37 checks passed
@kieran-osgood-shopify
kieran-osgood-shopify deleted the kieran-osgood/e2e-controller branch August 12, 2026 12:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

#gsd:50662 Rebase Checkout Kit on UCP

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants