-
-
Notifications
You must be signed in to change notification settings - Fork 58
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat: upgrade and cleanup dependencies * feat: move types to optional peer dependencies * chore: align gradle.properties with template * chore: ignore all build directories from eslint * chore: reduce duplicate dependencies * refactor: align node imports * ci: align working-directory * ci: fix working-directory * ci: android try setup only in react-native-app * ci: try again with default working-directory * chore: keep jest for detox * ci: try react-native build-android command * ci: try running react-native through yarn * ci: fix jest config e2e * ci: use npx for jest e2e * chore: upgrade ios example * ci: test maestro * ci: try iPhone 15 Pro * ci: add maestro to path * ci: debug maestro * ci: test maestro path * ci: export path in test job * chore: remove detox * ci: use GITHUB_PATH * ci: remove maestro version testing * ci: setup cocoapods cache * ci: setup iOS build cache * ci: separate iOS build and test * ci: improve cache keys * ci: fix cache and upload paths * ci: keep diretory structure for app * ci: fix pods path * ci: debug pathes * ci: add Android app artifact * ci: fix artifact download path * ci: fix artifact download path * ci: add Android build cache * ci: fix android apk path * ci: try without idb * ci: add Android test * ci: use reactivecircus/android-emulator-runner@v2 * ci: fix android apk path * ci: align tests * ci: fix apk path * test: adapt e2e test for Android * ci: improve android caching * ci: add report upload * chore: ignore report.xml * ci: test android workflows on macos * ci: improve emulator setup * Revert "ci: test android workflows on macos" This reverts commit ed38256. * ci: keep default emulator setup * ci: reorder jobs * ci: list emulators * ci: cache android virtual device * ci: remove avd list * ci: align emulator versions * ci: change api-level * ci: try different profile * ci: remove sdkmanager debugging * fix: use old arch for RN example * chore: fix typo * ci: separate Android and iOS workflow for arch matrix * ci: adopt matrxi for tests * ci: move matrix to jobs * ci: shorten job names * ci: add matrix to test name * ci: Podfile.lock needs update for new arch
- Loading branch information
1 parent
deb9655
commit 047f87f
Showing
44 changed files
with
3,351 additions
and
4,875 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,2 @@ | ||
lib | ||
build |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,4 @@ | ||
module.exports = { | ||
root: true, | ||
extends: ["universe/native"], | ||
ignorePatterns: ["build"], | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,128 @@ | ||
name: Android | ||
|
||
on: | ||
workflow_call: | ||
# Review calls this Workflow | ||
|
||
jobs: | ||
build-android: | ||
name: Build ${{ matrix.new-arch && 'new' || 'old'}} Arch | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
working-directory: ./packages/react-native-app | ||
strategy: | ||
matrix: | ||
new-arch: [false, true] | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup | ||
uses: ./.github/actions/setup | ||
|
||
- name: Setup Azul Zulu OpenJDK | ||
uses: actions/setup-java@v4 | ||
with: | ||
distribution: zulu | ||
java-version: 21 | ||
cache: gradle | ||
|
||
- name: Cache Build | ||
uses: actions/cache@v4 | ||
id: android-build-cache | ||
with: | ||
path: | | ||
./android/build | ||
./packages/react-native-app/android/.gradle | ||
./packages/react-native-app/android/app/build | ||
./packages/react-native-app/android/build | ||
key: ${{ runner.os }}-android-build-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ github.workflow }}-${{ github.sha }} | ||
restore-keys: | | ||
${{ runner.os }}-android-build-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ github.workflow }}-${{ github.sha }} | ||
${{ runner.os }}-android-build-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ github.workflow }}- | ||
- name: Build | ||
if: steps.android-build-cache.outputs.cache-hit != 'true' | ||
run: yarn react-native build-android --mode release --tasks assembleRelease --extra-params "-PnewArchEnabled=${{ matrix.new-arch }}" | ||
|
||
- name: Upload App | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: android-app-${{ matrix.new-arch && 'new' || 'old' }}-arch | ||
path: ./packages/react-native-app/android/app/build/outputs/apk/release/app-release.apk | ||
|
||
test-android: | ||
name: Test ${{ matrix.new-arch && 'new' || 'old'}} Arch | ||
needs: [build-android] | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
working-directory: ./packages/react-native-app | ||
strategy: | ||
matrix: | ||
new-arch: [false, true] | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Enable KVM Group Permissions | ||
run: | | ||
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | ||
sudo udevadm control --reload-rules | ||
sudo udevadm trigger --name-match=kvm | ||
- name: Gradle cache | ||
uses: gradle/actions/setup-gradle@v3 | ||
|
||
- name: Cache Virtual Device | ||
uses: actions/cache@v4 | ||
id: android-virtual-device-cache | ||
with: | ||
path: | | ||
~/.android/avd/* | ||
~/.android/adb* | ||
key: android-virtual-device-api-level-33 | ||
|
||
- name: Create Virtual Device | ||
if: steps.android-virtual-device-cache.outputs.cache-hit != 'true' | ||
uses: reactivecircus/android-emulator-runner@v2 | ||
with: | ||
api-level: 33 | ||
target: google_apis | ||
arch: x86_64 | ||
force-avd-creation: false | ||
working-directory: ./packages/react-native-app | ||
script: echo "Generated Android Virtual Device Snapshot for Caching" | ||
|
||
- name: Install Maestro | ||
run: | | ||
curl -Ls "https://get.maestro.mobile.dev" | bash | ||
echo "$HOME/.maestro/bin" >> "$GITHUB_PATH" | ||
- name: Download App | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: android-app-${{ matrix.new-arch && 'new' || 'old' }}-arch | ||
path: ./packages/react-native-app/android/ | ||
|
||
- name: Run Tests | ||
uses: reactivecircus/android-emulator-runner@v2 | ||
with: | ||
api-level: 33 | ||
target: google_apis | ||
arch: x86_64 | ||
force-avd-creation: false | ||
working-directory: ./packages/react-native-app | ||
script: | | ||
adb install ./android/app-release.apk | ||
maestro test ./e2e/show-map.yml --format junit | ||
- name: Upload Report | ||
if: always() | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: Android Report ${{ matrix.new-arch && 'new' || 'old' }} Arch | ||
path: | | ||
./packages/react-native-app/report.xml | ||
~/.maestro/tests/**/* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
name: iOS | ||
|
||
on: | ||
workflow_call: | ||
# Review calls this Workflow | ||
|
||
jobs: | ||
build-ios: | ||
name: Build ${{ matrix.new-arch && 'new' || 'old'}} Arch | ||
runs-on: macos-latest | ||
defaults: | ||
run: | ||
working-directory: ./packages/react-native-app | ||
strategy: | ||
matrix: | ||
new-arch: [false, true] | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup | ||
uses: ./.github/actions/setup | ||
|
||
- name: Cache Cocoapods | ||
uses: actions/cache@v4 | ||
id: cocoapods-cache | ||
with: | ||
path: ./packages/react-native-app/ios/Pods | ||
key: ${{ runner.os }}-cocoapods-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ hashFiles('./packages/react-native-app/ios/Podfile.lock') }} | ||
restore-keys: | | ||
${{ runner.os }}-cocoapods-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ hashFiles('./packages/react-native-app/ios/Podfile.lock') }} | ||
${{ runner.os }}-cocoapods-${{ matrix.new-arch && 'new' || 'old' }}-arch- | ||
- name: Install Cocoapods | ||
# New Arch changes Podfile.lock so it always has to run | ||
if: matrix.new-arch || steps.cocoapods-cache.outputs.cache-hit != 'true' | ||
run: RCT_NEW_ARCH_ENABLED=${{ matrix.new-arch && '1' || '0' }} yarn pod:install | ||
|
||
- name: Cache Build | ||
uses: actions/cache@v4 | ||
id: ios-build-cache | ||
with: | ||
path: ./packages/react-native-app/ios/build | ||
key: ${{ runner.os }}-ios-build-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ github.workflow }}-${{ github.sha }} | ||
restore-keys: | | ||
${{ runner.os }}-ios-build-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ github.workflow }}-${{ github.sha }} | ||
${{ runner.os }}-ios-build-${{ matrix.new-arch && 'new' || 'old' }}-arch-${{ github.workflow }}- | ||
- name: Build | ||
if: steps.ios-build-cache.outputs.cache-hit != 'true' | ||
# Like `react-native build-ios --mode Release` but adapted for simulators | ||
run: xcodebuild -workspace ios/MapLibreReactNativeExample.xcworkspace -scheme MapLibreReactNativeExample -configuration Release -sdk iphonesimulator -derivedDataPath ios/build | ||
|
||
- name: Upload App | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: ios-app-${{ matrix.new-arch && 'new' || 'old' }}-arch | ||
# `.app` is a directory, so we have to archive one level above | ||
path: | | ||
./packages/react-native-app/ios/build/Build/Products/Release-iphonesimulator | ||
!./packages/react-native-app/ios/build/Build/Products/Release-iphonesimulator/** | ||
./packages/react-native-app/ios/build/Build/Products/Release-iphonesimulator/MapLibreReactNativeExample.app | ||
test-ios: | ||
name: Test ${{ matrix.new-arch && 'new' || 'old'}} Arch | ||
needs: [build-ios] | ||
runs-on: macos-latest | ||
defaults: | ||
run: | ||
working-directory: ./packages/react-native-app | ||
strategy: | ||
matrix: | ||
new-arch: [false, true] | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Install Maestro | ||
run: | | ||
curl -Ls "https://get.maestro.mobile.dev" | bash | ||
echo "$HOME/.maestro/bin" >> "$GITHUB_PATH" | ||
- name: Download App | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: ios-app-${{ matrix.new-arch && 'new' || 'old' }}-arch | ||
path: ./packages/react-native-app/ios | ||
|
||
- name: Run Tests | ||
run: | | ||
xcrun simctl boot "iPhone 15 Pro" | ||
xcrun simctl install booted ./ios/MapLibreReactNativeExample.app | ||
maestro test ./e2e/show-map.yml --format junit | ||
- name: Upload Report | ||
if: always() | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: iOS Report ${{ matrix.new-arch && 'new' || 'old' }} Arch | ||
path: | | ||
./packages/react-native-app/report.xml | ||
~/.maestro/tests/**/* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -91,3 +91,6 @@ packages/expo-app/android | |
|
||
# Build by bob | ||
lib/ | ||
|
||
# Maestro | ||
report.xml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
import type { Config } from "jest"; | ||
|
||
const config: Config = { | ||
preset: "@testing-library/react-native", | ||
|
||
moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json"], | ||
setupFilesAfterEnv: [ | ||
"./jest-setup.ts", | ||
"./__tests__/__mocks__/react-native.mock.ts", | ||
], | ||
modulePathIgnorePatterns: [ | ||
"<rootDir>/lib", | ||
"<rootDir>/packages/*", | ||
"__tests__/__mocks__", | ||
"fixtures", | ||
], | ||
collectCoverageFrom: ["src/**/*.{ts,tsx,js,jsx}"], | ||
}; | ||
|
||
module.exports = config; |
Oops, something went wrong.