Skip to content

test(expo): drive the expo-native fixture from verify launch inputs - #10235

Draft
mikepitre wants to merge 5 commits into
mainfrom
mike/expo-verify-r1-fixture
Draft

mikepitre wants to merge 5 commits into
mainfrom
mike/expo-verify-r1-fixture

Conversation

@mikepitre

@mikepitre mikepitre commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Description

This is the first of four pull requests that replace the eleven of stack #10100, #10052 to #10230. It holds #10052 and the part of #10090 that changes the fixture. Every file is in its final state, as at the head of #10230, so no later pull request in this stack changes it again. #10236 sits on this one.

The expo-native fixture in integration/templates/expo-native now always renders one home, verify/VerifyHost.tsx, and reads launch inputs whose names start with verify. With them, a test starts signed in or from clean storage without tapping through a sign-in first. The home shows who is signed in, as useAuth, useUser, and useSession report it, and one button for each screen a test needs. screens/destinations.ts is the one table of those buttons. The host draws nothing on or around AuthView, UserButton, or UserProfileView. A launch with no verify input shows the same home, signed out, with the publishable key the app was built with.

The inputs are launch arguments on iOS (-verifyAuthMode signIn) and string extras on Android (--es verifyAuthMode signIn). The native module modules/verify-launch-config reads them, in under 50 lines per platform.

  • verifyAuthMode is signIn, signUp, or signInOrUp for every AuthView the home opens.
  • verifySignInTicket signs in with the ticket strategy once Clerk has loaded, before the home renders.
  • verifyStorageScope clears stored Clerk state when its value differs from the last launch. On iOS it deletes the app's generic-password keychain items and the identifier that AuthView keeps in UserDefaults. On Android it deletes the clerk_preferences and SecureStore preferences.
  • verifyPublishableKey overrides EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY.
  • verifyLogLevel debug logs each request as its method, its URL without the query, and its status.
  • verifyRunId and verifyLaunchId label the host's console lines. On iOS, verifyLaunchId also sets CLERK_E2E_MODE=1, which keeps password AutoFill off the fields of the native Clerk views.

The second commit deletes the older tests in integration/tests/expo-native/, because they drive the home that App.tsx no longer has. Their config, page objects, root scripts, the root dev dependencies e2e and @e2e-dev/mobile, scripts/resolve-instance-keys.mjs, and the steps of the Expo workflow that ran them go with them. Each of their flows has a test in #10236.

To review, read verify/VerifyHost.tsx first, then verify/launch.ts and the two files of the native module, then screens/Home.tsx. Nothing here is copied or generated, apart from three lines of pnpm-lock.yaml.

These need a decision from a reviewer:

Two smaller build changes come with it. metro.config.js watches the monorepo only when node_modules/@clerk/expo links to packages/expo, so a tarball install keeps the default config. For SDK 57 only, package.sdk-57.json adds expo-build-properties and moves expo to ~57.0.23, and app.config.js turns on ios.enableSceneSupport.

pnpm install --frozen-lockfile --lockfile-only passes on this branch. The fixture runs on a device in the device suite of #10237. That suite passed on both platforms on the tree that the top of this stack had before two review fixes in #10237, in run 38601882313 of #10230.

Checklist

  • pnpm test runs as expected.
  • pnpm build runs as expected.
  • (If applicable) JSDoc comments have been added or updated for any package exports
  • (If applicable) Documentation has been updated

Type of change

  • 🐛 Bug fix
  • 🌟 New feature
  • 🔨 Breaking change
  • 📖 Refactoring / dependency upgrade / documentation
  • other: test tooling

🤖 Generated with Claude Code

mikepitre and others added 2 commits October 14, 2026 13:52
The fixture in integration/templates/expo-native reads launch inputs whose names start with
verify, and always renders one home with a button for each screen a test needs.
modules/verify-launch-config reads the inputs on iOS and Android.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…an them

The tests in integration/tests/expo-native drove the home that the fixture no longer has. The
integration/expo-native package, later in this stack, has a test for each of their flows. The
Expo workflow keeps its native build jobs, now named Native Build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 8ef9eb4

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 0 packages

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercel Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
clerk-js-sandbox Ready Ready Preview Oct 14, 2026 8:29pm UTC
swingset Ready Ready Preview Oct 14, 2026 8:29pm UTC

Request Review

@coderabbitai

coderabbitai Bot commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@pkg-pr-new

pkg-pr-new Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

@clerk/astro

npm i https://pkg.pr.new/@clerk/astro@10235

@clerk/backend

npm i https://pkg.pr.new/@clerk/backend@10235

@clerk/chrome-extension

npm i https://pkg.pr.new/@clerk/chrome-extension@10235

@clerk/clerk-js

npm i https://pkg.pr.new/@clerk/clerk-js@10235

@clerk/electron

npm i https://pkg.pr.new/@clerk/electron@10235

@clerk/electron-passkeys

npm i https://pkg.pr.new/@clerk/electron-passkeys@10235

@clerk/eslint-plugin

npm i https://pkg.pr.new/@clerk/eslint-plugin@10235

@clerk/expo

npm i https://pkg.pr.new/@clerk/expo@10235

@clerk/expo-biometrics

npm i https://pkg.pr.new/@clerk/expo-biometrics@10235

@clerk/expo-google-signin

npm i https://pkg.pr.new/@clerk/expo-google-signin@10235

@clerk/expo-native-components

npm i https://pkg.pr.new/@clerk/expo-native-components@10235

@clerk/expo-passkeys

npm i https://pkg.pr.new/@clerk/expo-passkeys@10235

@clerk/express

npm i https://pkg.pr.new/@clerk/express@10235

@clerk/fastify

npm i https://pkg.pr.new/@clerk/fastify@10235

@clerk/hono

npm i https://pkg.pr.new/@clerk/hono@10235

@clerk/localizations

npm i https://pkg.pr.new/@clerk/localizations@10235

@clerk/mosaic

npm i https://pkg.pr.new/@clerk/mosaic@10235

@clerk/nextjs

npm i https://pkg.pr.new/@clerk/nextjs@10235

@clerk/nuxt

npm i https://pkg.pr.new/@clerk/nuxt@10235

@clerk/react

npm i https://pkg.pr.new/@clerk/react@10235

@clerk/react-router

npm i https://pkg.pr.new/@clerk/react-router@10235

@clerk/shared

npm i https://pkg.pr.new/@clerk/shared@10235

@clerk/tanstack-react-start

npm i https://pkg.pr.new/@clerk/tanstack-react-start@10235

@clerk/testing

npm i https://pkg.pr.new/@clerk/testing@10235

@clerk/ui

npm i https://pkg.pr.new/@clerk/ui@10235

@clerk/upgrade

npm i https://pkg.pr.new/@clerk/upgrade@10235

@clerk/vue

npm i https://pkg.pr.new/@clerk/vue@10235

commit: 8ef9eb4

A pull request now builds the expo-native fixture on SDK 57 only, for iOS and Android. A nightly
run on main at 07:00 UTC, which forks skip, and a manual run build SDK 54, 55, and 57. The
Gradle cache now uses its default, written only from main, because the nightly run seeds it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…sts"

This reverts commit 086447e. Expo test timing stays as it was for now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch was successfully deployed

2 active deployments
Preview – swingset — 8ef9eb46 Deployed Oct 14, 2026 by vercel[bot]
Preview – clerk-js-sandbox — 8ef9eb46 Deployed Oct 14, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant