Skip to content

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

Draft
kieran-osgood-shopify wants to merge 1 commit into
kieran-osgood/e2e-control-linkfrom
kieran-osgood/e2e-controller
Draft

feat(e2e): add an E2EController to each sample app#555
kieran-osgood-shopify wants to merge 1 commit into
kieran-osgood/e2e-control-linkfrom
kieran-osgood/e2e-controller

Conversation

@kieran-osgood-shopify

Copy link
Copy Markdown
Contributor

What changes are you making?

How to test


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 force-pushed the kieran-osgood/e2e-control-link branch from 7c28f96 to a3717e8 Compare August 5, 2026 11:06
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-controller branch from 5034ed1 to 71a2d87 Compare August 5, 2026 11:06
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-control-link branch from a3717e8 to 9c0c058 Compare August 5, 2026 11:35
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-controller branch from 71a2d87 to 252a4a3 Compare August 5, 2026 11:35
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-control-link branch from 9c0c058 to babcf9e Compare August 5, 2026 11:45
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-controller branch from 252a4a3 to 4d1cf32 Compare August 5, 2026 11:45
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 4d1cf32 to 1ca5d85 Compare August 5, 2026 12:33
@kieran-osgood-shopify
kieran-osgood-shopify force-pushed the kieran-osgood/e2e-control-link branch from babcf9e to 2c394fc Compare August 5, 2026 12:33
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.

1 participant