name: Updates e2e on: workflow_dispatch: {} pull_request: paths: - .github/workflows/updates-e2e.yml - packages/expo-json-utils/** - packages/expo-manifests/** - packages/expo-modules-core/** - packages/expo-structured-headers/** - packages/expo-updates-interface/** - packages/expo-updates/** - packages/expo/android/** - packages/expo/ios/** push: branches: [main, 'sdk-*'] paths: - .github/workflows/updates-e2e.yml - packages/expo-json-utils/** - packages/expo-manifests/** - packages/expo-modules-core/** - packages/expo-structured-headers/** - packages/expo-updates-interface/** - packages/expo-updates/** - packages/expo/android/** - packages/expo/ios/** concurrency: group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} cancel-in-progress: true jobs: android: runs-on: ubuntu-latest env: UPDATES_PORT: 4747 steps: - name: ⬢ Setup Node uses: actions/setup-node@v2 with: node-version: '14.17' - name: Check out repository uses: actions/checkout@v2 with: submodules: false - name: 🔨 Use JDK 11 uses: actions/setup-java@v2 with: distribution: 'temurin' java-version: '11' - name: Get yarn cache directory path id: yarn-cache-dir-path run: echo "::set-output name=dir::$(yarn cache dir)" - uses: actions/cache@v2 with: path: ${{ steps.yarn-cache-dir-path.outputs.dir }} key: ${{ runner.os }}-yarn-${{ hashFiles('yarn.lock') }} restore-keys: | ${{ runner.os }}-yarn- - run: yarn install --frozen-lockfile - uses: actions/cache@v2 with: path: ~/.gradle/caches key: ${{ runner.os }}-gradle-${{ hashFiles('android/*.gradle*') }} restore-keys: | ${{ runner.os }}-gradle- - run: yarn global add expo-cli - run: echo "$(yarn global bin)" >> $GITHUB_PATH - name: Init new expo app working-directory: ../ run: expo-cli init updates-e2e --yes - name: Add local expo-updates and dependencies working-directory: ../updates-e2e # install expo packages (including transitive packages) locally run: yarn add file:../expo/packages/expo-updates file:../expo/packages/expo file:../expo/packages/expo-eas-client file:../expo/packages/expo-modules-core file:../expo/packages/expo-json-utils file:../expo/packages/expo-manifests file:../expo/packages/expo-structured-headers file:../expo/packages/expo-updates-interface file:../expo/packages/expo-constants file:../expo/packages/expo-file-system file:../expo/packages/expo-font file:../expo/packages/expo-keep-awake file:../expo/packages/expo-splash-screen file:../expo/packages/expo-status-bar file:../expo/packages/expo-application file:../expo/packages/expo-error-recovery - name: Setup app.config.json working-directory: ../updates-e2e run: echo "{\"name\":\"updates-e2e\",\"plugins\":[\"expo-updates\"],\"android\":{\"package\":\"dev.expo.updatese2e\"},\"ios\":{\"bundleIdentifier\":\"dev.expo.updatese2e\"}}" > app.config.json - name: Pack latest bare-minimum template as tarball for expo prebuild working-directory: templates/expo-template-bare-minimum run: npm pack --pack-destination ../../../updates-e2e/ - name: Prebuild working-directory: ../updates-e2e run: expo-cli prebuild --template expo-template-bare-minimum-*.tgz - name: Copy App.js from test fixtures working-directory: ../updates-e2e run: cp ../expo/packages/expo-updates/e2e/__tests__/fixtures/App.js . - name: Set port in App.js working-directory: ../updates-e2e run: sed -i -e "s/UPDATES_PORT/$UPDATES_PORT/" ./App.js - name: Assemble release APK working-directory: ../updates-e2e/android run: ./gradlew assembleRelease - name: Copy APK to working directory run: cp -R ../updates-e2e/android/app/build/outputs/apk artifact - name: Upload test APK artifact uses: actions/upload-artifact@v2 with: name: updates-e2e-android-apk path: artifact - name: Get test APK path id: test-apk-path working-directory: ../updates-e2e/android/app/build/outputs/apk/release run: echo "::set-output name=dir::$(pwd)" - name: Run tests env: TEST_APK_PATH: '${{ steps.test-apk-path.outputs.dir }}/app-release.apk' timeout-minutes: 30 uses: reactivecircus/android-emulator-runner@v2 with: api-level: 29 emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -no-snapshot-save script: yarn test --config e2e/jest.config.js working-directory: packages/expo-updates