This repository has been archived by the owner on Jun 28, 2024. It is now read-only.
Convert repository to monorepo (#67) #98
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
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 |