Skip to content

Commit

Permalink
Migrate mobile testing to BrowserStack (#148)
Browse files Browse the repository at this point in the history
  • Loading branch information
albho authored Nov 29, 2024
1 parent 74f7a6e commit f75d286
Show file tree
Hide file tree
Showing 20 changed files with 374 additions and 272 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Android AppCenter Tests
name: Android BrowserStack Tests

on:
workflow_dispatch:
Expand All @@ -7,39 +7,38 @@ on:
paths:
- 'binding/android/OctopusTestApp/**'
- 'res/audio/**'
- '.github/workflows/android-appcenter.yml'
- '.github/workflows/android-browserstack.yml'

pull_request:
branches: [ main, 'v[0-9]+.[0-9]+' ]
paths:
- 'binding/android/OctopusTestApp/**'
- 'res/audio/**'
- '.github/workflows/android-appcenter.yml'
- '.github/workflows/android-browserstack.yml'

defaults:
run:
working-directory: binding/android/OctopusTestApp

jobs:
build:
name: Run Android Tests on AppCenter
name: Run Android Tests on BrowserStack
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Set up Node.js LTS
uses: actions/setup-node@v3
- name: Installing Python
uses: actions/setup-python@v5
with:
node-version: lts/*
python-version: '3.10'
- run:
pip3 install requests

- name: Install AppCenter CLI
run: npm install -g appcenter-cli

- name: set up JDK 11
- name: set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '11'
java-version: '17'
distribution: 'temurin'

- name: Copy test_resources
Expand All @@ -64,35 +63,34 @@ jobs:
- name: Build androidTest
run: ./gradlew assembleAndroidTest

- name: Run tests on AppCenter
run: appcenter test run espresso
--token ${{secrets.APPCENTERAPITOKEN}}
--app "Picovoice/Octopus-Android"
--devices "Picovoice/android-min-max"
--app-path octopus-test-app/build/outputs/apk/debug/octopus-test-app-debug.apk
--test-series "octopus-android"
--locale "en_US"
--build-dir octopus-test-app/build/outputs/apk/androidTest/debug
- name: Run tests on BrowserStack
run: python3 ../../../script/automation/browserstack.py
--type espresso
--username "${{secrets.BROWSERSTACK_USERNAME}}"
--access_key "${{secrets.BROWSERSTACK_ACCESS_KEY}}"
--project_name "Octopus-Android"
--devices "android-min-max"
--app_path "octopus-test-app/build/outputs/apk/debug/octopus-test-app-debug.apk"
--test_path "octopus-test-app/build/outputs/apk/androidTest/debug/octopus-test-app-debug-androidTest.apk"

build-integ:
name: Run Android Integration Tests on AppCenter
name: Run Android Integration Tests on BrowserStack
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3

- name: Set up Node.js LTS
uses: actions/setup-node@v3
- name: Installing Python
uses: actions/setup-python@v5
with:
node-version: lts/*

- name: Install AppCenter CLI
run: npm install -g appcenter-cli
python-version: '3.10'
- run:
pip3 install requests

- name: set up JDK 11
- name: set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '11'
java-version: '17'
distribution: 'temurin'

- name: Copy test_resources
Expand Down Expand Up @@ -120,13 +118,13 @@ jobs:
- name: Build androidTest
run: ./gradlew assembleReleaseAndroidTest -DtestBuildType=integ

- name: Run tests on AppCenter
run: appcenter test run espresso
--token ${{secrets.APPCENTERAPITOKEN}}
--app "Picovoice/Octopus-Android"
--devices "Picovoice/android-min-max"
--app-path octopus-test-app/build/outputs/apk/release/octopus-test-app-release.apk
--test-series "octopus-android"
--locale "en_US"
--build-dir octopus-test-app/build/outputs/apk/androidTest/release
- name: Run tests on BrowserStack
run: python3 ../../../script/automation/browserstack.py
--type espresso
--username "${{secrets.BROWSERSTACK_USERNAME}}"
--access_key "${{secrets.BROWSERSTACK_ACCESS_KEY}}"
--project_name "Octopus-Android-Integration"
--devices "android-min-max"
--app_path "octopus-test-app/build/outputs/apk/release/octopus-test-app-release.apk"
--test_path "octopus-test-app/build/outputs/apk/androidTest/release/octopus-test-app-release-androidTest.apk"

4 changes: 2 additions & 2 deletions .github/workflows/android-demos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: set up JDK 11
- name: set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '11'
java-version: '17'
distribution: 'temurin'

- name: Build
Expand Down
42 changes: 19 additions & 23 deletions .github/workflows/android-perf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,35 +22,31 @@ defaults:

jobs:
build:
name: Run Android Speed Tests on AppCenter
name: Run Android Speed Tests on BrowserStack
runs-on: ubuntu-latest

strategy:
matrix:
device: [single-android, 32bit-android]
device: [ android-perf ]
include:
- device: single-android
- device: android-perf
indexPerformanceThresholdSec: 4.0
searchPerformanceThresholdSec: 0.008
- device: 32bit-android
indexPerformanceThresholdSec: 14
searchPerformanceThresholdSec: 0.0048

steps:
- uses: actions/checkout@v3

- name: Set up Node.js LTS
uses: actions/setup-node@v3
- name: Installing Python
uses: actions/setup-python@v5
with:
node-version: lts/*
python-version: '3.10'
- run:
pip3 install requests

- name: Install AppCenter CLI
run: npm install -g appcenter-cli

- name: set up JDK 11
- name: set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '11'
java-version: '17'
distribution: 'temurin'

- name: Copy test_resources
Expand Down Expand Up @@ -87,13 +83,13 @@ jobs:
- name: Build androidTest
run: ./gradlew assembleAndroidTest -DtestBuildType=perf

- name: Run tests on AppCenter
run: appcenter test run espresso
--token ${{secrets.APPCENTERAPITOKEN}}
--app "Picovoice/Octopus-Android"
--devices "Picovoice/${{ matrix.device }}"
--app-path octopus-test-app/build/outputs/apk/debug/octopus-test-app-debug.apk
--test-series "octopus-android"
--locale "en_US"
--build-dir octopus-test-app/build/outputs/apk/androidTest/debug
- name: Run tests on BrowserStack
run: python3 ../../../script/automation/browserstack.py
--type espresso
--username "${{secrets.BROWSERSTACK_USERNAME}}"
--access_key "${{secrets.BROWSERSTACK_ACCESS_KEY}}"
--project_name "Octopus-Android-Performance"
--devices "${{ matrix.device }}"
--app_path "octopus-test-app/build/outputs/apk/debug/octopus-test-app-debug.apk"
--test_path "octopus-test-app/build/outputs/apk/androidTest/debug/octopus-test-app-debug-androidTest.apk"

73 changes: 0 additions & 73 deletions .github/workflows/ios-appcenter.yml

This file was deleted.

80 changes: 80 additions & 0 deletions .github/workflows/ios-browserstack.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: iOS BrowserStack Tests

on:
workflow_dispatch:
push:
branches: [ main ]
paths:
- 'binding/ios/OctopusAppTest/Podfile.lock'
- 'res/audio/**'
- '.github/workflows/ios-browserstack.yml'

pull_request:
branches: [ main, 'v[0-9]+.[0-9]+' ]
paths:
- 'binding/ios/OctopusAppTest/Podfile.lock'
- 'res/audio/**'
- '.github/workflows/ios-browserstack.yml'

defaults:
run:
working-directory: binding/ios/OctopusAppTest

jobs:
build:
name: Run iOS Tests on BrowserStack
runs-on: macos-latest

steps:
- name: Checkout
uses: actions/checkout@v3

- name: Installing Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
- run:
pip3 install requests

- name: Install Cocoapods
run: gem install cocoapods

- name: Make build dir
run: mkdir ddp

- name: Run Cocoapods
run: pod install

- name: Inject AccessKey
run: sed -i '.bak' 's:{TESTING_ACCESS_KEY_HERE}:${{secrets.PV_VALID_ACCESS_KEY}}:'
OctopusAppTestUITests/BaseTest.swift

- name: XCode Build
run: xcrun xcodebuild build-for-testing
-configuration Debug
-workspace OctopusAppTest.xcworkspace
-sdk iphoneos
-scheme OctopusAppTest
-derivedDataPath ddp
CODE_SIGNING_ALLOWED=NO

- name: Generating ipa
run: cd ddp/Build/Products/Debug-iphoneos/ &&
mkdir Payload &&
cp -r OctopusAppTest.app Payload &&
zip --symlinks -r OctopusAppTest.ipa Payload &&
rm -r Payload

- name: Zipping Tests
run: cd ddp/Build/Products/Debug-iphoneos/ &&
zip --symlinks -r OctopusAppTestUITests.zip OctopusAppTestUITests-Runner.app

- name: Run tests on BrowserStack
run: python3 ../../../script/automation/browserstack.py
--type xcuitest
--username "${{secrets.BROWSERSTACK_USERNAME}}"
--access_key "${{secrets.BROWSERSTACK_ACCESS_KEY}}"
--project_name "Octopus-iOS"
--devices "ios-min-max"
--app_path "ddp/Build/Products/Debug-iphoneos/OctopusAppTest.ipa"
--test_path "ddp/Build/Products/Debug-iphoneos/OctopusAppTestUITests.zip"
3 changes: 0 additions & 3 deletions .github/workflows/ios-demos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,6 @@ jobs:
- name: Install Cocoapods
run: gem install cocoapods

- name: Install AppCenter CLI
run: npm install -g appcenter-cli

- name: Make build dir
run: mkdir ddp

Expand Down
Loading

0 comments on commit f75d286

Please sign in to comment.