Skip to content

ci: test debugging #676

ci: test debugging

ci: test debugging #676

Workflow file for this run

---
name: Tests
on:
- push
- pull_request
jobs:
android:
name: Android
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
api-level: [34]
rn-version: ['0.75', '0.74', '0.73']
arch: ['new', 'old']
steps:
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- uses: actions/setup-node@v4
- name: Gradle cache
uses: gradle/actions/setup-gradle@v3
with:
add-job-summary: never
# TODO: Remove this after we merge
cache-read-only: ${{ github.ref != 'refs/heads/master' && github.ref != 'refs/heads/monorepo' }}
- name: AVD Deps
run: |
sudo apt update
sudo apt-get install -y libpulse0 libgl1
# - name: SDK cache
# uses: actions/cache@v4
# id: sdk-cache
# with:
# path: |
# /usr/local/lib/android/sdk/system-images
# /usr/local/lib/android/sdk/platform-tools
# key: sdk-${{ matrix.api-level }}
- name: AVD cache
uses: actions/cache@v4
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-${{ matrix.api-level }}
- name: SDKs
run: |
$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager \
"system-images;android-${{ matrix.api-level }};default;x86_64"
$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager platform-tools
yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses
- name: Enable KVM group perms
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: Emulator
run: |
if ! $ANDROID_HOME/cmdline-tools/latest/bin/avdmanager list avd --compact | grep -q "Pixel_API_${{ matrix.api-level }}"; then
$ANDROID_HOME/cmdline-tools/latest/bin/avdmanager create avd \
-n Pixel_API_${{ matrix.api-level }} \
--device 'pixel_6_pro' \
--package "system-images;android-${{ matrix.api-level }};default;x86_64" \
--sdcard 512M
fi
$ANDROID_HOME/emulator/emulator -memory 4096 -avd Pixel_API_${{ matrix.api-level }} \
-no-metrics -wipe-data -no-window -gpu swiftshader_indirect \
-no-snapshot -no-snapshot-save -noaudio -no-boot-anim -camera-back none 2>&1 | tee /tmp/avd_log &
- name: Setup yarn
run: |
corepack enable
- name: Setup npm
uses: bahmutov/npm-install@v1
with:
install-command: yarn --immutable
- name: Build
run: |
yarn prepare
# We don't package them so remove them
rm -rf android/generated
- name: Set up RN version
run: |
cd packages/icon-explorer
./set-rn-version.sh ${{ matrix.arch }} ${{ matrix.rn-version }}
- name: Build App
run: |
cd packages/icon-explorer
yarn test:android:build
- name: ADB Wait For Device
timeout-minutes: 3
run: |
$ANDROID_HOME/platform-tools/adb wait-for-any-device
echo -n "Waiting for emulator to boot"
while [ "$($ANDROID_HOME/platform-tools/adb shell getprop sys.boot_completed | tr -d '\r')" != "1" ]; do
echo -n "."
sleep 5
done
echo "Emulator has fully booted."
# Disable the notification about immersive mode
$ANDROID_HOME/platform-tools/adb shell settings put secure immersive_mode_confirmations confirmed
- name: Run tests
timeout-minutes: 10
run: |
export PATH=$ANDROID_HOME/platform-tools:$PATH
cd packages/icon-explorer
ln -s .owl/baseline baseline-${{ matrix.arch }}
yarn test:android:run
- name: Stop Emulator
if: always()
run: |
$ANDROID_HOME/platform-tools/adb -s emulator-5554 emu kill || true
- uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-${{ matrix.arch }}-${{ matrix.rn-version }}-android
path: packages/icon-explorer/.owl
include-hidden-files: true
- uses: dorny/test-reporter@v1
if: always()
with:
name: JEST Tests android - ${{ matrix.arch }} ${{ matrix.rn-version }}
path: packages/icon-explorer/.owl/report/*.xml
reporter: jest-junit
ios:
name: iOS
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
rn-version: ['0.75', '0.74', '0.73']
arch: ['new', 'old']
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- uses: actions/setup-node@v4
- name: Setup yarn
run: |
corepack enable
- uses: bahmutov/npm-install@v1
with:
install-command: yarn --immutable
- name: Build
run: |
yarn prepare
# We don't package them so remove them
rm -rf ios/generated
- name: Set up RN version
run: |
cd packages/icon-explorer
./set-rn-version.sh ${{ matrix.arch }} ${{ matrix.rn-version }}
- name: Build App
run: |
cd packages/icon-explorer
# Work around mono repo issues with owl
mkdir -p node_modules/@johnf
cd node_modules
cp -a ../../../node_modules/@johnf/react-native-owl @johnf/
cd -
# Due to react-native-test-app not bundling
yarn build:ios:owl
if [ "${{ matrix.arch }}" = "new" ]; then
NO_FLIPPER=1 RCT_NEW_ARCH_ENABLED=1 pod update --project-directory=ios
else
NO_FLIPPER=1 RCT_NEW_ARCH_ENABLED=0 pod update --project-directory=ios
fi
yarn test:ios:build
- name: Run simulator
id: simulator
uses: futureware-tech/simulator-action@v3
with:
os: 'iOS'
os_version: "=17.5"
model: 'iPhone 15'
- name: Run tests
timeout-minutes: 10
run: |
cd packages/icon-explorer
ln -s .owl/baseline baseline-${{ matrix.arch }}
tmp=$(mktemp)
jq '.ios.device = "${{ steps.simulator.outputs.udid }}"' owl.config.json > "$tmp" && mv "$tmp" owl.config.json
yarn test:ios:run
- uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-${{ matrix.arch }}-${{ matrix.rn-version }}-ios
path: packages/icon-explorer/.owl
include-hidden-files: true
- uses: dorny/test-reporter@v1
if: always()
with:
name: JEST Tests ios - ${{ matrix.arch }} ${{ matrix.rn-version }}
path: packages/icon-explorer/.owl/report/*.xml
reporter: jest-junit