Skip to content

Commit

Permalink
test on mac-1
Browse files Browse the repository at this point in the history
  • Loading branch information
yasserfaraazkhan committed Jun 7, 2024
1 parent 4d8adf8 commit 0360160
Showing 1 changed file with 174 additions and 97 deletions.
271 changes: 174 additions & 97 deletions .github/workflows/e2e-detox-android-template.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145,133 +145,210 @@ jobs:
# name: android-build-apk-${{ github.run_id }}
# path: "android/app/build/outputs/apk/**/app-*.apk"

e2e-android:
continue-on-error: true
e2e-android-on-mac:
name: android-detox-e2e-${{ matrix.runId }}-${{ matrix.deviceName }}-${{ matrix.deviceOsVersion }}
env:
IOS: false
GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4096m"
ARCH: x86_64
DEVICE_NAME: ${{ needs.generate-specs.outputs.device_name }}
DEVICE_OS_VERSION: ${{ needs.generate-specs.outputs.device_os_version }}
runs-on: ubuntu-22.04
continue-on-error: true
runs-on: macos-latest
timeout-minutes: 15
needs:
- generate-specs
# - build-android-apk
strategy:
fail-fast: false
matrix: ${{fromJson(needs.generate-specs.outputs.specs)}}
steps:
- name: Checkout Repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Checkout
uses: actions/checkout@v1
with:
fetch-depth: 1

- name: ci/prepare-node-deps
uses: ./.github/actions/prepare-node-deps

- name: Install Java
uses: actions/setup-java@v4
with:
java-version: "17"
distribution: "adopt"
cache: "gradle"
- name: Create destination path
run: mkdir -p android/app/build/outputs/apk

- name: Download artifact
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl -L -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/mattermost/mattermost-mobile/actions/artifacts/1578521977/zip \
--output android/app/build/outputs/apk/artifact.zip
- name: Unzip artifact
run: unzip android/app/build/outputs/apk/artifact.zip -d android/app/build/outputs/apk

- name: Cleanup
run: rm android/app/build/outputs/apk/artifact.zip

- name: Download Android Emulator Image
run: |
echo "y" | $ANDROID_HOME/tools/bin/sdkmanager --install "system-images;android-29;google_apis;x86"
echo "no" | $ANDROID_HOME/tools/bin/avdmanager create avd --force --name emu --device "Nexus 5X" -k 'system-images;android-29;google_apis;x86'
$ANDROID_HOME/emulator/emulator -list-avds
- name: Android Emulator
timeout-minutes: 10
continue-on-error: true
run: |
echo "Starting emulator"
nohup $ANDROID_HOME/emulator/emulator -avd emu -no-audio -no-snapshot -no-window &
$ANDROID_HOME/platform-tools/adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do sleep 1; done; input keyevent 82'
$ANDROID_HOME/platform-tools/adb devices
echo "Emulator started"
- name: Start React Native Metro Server
run: npm run start &

- name: Install Detox Dependencies
run: cd detox && npm i

- name: Run Detox Tests
run: |
cd detox && npm run e2e:android-test -- ${{ matrix.specs }}
- name: Upload Android Test Report
if: always()
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: android-results-${{ matrix.runId }}
path: detox/artifacts

# e2e-android:
# continue-on-error: true
# name: android-detox-e2e-${{ matrix.runId }}-${{ matrix.deviceName }}-${{ matrix.deviceOsVersion }}
# env:
# IOS: false
# GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4096m"
# ARCH: x86_64
# DEVICE_NAME: ${{ needs.generate-specs.outputs.device_name }}
# DEVICE_OS_VERSION: ${{ needs.generate-specs.outputs.device_os_version }}
# runs-on: ubuntu-22.04
# needs:
# - generate-specs
# # - build-android-apk
# strategy:
# fail-fast: false
# matrix: ${{fromJson(needs.generate-specs.outputs.specs)}}
# steps:
# - name: Checkout Repository
# uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

- name: Install Java
uses: actions/setup-java@v4
with:
java-version: "17"
distribution: "adopt"
cache: "gradle"
# - name: Install Java
# uses: actions/setup-java@v4
# with:
# java-version: "17"
# distribution: "adopt"
# cache: "gradle"

- name: Create destination path
run: mkdir -p android/app/build/outputs/apk
# - name: Create destination path
# run: mkdir -p android/app/build/outputs/apk

- name: Download artifact
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
curl -L -H "Authorization: token $GITHUB_TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/mattermost/mattermost-mobile/actions/artifacts/1578521977/zip \
--output android/app/build/outputs/apk/artifact.zip
# - name: Download artifact
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: |
# curl -L -H "Authorization: token $GITHUB_TOKEN" \
# -H "Accept: application/vnd.github.v3+json" \
# https://api.github.com/repos/mattermost/mattermost-mobile/actions/artifacts/1578521977/zip \
# --output android/app/build/outputs/apk/artifact.zip

- name: Unzip artifact
run: unzip android/app/build/outputs/apk/artifact.zip -d android/app/build/outputs/apk
# - name: Unzip artifact
# run: unzip android/app/build/outputs/apk/artifact.zip -d android/app/build/outputs/apk

- name: Cleanup
run: rm android/app/build/outputs/apk/artifact.zip
# - name: Cleanup
# run: rm android/app/build/outputs/apk/artifact.zip

- name: Enable KVM
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: Enable KVM
# 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: ci/prepare-node-deps
uses: ./.github/actions/prepare-node-deps
# - name: ci/prepare-node-deps
# uses: ./.github/actions/prepare-node-deps

- name: Gradle cache
uses: gradle/actions/setup-gradle@v3
# - name: Gradle cache
# uses: gradle/actions/setup-gradle@v3

- name: Empty disk space
uses: jlumbroso/free-disk-space@main
with:
tool-cache: false
android: false
dotnet: true
haskell: true
large-packages: false
docker-images: true
swap-storage: false

- name: Install Android SDK
run: |
sudo apt-get update
sudo apt-get install -y openjdk-11-jdk wget unzip
mkdir -p $HOME/android-sdk/cmdline-tools/latest
wget https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip -O cmdline-tools.zip
unzip cmdline-tools.zip -d $HOME/android-sdk/cmdline-tools/latest
mv $HOME/android-sdk/cmdline-tools/latest/cmdline-tools/* $HOME/android-sdk/cmdline-tools/latest/
yes | $HOME/android-sdk/cmdline-tools/latest/bin/sdkmanager --licenses
$HOME/android-sdk/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-33" "system-images;android-33;default;x86_64" "emulator"
# - name: Empty disk space
# uses: jlumbroso/free-disk-space@main
# with:
# tool-cache: false
# android: false
# dotnet: true
# haskell: true
# large-packages: false
# docker-images: true
# swap-storage: false

# - name: Install Android SDK
# run: |
# sudo apt-get update
# sudo apt-get install -y openjdk-11-jdk wget unzip
# mkdir -p $HOME/android-sdk/cmdline-tools/latest
# wget https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip -O cmdline-tools.zip
# unzip cmdline-tools.zip -d $HOME/android-sdk/cmdline-tools/latest
# mv $HOME/android-sdk/cmdline-tools/latest/cmdline-tools/* $HOME/android-sdk/cmdline-tools/latest/
# yes | $HOME/android-sdk/cmdline-tools/latest/bin/sdkmanager --licenses
# $HOME/android-sdk/cmdline-tools/latest/bin/sdkmanager "platform-tools" "platforms;android-33" "system-images;android-33;default;x86_64" "emulator"

- name: Create AVD
run: |
echo no | $ANDROID_HOME/cmdline-tools/latest/bin/avdmanager create avd --force -n pixel_6_pro --abi 'default/x86_64' --package 'system-images;android-33;default;x86_64'
printf 'hw.cpu.ncore=2\n' >> $HOME/.android/avd/pixel_6_pro.avd/config.ini
# - name: Create AVD
# run: |
# echo no | $ANDROID_HOME/cmdline-tools/latest/bin/avdmanager create avd --force -n pixel_6_pro --abi 'default/x86_64' --package 'system-images;android-33;default;x86_64'
# printf 'hw.cpu.ncore=2\n' >> $HOME/.android/avd/pixel_6_pro.avd/config.ini

- name: Start emulator
run: |
$ANDROID_HOME/emulator/emulator -avd pixel_6_pro -no-snapshot -no-audio -no-boot-anim -gpu swiftshader_indirect &
adb wait-for-device
adb shell getprop sys.boot_completed
sleep 60
adb shell input keyevent 82
# - name: Start emulator
# run: |
# $ANDROID_HOME/emulator/emulator -avd pixel_6_pro -no-snapshot -no-audio -no-boot-anim -gpu swiftshader_indirect &
# adb wait-for-device
# adb shell getprop sys.boot_completed
# sleep 60
# adb shell input keyevent 82

- name: Disable animations
run: |
adb shell settings put global window_animation_scale 0.0
adb shell settings put global transition_animation_scale 0.0
adb shell settings put global animator_duration_scale 0.0
# - name: Disable animations
# run: |
# adb shell settings put global window_animation_scale 0.0
# adb shell settings put global transition_animation_scale 0.0
# adb shell settings put global animator_duration_scale 0.0

# - name: Download Android APK
# uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
# with:
# # name: android-build-apk-${{ github.run_id }}
# name: android-build-apk-9414649994
# path: android/app/build/outputs/apk/
# # - name: Download Android APK
# # uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4
# # with:
# # # name: android-build-apk-${{ github.run_id }}
# # name: android-build-apk-9414649994
# # path: android/app/build/outputs/apk/

- name: Start React Native Metro Server
run: npm run start &
# - name: Start React Native Metro Server
# run: npm run start &

- name: Install Detox Dependencies
run: cd detox && npm i
# - name: Install Detox Dependencies
# run: cd detox && npm i

- name: Run Detox Tests
run: |
cd detox && npm run e2e:android-test -- ${{ matrix.specs }}
# - name: Run Detox Tests
# run: |
# cd detox && npm run e2e:android-test -- ${{ matrix.specs }}

- name: Upload Android Test Report
if: always()
uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
with:
name: android-results-${{ matrix.runId }}
path: detox/artifacts
# - name: Upload Android Test Report
# if: always()
# uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1
# with:
# name: android-results-${{ matrix.runId }}
# path: detox/artifacts

download-e2e-results:
runs-on: ubuntu-22.04
needs:
- generate-specs
- e2e-android
- e2e-android-on-mac
steps:
- name: Checkout Repository
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
Expand Down

0 comments on commit 0360160

Please sign in to comment.