Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
4f01ee4
add prettier config for example app
achou11 Apr 28, 2026
37d8bae
update example app gitignore
achou11 Apr 28, 2026
6c54d69
update example app tsconfig
achou11 Apr 28, 2026
f5987b0
install jasmine-core
achou11 Apr 28, 2026
8b108ff
update app to be a test runner
achou11 Apr 28, 2026
4567488
cleanup
achou11 Apr 28, 2026
38afa58
revert example app back to original state
achou11 Apr 28, 2026
535c549
create apps directory with testing app
achou11 Apr 28, 2026
4f5f336
add readme
achou11 Apr 29, 2026
5f2f08a
generally working
achou11 Apr 29, 2026
ef11071
Merge branch 'main' into experiments/embedded-tests
achou11 Apr 30, 2026
e0354e1
make text selectable
achou11 Apr 30, 2026
a85bd18
rename project crud test file
achou11 Apr 30, 2026
3f6fc19
minor fix to test name
achou11 Apr 30, 2026
8f8e152
improve test runner UI
achou11 Apr 30, 2026
7584ef3
fix SafeAreaView usage
achou11 Apr 30, 2026
aa551fa
minor cleanup
achou11 Apr 30, 2026
3bab930
update README
achou11 Apr 30, 2026
e85ba04
remove integration tests
achou11 Apr 30, 2026
b47ad0c
fix app.json
achou11 Apr 30, 2026
711f310
remove unnecessary npm scripts
achou11 Apr 30, 2026
0941b5d
update expo
achou11 Apr 30, 2026
56e04fa
patch ipc + rpc-reflector to fix project.close() behaviour
gmaclennan Apr 30, 2026
2017e03
fix lockfiles
achou11 Apr 30, 2026
9787fc5
properly set up dev client
achou11 Apr 30, 2026
bf611e7
Merge branch 'main' into experiments/embedded-tests
achou11 Apr 30, 2026
4f6d765
run patch-package on postinstall
achou11 Apr 30, 2026
c2875a5
Merge branch 'main' into experiments/embedded-tests
achou11 May 1, 2026
0b227a3
rename directory and app
achou11 May 4, 2026
a7d636c
update lockfile
achou11 May 4, 2026
dca716f
backend: pin patch-package
achou11 May 4, 2026
b6d5547
apps/e2e: update expo
achou11 May 4, 2026
909a2e6
apps/e2e: update expo-dev-client
achou11 May 4, 2026
22848a9
use exact version for patch-package at root
achou11 May 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions apps/e2e/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Learn more https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files

# dependencies
node_modules/

# Expo
.expo/
dist/
web-build/
expo-env.d.ts

# Native
*.orig.*
*.jks
*.p8
*.p12
*.key
*.mobileprovision

# Metro
.metro-health-check*

# debug
npm-debug.*
yarn-debug.*
yarn-error.*

# macOS
.DS_Store
*.pem

# local env files
.env*.local

# typescript
*.tsbuildinfo

# expo prebuild
/android
/ios
13 changes: 13 additions & 0 deletions apps/e2e/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# CoMapeo Core React Native Testing App

## Running tests locally

1. Run `npm backend:build` in the project _root_.

2. Run `npm run android` or `npm run ios`

3. Press the `Run tests` button in the app.

## Notes for maintainers

- `jasmine-core` dep must be pinned to v5 because v6 introduces changes that Metro + Hermes cannot handle out of the box.
27 changes: 27 additions & 0 deletions apps/e2e/app.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"expo": {
"name": "core-react-native-e2e",
"slug": "core-react-native-e2e",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/icon.png",
"userInterfaceStyle": "light",
"splash": {
"image": "./assets/splash-icon.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"ios": {
"supportsTablet": true,
"bundleIdentifier": "com.comapeo.core.e2e"
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#ffffff"
},
"package": "com.comapeo.core.e2e"
},
"plugins": [["expo-dev-client", { "launchMode": "most-recent" }]]
}
}
Binary file added apps/e2e/assets/adaptive-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/e2e/assets/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/e2e/assets/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/e2e/assets/splash-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions apps/e2e/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module.exports = function (api) {
api.cache(true)
return {
presets: ['babel-preset-expo'],
}
}
8 changes: 8 additions & 0 deletions apps/e2e/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { registerRootComponent } from 'expo'

import App from './src/App'

// registerRootComponent calls AppRegistry.registerComponent('main', () => App);
// It also ensures that whether you load the app in Expo Go or in a native build,
// the environment is set up appropriately
registerRootComponent(App)
34 changes: 34 additions & 0 deletions apps/e2e/metro.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
// Learn more https://docs.expo.io/guides/customizing-metro
const { getDefaultConfig } = require('expo/metro-config')
const path = require('path')

const config = getDefaultConfig(__dirname)

// npm v7+ will install ../node_modules/react and ../node_modules/react-native because of peerDependencies.
// To prevent the incompatible react-native between ./node_modules/react-native and ../node_modules/react-native,
// excludes the one from the parent folder when bundling.
config.resolver.blockList = [
...Array.from(config.resolver.blockList ?? []),
new RegExp(path.resolve('..', '..', 'node_modules', 'react')),
new RegExp(path.resolve('..', '..', 'node_modules', 'react-native')),
]

config.resolver.nodeModulesPaths = [
path.resolve(__dirname, './node_modules'),
path.resolve(__dirname, '..', '..', './node_modules'),
]

config.resolver.extraNodeModules = {
'@comapeo/core-react-native': '../..',
}

config.watchFolders = [path.resolve(__dirname, '..', '..')]

config.transformer.getTransformOptions = async () => ({
transform: {
experimentalImportSupport: true,
inlineRequires: true,
},
})

module.exports = config
Loading
Loading