Skip to content

Commit bb7ba46

Browse files
authored
add android functional tests on azure (#211)
1 parent d104623 commit bb7ba46

14 files changed

+339
-179
lines changed

ci-jobs/functional/android_setup.yml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
steps:
2+
- script: bash ci-jobs/functional/start-emulator.sh
3+
displayName: Create and run Emulator

ci-jobs/functional/ios_setup.yml

-15
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,5 @@
11
steps:
22
- script: sudo xcode-select -s /Applications/Xcode_${{ parameters.xcodeVersion }}.app/Contents/Developer
33
displayName: Xcode Select ${{ parameters.xcodeVersion }}
4-
- task: NodeTool@0
5-
inputs:
6-
versionSpec: 11.x
7-
displayName: Install Node 11.x
84
- script: xcrun simctl list
95
displayName: List Installed Simulators
10-
- script: npm install -g appium@beta
11-
displayName: Install appium beta
12-
- task: UseRubyVersion@0
13-
inputs:
14-
versionSpec: '2.4' # so far, bundler does not work over 2.5 since it raises openssl error
15-
- script: appium --relaxed-security &
16-
displayName: Run Appium in background
17-
- script: |
18-
gem install bundler;
19-
bundle install --retry=3 --jobs=4 --path vendor/bundle;
20-
displayName: Install Gems

ci-jobs/functional/publish_test_result.yml

+12
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,15 @@ steps:
44
inputs:
55
testResultsFiles: 'test/reports/TEST-AppiumLibCoreTest*.xml'
66
testRunTitle: ${{ parameters.title }}
7+
- task: ArchiveFiles@2
8+
condition: always()
9+
inputs:
10+
rootFolderOrFile: 'test/report'
11+
archiveType: 'zip'
12+
archiveFile: '$(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip'
13+
replaceExistingArchive: true
14+
- task: PublishBuildArtifacts@1
15+
condition: always()
16+
inputs:
17+
pathtoPublish: '$(Build.ArtifactStagingDirectory)'
18+
artifactName: 'test reports'

ci-jobs/functional/run_appium.yml

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
steps:
2+
- task: NodeTool@0
3+
inputs:
4+
versionSpec: 11.x
5+
displayName: Install Node 11.x
6+
- script: npm install -g appium@beta --chromedriver_version='2.44'
7+
displayName: Install appium beta
8+
- script: npm install -g mjpeg-consumer
9+
displayName: Install MJPEG Consumer
10+
- task: UseRubyVersion@0
11+
inputs:
12+
versionSpec: '2.4' # so far, bundler does not work over 2.5 since it raises openssl error
13+
- script: nohup appium --relaxed-security &
14+
displayName: Run Appium in background
15+
- script: |
16+
gem install bundler;
17+
bundle install --retry=3 --jobs=4 --path vendor/bundle;
18+
displayName: Install Gems

ci-jobs/functional/start-emulator.sh

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env bash
2+
3+
# This script was copy-pasted from https://docs.microsoft.com/en-us/azure/devops/pipelines/languages/android?view=azure-devops#test-on-the-android-emulator
4+
# with some changes
5+
6+
# Install AVD files
7+
declare -r emulator="system-images;android-${ANDROID_SDK_VERSION};google_apis;x86"
8+
echo "y" | ${ANDROID_HOME}/tools/bin/sdkmanager --install "$emulator"
9+
10+
# Show a list of emulators
11+
${ANDROID_HOME}/tools/bin/avdmanager list
12+
13+
# Create emulator
14+
echo "no" | ${ANDROID_HOME}/tools/bin/avdmanager create avd -d "Nexus 5X" -n testemulator -k "${emulator}" --force
15+
16+
echo ${ANDROID_HOME}/emulator/emulator -list-avds
17+
18+
echo "Starting emulator"
19+
20+
# Start emulator in background
21+
nohup ${ANDROID_HOME}/emulator/emulator -avd testemulator -no-boot-anim -no-snapshot > /dev/null 2>&1 &
22+
${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'
23+
24+
${ANDROID_HOME}/platform-tools/adb devices
25+
26+
echo "Emulator started"

ci-jobs/functional_test.yml

+125-14
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
# jobs for functional test
2+
parameters:
3+
vmImage: 'macOS-10.14'
4+
25
jobs:
36
# Run unit tests on different Node versions
47
- job: func_test_ios_base
58
pool:
6-
vmImage: 'macOS-10.14'
9+
vmImage: ${{ parameters.vmImage }}
710
variables:
8-
CI: 'true'
11+
CI: true
912
steps:
1013
- template: ./functional/ios_setup.yml
1114
parameters:
1215
xcodeVersion: 10.1
16+
- template: ./functional/run_appium.yml
1317
- script: |
1418
bundle exec rake test:func:ios TEST=test/functional/ios/driver_test.rb
1519
bundle exec rake test:func:ios TEST=test/functional/ios/patch_test.rb;
@@ -20,13 +24,14 @@ jobs:
2024

2125
- job: func_test_ios_webdriver1
2226
pool:
23-
vmImage: 'macOS-10.14'
27+
vmImage: ${{ parameters.vmImage }}
2428
variables:
25-
CI: 'true'
29+
CI: true
2630
steps:
2731
- template: ./functional/ios_setup.yml
2832
parameters:
2933
xcodeVersion: 10.1
34+
- template: ./functional/run_appium.yml
3035
- script: |
3136
bundle exec rake test:func:ios TEST=test/functional/ios/webdriver/create_session_test.rb;
3237
bundle exec rake test:func:ios TEST=test/functional/ios/webdriver/w3c_actions_test.rb
@@ -37,13 +42,14 @@ jobs:
3742

3843
- job: func_test_ios_webdriver2
3944
pool:
40-
vmImage: 'macOS-10.14'
45+
vmImage: ${{ parameters.vmImage }}
4146
variables:
42-
CI: 'true'
47+
CI: true
4348
steps:
4449
- template: ./functional/ios_setup.yml
4550
parameters:
4651
xcodeVersion: 10.1
52+
- template: ./functional/run_appium.yml
4753
- script: |
4854
bundle exec rake test:func:ios TEST=test/functional/ios/webdriver/device_test.rb;
4955
displayName: Run tests
@@ -53,13 +59,14 @@ jobs:
5359

5460
- job: func_test_ios_ios1
5561
pool:
56-
vmImage: 'macOS-10.14'
62+
vmImage: ${{ parameters.vmImage }}
5763
variables:
58-
CI: 'true'
64+
CI: true
5965
steps:
6066
- template: ./functional/ios_setup.yml
6167
parameters:
6268
xcodeVersion: 10.1
69+
- template: ./functional/run_appium.yml
6370
- script: |
6471
bundle exec rake test:func:ios TEST=test/functional/ios/ios/device_test.rb
6572
displayName: Run tests
@@ -69,13 +76,14 @@ jobs:
6976

7077
- job: func_test_ios_ios2
7178
pool:
72-
vmImage: 'macOS-10.14'
79+
vmImage: ${{ parameters.vmImage }}
7380
variables:
74-
CI: 'true'
81+
CI: true
7582
steps:
7683
- template: ./functional/ios_setup.yml
7784
parameters:
7885
xcodeVersion: 10.1
86+
- template: ./functional/run_appium.yml
7987
- script: |
8088
bundle exec rake test:func:ios TEST=test/functional/ios/ios/device_wda_attachment_test.rb;
8189
bundle exec rake test:func:ios TEST=test/functional/ios/ios/image_comparison_test.rb
@@ -86,13 +94,14 @@ jobs:
8694

8795
- job: func_test_ios_ios3
8896
pool:
89-
vmImage: 'macOS-10.14'
97+
vmImage: ${{ parameters.vmImage }}
9098
variables:
91-
CI: 'true'
99+
CI: true
92100
steps:
93101
- template: ./functional/ios_setup.yml
94102
parameters:
95103
xcodeVersion: 10.1
104+
- template: ./functional/run_appium.yml
96105
- script: |
97106
bundle exec rake test:func:ios TEST=test/functional/ios/ios/mjpeg_server_test.rb;
98107
bundle exec rake test:func:ios TEST=test/functional/ios/ios/mobile_commands_test.rb;
@@ -104,16 +113,118 @@ jobs:
104113

105114
- job: func_test_ios_tvos
106115
pool:
107-
vmImage: 'macOS-10.14'
116+
vmImage: ${{ parameters.vmImage }}
108117
variables:
109-
CI: 'true'
118+
CI: true
110119
steps:
111120
- template: ./functional/ios_setup.yml
112121
parameters:
113122
xcodeVersion: 10.2
123+
- template: ./functional/run_appium.yml
114124
- script: |
115125
bundle exec rake test:func:ios TEST=test/functional/ios/tv_driver_test.rb
116126
displayName: Run tests
117127
- template: ./functional/publish_test_result.yml
118128
parameters:
119129
xcodeVersion: 'Run_func_test_on_iOS_tv'
130+
131+
- job: func_test_android_base
132+
pool:
133+
vmImage: ${{ parameters.vmImage }}
134+
variables:
135+
CI: true
136+
ANDROID_SDK_VERSION: 28
137+
steps:
138+
- template: ./functional/android_setup.yml
139+
- template: ./functional/run_appium.yml
140+
- script: |
141+
bundle exec rake test:func:android TEST=test/functional/android/driver_test.rb;
142+
bundle exec rake test:func:android TEST=test/functional/android/patch_test.rb
143+
displayName: Run tests
144+
- template: ./functional/publish_test_result.yml
145+
parameters:
146+
xcodeVersion: 'Run_func_test_on_android_base'
147+
148+
- job: func_test_android_webdriver
149+
pool:
150+
vmImage: ${{ parameters.vmImage }}
151+
variables:
152+
CI: true
153+
ANDROID_SDK_VERSION: 28
154+
steps:
155+
- template: ./functional/android_setup.yml
156+
- template: ./functional/run_appium.yml
157+
- script: |
158+
bundle exec rake test:func:android TEST=test/functional/android/webdriver/create_session_test.rb;
159+
bundle exec rake test:func:android TEST=test/functional/android/webdriver/device_test.rb;
160+
bundle exec rake test:func:android TEST=test/functional/android/webdriver/w3c_actions_test.rb
161+
displayName: Run tests
162+
- template: ./functional/publish_test_result.yml
163+
parameters:
164+
xcodeVersion: 'Run_func_test_on_android_base'
165+
166+
- job: func_test_android_android1
167+
pool:
168+
vmImage: ${{ parameters.vmImage }}
169+
variables:
170+
CI: true
171+
ANDROID_SDK_VERSION: 28
172+
steps:
173+
- template: ./functional/android_setup.yml
174+
- template: ./functional/run_appium.yml
175+
- script: |
176+
bundle exec rake test:func:android TEST=test/functional/android/android/device_test.rb;
177+
displayName: Run tests
178+
- template: ./functional/publish_test_result.yml
179+
parameters:
180+
xcodeVersion: 'func_test_android_android1'
181+
182+
- job: func_test_android_android2
183+
pool:
184+
vmImage: ${{ parameters.vmImage }}
185+
variables:
186+
CI: true
187+
ANDROID_SDK_VERSION: 28
188+
steps:
189+
- template: ./functional/android_setup.yml
190+
- template: ./functional/run_appium.yml
191+
- script: |
192+
bundle exec rake test:func:android TEST=test/functional/android/android/image_comparison_test.rb;
193+
bundle exec rake test:func:android TEST=test/functional/android/android/mjpeg_server_test.rb;
194+
displayName: Run tests
195+
- template: ./functional/publish_test_result.yml
196+
parameters:
197+
xcodeVersion: 'func_test_android_android2'
198+
199+
- job: func_test_android_android3
200+
pool:
201+
vmImage: ${{ parameters.vmImage }}
202+
variables:
203+
CI: true
204+
ANDROID_SDK_VERSION: 28
205+
steps:
206+
- template: ./functional/android_setup.yml
207+
- template: ./functional/run_appium.yml
208+
- script: |
209+
bundle exec rake test:func:android TEST=test/functional/android/android/mobile_commands_test.rb;
210+
bundle exec rake test:func:android TEST=test/functional/android/android/search_context_test.rb
211+
displayName: Run tests
212+
- template: ./functional/publish_test_result.yml
213+
parameters:
214+
xcodeVersion: 'func_test_android_android3'
215+
216+
- job: func_test_android_android4
217+
pool:
218+
vmImage: ${{ parameters.vmImage }}
219+
variables:
220+
CI: true
221+
ANDROID_SDK_VERSION: 28
222+
steps:
223+
- template: ./functional/android_setup.yml
224+
- template: ./functional/run_appium.yml
225+
- script: |
226+
bundle exec rake test:func:android TEST=test/functional/android/android/device_data_test.rb;
227+
displayName: Run tests
228+
- template: ./functional/publish_test_result.yml
229+
parameters:
230+
xcodeVersion: 'func_test_android_android4'

0 commit comments

Comments
 (0)