This repository was archived by the owner on Feb 10, 2026. It is now read-only.
FCE-2395: Implement screen sharing for live streams #1743
Workflow file for this run
This file contains hidden or 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: React Native - Android E2E tests | |
| ## This GH Action is now disabled due to issues with new Expo/RN | |
| on: | |
| push: | |
| branches: | |
| - main | |
| pull_request: | |
| branches: | |
| - main | |
| jobs: | |
| rn_e2e_android: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 40 | |
| permissions: | |
| contents: read | |
| packages: read | |
| services: | |
| fishjam: | |
| image: ghcr.io/fishjam-cloud/fishjam:0.10.0-dev | |
| credentials: | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| 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: "pixel_5" | |
| EMULATOR_DEVICE: "pixel_5" | |
| PLATFORM_VERSION: platforms;android-33 | |
| BUILD_TOOL: "build-tools;33.0.0" | |
| ANDROID_CMD: "commandlinetools-linux-10406996_latest.zip" | |
| ANDROID_APP_PATH: ${{ github.workspace | |
| }}/internal/fishjam-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: Enable Corepack | |
| run: corepack enable | |
| - name: Use Node.js and Cache Yarn Dependencies | |
| uses: actions/setup-node@v4 | |
| id: setup-node | |
| with: | |
| node-version: "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@v4 | |
| with: | |
| name: yarn-lock | |
| path: /home/runner/work/mobile-client-sdk/mobile-client-sdk/yarn.lock | |
| - name: Run yarn build | |
| run: | | |
| cd $GITHUB_WORKSPACE | |
| yarn build | |
| - name: Setup Gradle | |
| uses: gradle/actions/setup-gradle@v4 | |
| with: | |
| gradle-version: wrapper | |
| cache-read-only: false | |
| - name: Install appium | |
| run: npm i --location=global appium | |
| - name: Install UIAnimator 2 | |
| run: appium driver install uiautomator2 | |
| - name: Setup Java 17 | |
| uses: actions/setup-java@v4 | |
| with: | |
| java-version: "17" | |
| distribution: "zulu" | |
| cache: "gradle" | |
| cache-dependency-path: | | |
| /home/runner/work/mobile-client-sdk/mobile-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 "pixel_5" --device "pixel_5" --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 pixel_5 -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: Build sources (prebuild) | |
| run: | | |
| cd $GITHUB_WORKSPACE/internal/fishjam-chat/ | |
| yarn prebuild | |
| - name: Compute APK hash | |
| id: compute_apk_hash | |
| run: | | |
| echo "hash=${{ hashFiles('internal/fishjam-chat/android/app/src/**', 'internal/fishjam-chat/android/build.gradle', 'internal/fishjam-chat/android/app/build.gradle') }}" >> $GITHUB_OUTPUT | |
| - name: Restore APK from cache | |
| if: steps.compute_apk_hash.outputs.hash != '' | |
| id: restore-apk | |
| uses: actions/cache@v4 | |
| with: | |
| path: internal/fishjam-chat/android/app/build/outputs/apk/release/app-release.apk | |
| key: apk-${{ runner.os }}-${{ steps.compute_apk_hash.outputs.hash }} | |
| - name: Build release app | |
| if: steps.restore-apk.outputs.cache-hit != 'true' | |
| timeout-minutes: 20 | |
| run: | | |
| cd $GITHUB_WORKSPACE/internal/fishjam-chat/android | |
| ./gradlew assembleRelease | |
| - name: Save APK to cache | |
| if: steps.compute_apk_hash.outputs.hash != '' && steps.restore-apk.outputs.cache-hit != 'true' | |
| uses: actions/cache@v4 | |
| with: | |
| path: internal/fishjam-chat/android/app/build/outputs/apk/release/app-release.apk | |
| key: apk-${{ runner.os }}-${{ steps.compute_apk_hash.outputs.hash }} | |
| - 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/mobile-client-sdk/mobile-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/mobile-client-sdk/mobile-client-sdk/examples/webdriverio-test/logs.txt |