Files
self/app/package.json
Justin Hernandez fdb932eeba Feat: Lightweight e2e tests for iOS and Android (#840)
* Add Maestro e2e testing

* Run Maestro flows in parallel

* Fix mobile e2e workflow

* Fix e2e script flow path

* prettier

* fix

* prettier

* standardize yml files and new formatting commands

* fix ndk

* fix exclusions

* use double quotes for yml files

* feedback

* fixes

* fixes

* fix

* fix ios job

* unneeded

* fix workflows

* fix launch workflow

* fix

* fix pipeline

* workflow fixes

* install app to emulators

* better logging

* save current version of test script

* android works. ios wip. update locks

* fix pipelines

* cr feedback

* fix android e2e test

* Split mobile e2e workflow by platform (#842)

* Replace react-native-quick-crypto with @noble/hashes (#841)

* Add tests for ethers polyfills

* Add crypto utils

* Inline crypto polyfills into ethers util

* sort and update gemfile lock

* update lock

* chore: incrementing ios build number for version 2.6.3 [github action]

* android works. ios wip. update locks

* Specify Maestro platform

* Fix Android build step in e2e workflow

* fix android

* update ios

* add concurrency

* update Podfile.lock

* fix android

* prettier

* fix

* fix android pipeline

* try job again

* fix ios

* fix android

* fix ios

* fix command

* use android runner now that path is fixed

* fix android e2e test

* fix adb

* add caching

* fix build

* speed up build

* fix

* test emulator options

* updates

* fix pipeline

* fix

* fix script and move on

* add comment

---------

Co-authored-by: Self GitHub Actions <action@github.com>

* feedback

* fixes

* ignore for now

* ignore

* fix tests

* fix ios simulator booting

* fix ios test

* shutdown after run

* fix ios test

* better timing

* increase ios timeout

* fix both flows

* fix pipeline

* combine command

* fix ios

* break up build steps for better caching

* remove cache

* fix ios and android test pipelines

* update logic

---------

Co-authored-by: Self GitHub Actions <action@github.com>
2025-08-06 12:41:09 -07:00

193 lines
9.0 KiB
JSON

{
"name": "@selfxyz/mobile-app",
"version": "2.6.3",
"private": true,
"type": "module",
"scripts": {
"analyze:bundle:android": "node ./scripts/bundle-analyze-ci.cjs android",
"analyze:bundle:ios": "node ./scripts/bundle-analyze-ci.cjs ios",
"analyze:tree-shaking": "node ./scripts/analyze-tree-shaking.cjs imports",
"analyze:tree-shaking:web": "yarn web:build && node ./scripts/analyze-tree-shaking.cjs web",
"android": "yarn build:deps && react-native run-android",
"build:deps": "yarn workspaces foreach --from @selfxyz/mobile-app --topological --recursive run build",
"bump-version:major": "npm version major && yarn sync-versions",
"bump-version:minor": "npm version minor && yarn sync-versions",
"bump-version:patch": "npm version patch && yarn sync-versions",
"clean": "yarn clean:watchman && yarn clean:build && yarn clean:ios && yarn clean:android && yarn clean:xcode && yarn clean:pod-cache && yarn clean:node",
"clean:android": "rm -rf android/app/build android/build",
"clean:build": "rm -rf ios/build android/app/build android/build",
"clean:ios": "rm -rf ios/Pods ios/Podfile.lock Gemfile.lock",
"clean:node": "rm -rf ../node_modules app/node_modules",
"clean:pod-cache": "cd ios && pod cache clean --all && cd ..",
"clean:watchman": "watchman watch-del-all",
"clean:xcode": "rm -rf ~/Library/Developer/Xcode/DerivedData",
"clean:xcode-env-local": "rm -f ios/.xcode.env.local",
"fmt": "prettier --check .",
"fmt:fix": "prettier --write .",
"format": "yarn nice",
"ia": "yarn install-app",
"install-app": "yarn install-app:setup && cd ios && bundle install && bundle exec pod install && cd .. && yarn clean:xcode-env-local",
"install-app:mobile-deploy": "yarn install && yarn build:deps && yarn clean:xcode-env-local",
"install-app:mobile-deploy:ios": "yarn install-app:setup && yarn clean:xcode-env-local",
"install-app:setup": "yarn install && yarn build:deps && cd ios && bundle install && bundle exec pod install && cd ..",
"ios": "yarn build:deps && react-native run-ios --scheme OpenPassport",
"ios:fastlane-debug": "yarn reinstall && bundle exec fastlane --verbose ios internal_test",
"lint": "eslint .",
"lint:fix": "eslint --fix .",
"mobile-deploy": "node scripts/mobile-deploy-confirm.cjs both",
"mobile-deploy:android": "node scripts/mobile-deploy-confirm.cjs android",
"mobile-deploy:ios": "node scripts/mobile-deploy-confirm.cjs ios",
"mobile-local-deploy": "FORCE_UPLOAD_LOCAL_DEV=true node scripts/mobile-deploy-confirm.cjs both",
"mobile-local-deploy:android": "FORCE_UPLOAD_LOCAL_DEV=true node scripts/mobile-deploy-confirm.cjs android",
"mobile-local-deploy:ios": "FORCE_UPLOAD_LOCAL_DEV=true node scripts/mobile-deploy-confirm.cjs ios",
"nice": "yarn lint:fix && yarn fmt:fix",
"reinstall": "yarn clean && yarn install && yarn install-app",
"release": "./scripts/release.sh",
"release:major": "./scripts/release.sh major",
"release:minor": "./scripts/release.sh minor",
"release:patch": "./scripts/release.sh patch",
"setup": "yarn clean:build && yarn install && yarn build:deps && cd ios && bundle install && bundle exec pod install --repo-update && cd .. && yarn clean:xcode-env-local",
"start": "watchman watch-del-all && react-native start",
"sync-versions": "bundle exec fastlane ios sync_version && bundle exec fastlane android sync_version",
"tag:release": "node scripts/tag.js release",
"tag:remove": "node scripts/tag.js remove",
"test": "jest --passWithNoTests && node --test scripts/tests/*.cjs",
"test:build": "yarn build:deps && yarn web:build && yarn types && yarn analyze:bundle:ios",
"test:coverage": "jest --coverage --passWithNoTests",
"test:coverage:ci": "jest --coverage --passWithNoTests --ci --coverageReporters=lcov --coverageReporters=text --coverageReporters=json",
"test:e2e:android": "cd android && ./gradlew assembleDebug && cd .. && maestro test tests/e2e/launch.android.flow.yaml",
"test:e2e:ios": "xcodebuild -workspace ios/OpenPassport.xcworkspace -scheme OpenPassport -configuration Debug -sdk iphonesimulator -derivedDataPath ios/build && maestro test tests/e2e/launch.ios.flow.yaml",
"test:fastlane": "bundle exec ruby -Itest fastlane/test/helpers_test.rb",
"test:tree-shaking": "node ./scripts/test-tree-shaking.cjs",
"test:web-build": "jest tests/web-build-render.test.ts --testTimeout=180000",
"types": "tsc --noEmit",
"web": "vite",
"web:build": "vite build",
"web:preview": "vite preview"
},
"dependencies": {
"@babel/runtime": "^7.27.4",
"@ethersproject/shims": "^5.7.0",
"@noble/hashes": "^1.5.0",
"@openpassport/zk-kit-lean-imt": "^0.0.6",
"@openpassport/zk-kit-smt": "^0.0.1",
"@peculiar/x509": "^1.12.3",
"@react-native-async-storage/async-storage": "^2.1.1",
"@react-native-clipboard/clipboard": "1.13.2",
"@react-native-community/netinfo": "^11.4.1",
"@react-native-firebase/app": "^19.0.1",
"@react-native-firebase/messaging": "^19.0.1",
"@react-native-firebase/remote-config": "^19.0.1",
"@react-navigation/native": "^7.0.14",
"@react-navigation/native-stack": "^7.2.0",
"@robinbobin/react-native-google-drive-api-wrapper": "^2.2.3",
"@segment/analytics-react-native": "^2.21.0",
"@segment/sovran-react-native": "^1.1.3",
"@selfxyz/common": "workspace:^",
"@sentry/react": "^9.32.0",
"@sentry/react-native": "^6.10.0",
"@stablelib/cbor": "^2.0.1",
"@tamagui/animations-css": "^1.129.3",
"@tamagui/animations-react-native": "^1.129.3",
"@tamagui/config": "1.126.14",
"@tamagui/lucide-icons": "1.126.14",
"@tamagui/toast": "^1.127.2",
"@tamagui/vite-plugin": "1.126.14",
"@types/react-dom": "^19.1.6",
"@xstate/react": "^5.0.3",
"add": "^2.0.6",
"asn1js": "^3.0.5",
"country-emoji": "^1.5.6",
"country-iso-3-to-2": "^1.1.1",
"elliptic": "^6.6.1",
"ethers": "^6.11.0",
"expo-modules-core": "^2.2.1",
"js-sha512": "^0.9.0",
"lottie-react": "^2.4.1",
"lottie-react-native": "7.2.2",
"msgpack-lite": "^0.1.26",
"node-forge": "^1.3.1",
"pako": "^2.1.0",
"pkijs": "^3.2.4",
"poseidon-lite": "^0.2.0",
"react": "^18.3.1",
"react-dom": "^18.3.1",
"react-native": "0.75.4",
"react-native-app-auth": "^8.0.3",
"react-native-biometrics": "^3.0.1",
"react-native-check-version": "^1.3.0",
"react-native-cloud-storage": "^2.2.2",
"react-native-device-info": "^14.0.4",
"react-native-dotenv": "^3.4.11",
"react-native-edge-to-edge": "^1.6.2",
"react-native-gesture-handler": "2.24.0",
"react-native-get-random-values": "^1.11.0",
"react-native-haptic-feedback": "^2.3.3",
"react-native-keychain": "^10.0.0",
"react-native-localize": "^3.4.1",
"react-native-nfc-manager": "^3.15.1",
"react-native-passport-reader": "^1.0.3",
"react-native-safe-area-context": "^5.5.1",
"react-native-screens": "4.9.0",
"react-native-sqlite-storage": "^6.0.1",
"react-native-svg": "^15.11.1",
"react-native-svg-web": "^1.0.9",
"react-native-web": "^0.19.0",
"react-qr-barcode-scanner": "^2.1.7",
"socket.io-client": "^4.7.5",
"tamagui": "1.126.14",
"uuid": "^11.0.5",
"vite-plugin-svgr": "^4.3.0",
"xstate": "^5.19.2",
"zustand": "^4.5.2"
},
"devDependencies": {
"@babel/core": "^7.20.0",
"@babel/plugin-transform-private-methods": "^7.23.3",
"@react-native-community/cli": "^19.1.1",
"@react-native/babel-preset": "0.75.4",
"@react-native/eslint-config": "0.75.4",
"@react-native/gradle-plugin": "^0.79.2",
"@react-native/metro-config": "0.75.4",
"@react-native/typescript-config": "0.75.4",
"@tamagui/types": "1.126.14",
"@testing-library/react-hooks": "^8.0.1",
"@testing-library/react-native": "^13.2.0",
"@tsconfig/react-native": "^3.0.0",
"@types/add": "^2",
"@types/elliptic": "^6",
"@types/jest": "^29.5.14",
"@types/msgpack-lite": "^0.1.11",
"@types/node-forge": "^1.3.3",
"@types/pako": "^2.0.3",
"@types/react": "^18.2.6",
"@types/react-native": "^0.73.0",
"@types/react-native-dotenv": "^0.2.0",
"@types/react-native-sqlite-storage": "^6.0.5",
"@types/react-native-web": "^0",
"@types/react-test-renderer": "^18",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
"@vitejs/plugin-react-swc": "^3.10.2",
"eslint": "^8.19.0",
"eslint-config-prettier": "10.1.8",
"eslint-import-resolver-typescript": "^3.7.0",
"eslint-plugin-header": "^3.1.1",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-jest": "^28.11.1",
"eslint-plugin-prettier": "^5.2.6",
"eslint-plugin-simple-import-sort": "^12.1.1",
"jest": "^29.6.3",
"prettier": "^3.5.3",
"react-native-svg-transformer": "^1.5.0",
"react-test-renderer": "^18.3.1",
"rollup-plugin-visualizer": "^6.0.3",
"stream-browserify": "^3.0.0",
"typescript": "^5.8.3",
"vite": "^7.0.0"
},
"engines": {
"node": ">=18"
}
}