From b9f9f73ac91cf8e8a6771ea5871cf070799d8b22 Mon Sep 17 00:00:00 2001 From: Mike Pitre <12040919+mikepitre@users.noreply.github.com> Date: Wed, 14 Oct 2026 13:52:50 -0400 Subject: [PATCH 1/4] test(expo): drive the expo-native fixture from verify launch inputs 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 --- .changeset/large-aliens-arrive.md | 2 + integration/templates/expo-native/App.tsx | 175 +---------- .../templates/expo-native/app.config.js | 6 + integration/templates/expo-native/app.json | 13 +- .../components/GoogleSignInButton.tsx | 13 +- .../templates/expo-native/metro.config.js | 37 +++ .../verify-launch-config/android/build.gradle | 15 + .../android/src/main/AndroidManifest.xml | 2 + .../VerifyLaunchConfigModule.kt | 34 +++ .../expo-module.config.json | 9 + .../modules/verify-launch-config/index.ts | 8 + .../ios/VerifyLaunchConfig.podspec | 18 ++ .../ios/VerifyLaunchConfigModule.swift | 48 +++ .../templates/expo-native/package.sdk-57.json | 3 +- .../expo-native/screens/AuthLogo.tsx | 24 ++ .../expo-native/screens/CustomSignIn.tsx | 75 +++++ .../expo-native/screens/CustomSignUp.tsx | 86 ++++++ .../expo-native/screens/EmbeddedProfile.tsx | 38 +++ .../templates/expo-native/screens/Home.tsx | 143 +++++++++ .../expo-native/screens/NativeModules.tsx | 16 + .../expo-native/screens/TokenCache.tsx | 31 ++ .../expo-native/screens/destinations.ts | 35 +++ .../templates/expo-native/screens/styles.ts | 22 ++ .../expo-native/verify/VerifyHost.tsx | 287 ++++++++++++++++++ .../templates/expo-native/verify/launch.ts | 65 ++++ .../templates/expo-native/verify/state.ts | 25 ++ 26 files changed, 1060 insertions(+), 170 deletions(-) create mode 100644 .changeset/large-aliens-arrive.md create mode 100644 integration/templates/expo-native/app.config.js create mode 100644 integration/templates/expo-native/metro.config.js create mode 100644 integration/templates/expo-native/modules/verify-launch-config/android/build.gradle create mode 100644 integration/templates/expo-native/modules/verify-launch-config/android/src/main/AndroidManifest.xml create mode 100644 integration/templates/expo-native/modules/verify-launch-config/android/src/main/java/expo/modules/verifylaunchconfig/VerifyLaunchConfigModule.kt create mode 100644 integration/templates/expo-native/modules/verify-launch-config/expo-module.config.json create mode 100644 integration/templates/expo-native/modules/verify-launch-config/index.ts create mode 100644 integration/templates/expo-native/modules/verify-launch-config/ios/VerifyLaunchConfig.podspec create mode 100644 integration/templates/expo-native/modules/verify-launch-config/ios/VerifyLaunchConfigModule.swift create mode 100644 integration/templates/expo-native/screens/AuthLogo.tsx create mode 100644 integration/templates/expo-native/screens/CustomSignIn.tsx create mode 100644 integration/templates/expo-native/screens/CustomSignUp.tsx create mode 100644 integration/templates/expo-native/screens/EmbeddedProfile.tsx create mode 100644 integration/templates/expo-native/screens/Home.tsx create mode 100644 integration/templates/expo-native/screens/NativeModules.tsx create mode 100644 integration/templates/expo-native/screens/TokenCache.tsx create mode 100644 integration/templates/expo-native/screens/destinations.ts create mode 100644 integration/templates/expo-native/screens/styles.ts create mode 100644 integration/templates/expo-native/verify/VerifyHost.tsx create mode 100644 integration/templates/expo-native/verify/launch.ts create mode 100644 integration/templates/expo-native/verify/state.ts diff --git a/.changeset/large-aliens-arrive.md b/.changeset/large-aliens-arrive.md new file mode 100644 index 00000000000..a845151cc84 --- /dev/null +++ b/.changeset/large-aliens-arrive.md @@ -0,0 +1,2 @@ +--- +--- diff --git a/integration/templates/expo-native/App.tsx b/integration/templates/expo-native/App.tsx index 86967b97b52..cd31678f24d 100644 --- a/integration/templates/expo-native/App.tsx +++ b/integration/templates/expo-native/App.tsx @@ -1,171 +1,18 @@ -import { ClerkProvider, useAuth, useUser } from '@clerk/expo'; -import { AuthView, UserButton, UserProfileView } from '@clerk/expo/native-components'; -import { tokenCache } from '@clerk/expo/token-cache'; -import { useState } from 'react'; -import { Button, Modal, StyleSheet, Text, View } from 'react-native'; +import { type ReactElement } from 'react'; +import { LogBox } from 'react-native'; -import { BiometricAvailabilityButton } from './components/BiometricAvailabilityButton'; -import { GoogleSignInButton } from './components/GoogleSignInButton'; +import { readVerifyLaunch } from './verify/launch'; +import { logRequests, VerifyHost } from './verify/VerifyHost'; -const publishableKey = process.env.EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY; +const verifyLaunch = readVerifyLaunch(); -if (!publishableKey) { - throw new Error('Missing EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY'); +if (verifyLaunch.runId !== null) { + LogBox.ignoreAllLogs(); } - -function NativeBuildFixture() { - const { isLoaded, isSignedIn, signOut } = useAuth({ treatPendingAsSignedOut: false }); - const { user } = useUser(); - const [isAuthOpen, setIsAuthOpen] = useState(false); - const [isProfileOpen, setIsProfileOpen] = useState(false); - const [signOutResult, setSignOutResult] = useState(null); - - if (isProfileOpen) { - return ( - - - - Rehosted RN body - - ), - }, - ]} - isDismissible={false} - onHostBack={() => setIsProfileOpen(false)} - /> - - - ); - } - - return ( - - - Clerk Expo Native Fixture - {isSignedIn && } - - - {isLoaded ? `signed ${isSignedIn ? 'in' : 'out'}` : 'loading'} - {user?.id && {user.id}} - {signOutResult && {`sign out: ${signOutResult}`}} -