mirror of
https://github.com/expo/examples.git
synced 2026-11-15 03:48:13 -10:00
# Why TesterArmy is adding Expo to the [e2e showcase](https://e2e.tester.army/examples) and asked for an Expo example that runs on Expo Simulators. This folder is that example. The showcase lists it by folder URL, so it lives here and installs with `npx create-expo --example with-e2e`. # How - One screen: a greeting form built with `@expo/ui` universal components inside a `GlassView` from `expo-glass-effect`, with native tabs. A second tab explains the tests. - The five tests from TesterArmy's with-expo starter: three locator tests and two agent tests that skip without `AI_GATEWAY_API_KEY`. - `e2e.config.ts` has `ios`, `android`, and `web` targets. With `E2E_IOS_BUILD_ID` or `E2E_ANDROID_BUILD_ID` set, the mobile targets run on Expo Simulators through `@e2e-dev/eas`. Without them, they drive the local simulator or emulator. The web target lets the runner pick a free port. - `eas.json` adds an `e2e` build profile. `.eas/workflows/e2e.yml` builds both platforms and runs the suite on Expo Simulators from Linux runners. - `AGENTS.md` tells coding agents to install the Expo skills and which skill to use for the screen, Expo Simulators, and the workflow. # Test Plan - [x] `tsc --noEmit` and `eslint .` pass. - [x] Fresh install of the folder (from this branch, since `create-expo --example` reads master), then the README steps: `npm run ios:release` and `npm run test:e2e:ios` on an iPhone 17 simulator (iOS 26.5). Three locator tests pass, the agent tests skip without a key. - [x] `npm run test:e2e:web` in the fresh install: three pass. - [x] `npm run android:release` and `npm run test:e2e:android` on a Pixel 9 emulator (Android 16): three pass. - [ ] The agent tests with a model key. - [ ] A run on Expo Simulators with an `e2e` profile build (`E2E_IOS_BUILD_ID`). - [ ] `eas workflow:validate` and one workflow run. Both need the project linked with `eas init`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Fable 5.1 <[email protected]> Co-authored-by: Tori Expo <[email protected]>
47 lines
1.3 KiB
JSON
47 lines
1.3 KiB
JSON
{
|
|
"name": "with-e2e",
|
|
"version": "1.0.0",
|
|
"main": "expo-router/entry",
|
|
"dependencies": {
|
|
"@expo/ui": "~58.0.25",
|
|
"expo": "~58.0.21",
|
|
"expo-constants": "~58.0.14",
|
|
"expo-glass-effect": "~58.0.5",
|
|
"expo-linking": "~58.0.15",
|
|
"expo-router": "~58.0.28",
|
|
"expo-splash-screen": "~58.0.12",
|
|
"expo-status-bar": "~58.0.4",
|
|
"expo-system-ui": "~58.0.7",
|
|
"react": "19.3.0",
|
|
"react-dom": "19.3.0",
|
|
"react-native": "0.88.1",
|
|
"react-native-gesture-handler": "~3.3.0",
|
|
"react-native-safe-area-context": "~5.10.1",
|
|
"react-native-screens": "~4.30.0",
|
|
"react-native-web": "~0.21.4"
|
|
},
|
|
"devDependencies": {
|
|
"@e2e-dev/eas": "~0.3.2",
|
|
"@e2e-dev/mobile": "~0.12.4",
|
|
"@e2e-dev/web": "~0.15.3",
|
|
"@types/node": "~26.6.6",
|
|
"@types/react": "~19.3.0",
|
|
"ai": "~7.0.156",
|
|
"e2e": "~0.21.3",
|
|
"playwright": "~1.64.1",
|
|
"typescript": "~6.0.3"
|
|
},
|
|
"scripts": {
|
|
"start": "expo start",
|
|
"android": "expo run:android",
|
|
"ios": "expo run:ios",
|
|
"web": "expo start --web",
|
|
"ios:release": "expo run:ios --configuration Release --no-bundler",
|
|
"android:release": "expo run:android --variant release --no-bundler",
|
|
"test:e2e:ios": "e2e run --target ios",
|
|
"test:e2e:android": "e2e run --target android",
|
|
"test:e2e:web": "e2e run --target web"
|
|
},
|
|
"private": true
|
|
}
|