Skip to content
This repository has been archived by the owner on Jun 28, 2024. It is now read-only.

Convert repository to monorepo (#67) #98

Convert repository to monorepo (#67)

Convert repository to monorepo (#67) #98

name: e2e_android
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
e2e_android:
runs-on: ubuntu-latest
timeout-minutes: 40
services:
fishjam:
image: ghcr.io/fishjam-dev/fishjam:0.6.2
env:
FJ_CHECK_ORIGIN: false
FJ_HOST: localhost:5002
FJ_PORT: '5002'
FJ_WEBRTC_USED: true
FJ_WEBRTC_TURN_PORT_RANGE: 50000-50050
FJ_WEBRTC_TURN_IP: 127.0.0.1
FJ_WEBRTC_TURN_LISTEN_IP: 0.0.0.0
FJ_SERVER_API_TOKEN: development
ports:
- 5002:5002
- 50000-50050:50000-50050/udp
env:
ARCH: 'x86_64'
TARGET: 'default'
API_LEVEL: '33'
BUILD_TOOLS: '33.0.0'
ANDROID_API_LEVEL: android;33
ANDROID_APIS: google_apis;x86_64
EMULATOR_PACKAGE: system-images;android-33;default;x86_64
EMULATOR_NAME: 'nexus'
EMULATOR_DEVICE: 'Nexus 6'
PLATFORM_VERSION: platforms;android-33
BUILD_TOOL: 'build-tools;33.0.0'
ANDROID_CMD: 'commandlinetools-linux-10406996_latest.zip'
ANDROID_APP_PATH:
${{ github.workspace
}}/examples/video-chat/android/app/build/outputs/apk/release/app-release.apk
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Create .env file in webdriverio-test directory
run: |
echo -e "
FISHJAM_HOST_SERVER=127.0.0.1:5002
FISHJAM_HOST_MOBILE=10.0.2.2:5002
ANDROID_DEVICE_NAME=$EMULATOR_DEVICE
ANDROID_APP_PATH=$ANDROID_APP_PATH
" > $GITHUB_WORKSPACE/examples/webdriverio-test/.env
- 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: Delete unnecesary files
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- name: Install dependencies
run:
sudo apt-get update && sudo apt install -y curl sudo wget unzip bzip2
libdrm-dev libxkbcommon-dev libgbm-dev libasound-dev libnss3
libxcursor1 libpulse-dev libxshmfence-dev xauth xvfb x11vnc fluxbox
wmctrl libdbus-glib-1-2 xvfb
- name: Use Node.js
uses: actions/setup-node@v4
with:
node-version: '18.12.x'
yarn-version: '1.22.x'
cache: 'yarn'
- name: Run yarn install in root directory
run: |
cd $GITHUB_WORKSPACE
yarn install --frozen-lockfile
- name: Upload yarn.lock artifact
uses: actions/upload-artifact@v3
with:
name: yarn-lock
path: |
/home/runner/work/react-native-client-sdk/react-native-client-sdk/yarn.lock
- name: Run yarn build
run: |
cd $GITHUB_WORKSPACE
yarn build
- name: Install appium
run: npm i --location=global appium
- name: Install UIAnimator 2
run: appium driver install uiautomator2
- name: Setup Java 18
uses: actions/setup-java@v4
with:
java-version: '18'
distribution: 'zulu'
cache: 'gradle'
cache-dependency-path: |
/home/runner/work/react-native-client-sdk/react-native-client-sdk/yarn.lock
- name: Setup Android SDK
uses: android-actions/setup-android@v3
with:
cmdline-tools-version: 8512546
- name: Accept licenses
run: echo "y" | sdkmanager --licenses
- name: Install emulator
run: echo "y" | sdkmanager --verbose --no_https $EMULATOR_PACKAGE
- name: Install platform version
run: echo "y" | sdkmanager --verbose --no_https $PLATFORM_VERSION
- name: Install build tool
run: echo "y" | sdkmanager --verbose --no_https $BUILD_TOOL
- name: Setup environment and create AVD
run:
echo "y" | avdmanager --verbose create avd --force --name "nexus"
--device "Nexus 6" --package "$EMULATOR_PACKAGE"
- name: Start emulator
timeout-minutes: 10
run: |
/usr/local/lib/android/sdk/tools/emulator -list-avds
echo "Starting emulator and waiting for boot to complete...."
xvfb-run -a /usr/local/lib/android/sdk/tools/emulator -avd nexus -grpc 8554 -camera-back emulated -camera-front emulated -no-boot-anim &
while [ "`adb shell getprop sys.boot_completed | tr -d '\r'`" != "1" ]; do echo "Waiting for emulator boot..."; sleep 5; done
adb wait-for-device
echo "Emulator has finished booting"
adb devices
sleep 10
- name: Try to restore last apk
id: restore-apk
uses: ./.github/actions/restore_apk_file
- name: Build release app
if: steps.restore-apk.outputs.cache-hit != 'true'
timeout-minutes: 20
run: |
cd $GITHUB_WORKSPACE/examples/video-chat/android
./gradlew assembleRelease
- name: Cache new apk if necessary
if: steps.restore-apk.outputs.cache-hit != 'true'
uses: ./.github/actions/cache_apk_file
- name: Logs from app to file
run: |
cd $GITHUB_WORKSPACE/examples/webdriverio-test
adb -e logcat "*:S" ReactNative:V ReactNativeJS:V > logs.txt &
- name: Run tests
run: |
cd $GITHUB_WORKSPACE/examples/webdriverio-test
npx wdio wdio.conf.ts 2>&1 | tee appium.txt; test ${PIPESTATUS[0]} -eq 0
sleep 10
- name: Upload test output
if: always()
uses: actions/upload-artifact@v4
with:
name: appium.txt
path: /home/runner/work/react-native-client-sdk/react-native-client-sdk/examples/webdriverio-test/appium.txt
- name: Upload logs from app
if: always()
uses: actions/upload-artifact@v4
with:
name: logs.txt
path: /home/runner/work/react-native-client-sdk/react-native-client-sdk/examples/webdriverio-test/logs.txt