Skip to content

Commit f4eff4d

Browse files
authored
devops: add bot to test Android (#4693)
1 parent 67f92be commit f4eff4d

File tree

5 files changed

+63
-20
lines changed

5 files changed

+63
-20
lines changed

.github/workflows/tests.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,3 +231,29 @@ jobs:
231231
with:
232232
name: video-${{ matrix.browser }}-linux-test-results
233233
path: test-results
234+
test_android:
235+
name: Android on macOS
236+
runs-on: macos-10.15
237+
steps:
238+
- uses: actions/checkout@v2
239+
- uses: actions/setup-node@v1
240+
with:
241+
node-version: 14
242+
- uses: microsoft/playwright-github-action@v1
243+
- run: npm ci
244+
- run: npm run build
245+
- name: Create Android Emulator
246+
run: utils/avd_recreate.sh
247+
- name: Start Android Emulator
248+
run: utils/avd_start.sh
249+
- run: npx folio test/android -p browserName=chromium --workers=1 --forbid-only --global-timeout=5400000 --retries=3 --reporter=dot,json
250+
env:
251+
FOLIO_JSON_OUTPUT_NAME: "test-results/report.json"
252+
PW_ANDROID_TESTS: 1
253+
- run: ./utils/upload_flakiness_dashboard.sh ./test-results/report.json
254+
if: always() && github.ref == 'refs/heads/master'
255+
- uses: actions/upload-artifact@v1
256+
if: ${{ always() }}
257+
with:
258+
name: android-test-results
259+
path: test-results

test/android/device.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const { it, expect } = folio;
2020
if (process.env.PW_ANDROID_TESTS) {
2121
it('should run ADB shell commands', async function({ device }) {
2222
const output = await device.shell('echo 123');
23-
expect(output).toBe('123\n');
23+
expect(output.toString()).toBe('123\n');
2424
});
2525

2626
it('should open a ADB socket', async function({ device }) {

utils/avd_install.sh

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#!/bin/bash
22

3+
set -e
4+
35
SDKDIR=$PWD/.android-sdk
46
export ANDROID_SDK_ROOT=${SDKDIR}
57
export ANDROID_HOME=${SDKDIR}
@@ -10,18 +12,18 @@ mkdir ${SDKDIR}/cmdline-tools
1012

1113
echo Downloading Android SDK...
1214
cd ${SDKDIR}/cmdline-tools
13-
curl https://dl.google.com/android/repository/commandlinetools-mac-6858069_latest.zip -o commandlinetools-mac-6858069_latest.zip
14-
unzip commandlinetools-mac-6858069_latest.zip
15+
COMMAND_LINE_TOOLS_ZIP=${SDKDIR}/commandlinetools.zip
16+
curl https://dl.google.com/android/repository/commandlinetools-mac-6858069_latest.zip -o ${COMMAND_LINE_TOOLS_ZIP}
17+
unzip ${COMMAND_LINE_TOOLS_ZIP}
18+
rm ${COMMAND_LINE_TOOLS_ZIP}
1519
mv cmdline-tools latest
20+
ln -s ${SDKDIR}/cmdline-tools/latest ${SDKDIR}/tools
1621

1722
echo Installing emulator...
18-
yes | ${SDKDIR}/cmdline-tools/latest/bin/sdkmanager platform-tools emulator
19-
20-
echo Installing system image...
21-
${SDKDIR}/cmdline-tools/latest/bin/sdkmanager "system-images;android-30;google_apis;x86"
23+
yes | ${ANDROID_HOME}/tools/bin/sdkmanager --install platform-tools emulator
2224

2325
echo Installing platform SDK...
24-
${SDKDIR}/cmdline-tools/latest/bin/sdkmanager "platforms;android-30"
26+
yes | ${ANDROID_HOME}/tools/bin/sdkmanager --install "platforms;android-30"
2527

2628
echo Starting ADB...
27-
${SDKDIR}/platform-tools/adb devices
29+
${ANDROID_HOME}/platform-tools/adb devices

utils/avd_recreate.sh

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
#!/bin/bash
22

3-
SDKDIR=$PWD/.android-sdk
4-
export ANDROID_SDK_ROOT=${SDKDIR}
5-
export ANDROID_HOME=${SDKDIR}
6-
export ANDROID_AVD_HOME=${SDKDIR}/avd
3+
set -e
74

8-
${SDKDIR}/cmdline-tools/latest/bin/avdmanager delete avd --name android30
9-
echo -ne '\n' | ${SDKDIR}/cmdline-tools/latest/bin/avdmanager create avd --name android30 --device pixel_4_xl --package "system-images;android-30;google_apis;x86"
5+
if [[ -z "${ANDROID_HOME}" ]]; then
6+
export SDKDIR=$PWD/.android-sdk
7+
export ANDROID_HOME=${SDKDIR}
8+
export ANDROID_SDK_ROOT=${SDKDIR}
9+
fi
10+
11+
${ANDROID_HOME}/tools/bin/avdmanager delete avd --name android30
12+
echo "y" | ${ANDROID_HOME}/tools/bin/sdkmanager --install "system-images;android-30;google_apis;x86"
13+
echo "no" | ${ANDROID_HOME}/tools/bin/avdmanager create avd --force --name android30 --device "Nexus 5X" -k 'system-images;android-30;google_apis;x86'
14+
${ANDROID_HOME}/emulator/emulator -list-avds

utils/avd_start.sh

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,18 @@
11
#!/bin/bash
22

3-
SDKDIR=$PWD/.android-sdk
4-
export ANDROID_SDK_ROOT=${SDKDIR}
5-
export ANDROID_HOME=${SDKDIR}
6-
export ANDROID_AVD_HOME=${SDKDIR}/avd
3+
set -e
74

8-
${SDKDIR}/emulator/emulator -avd android30 -gpu swiftshader_indirect
5+
if [[ -z "${ANDROID_HOME}" ]]; then
6+
SDKDIR=$PWD/.android-sdk
7+
export ANDROID_HOME=${SDKDIR}
8+
export ANDROID_SDK_ROOT=${SDKDIR}
9+
fi
10+
11+
echo "Killing previous emulators"
12+
adb devices | grep emulator | cut -f1 | while read line; do adb -s $line emu kill; done
13+
14+
echo "Starting emulator"
15+
nohup ${ANDROID_HOME}/emulator/emulator -avd android30 -no-audio -no-snapshot -no-window -gpu swiftshader_indirect &
16+
${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'
17+
${ANDROID_HOME}/platform-tools/adb devices
18+
echo "Emulator started"

0 commit comments

Comments
 (0)