-
-
Notifications
You must be signed in to change notification settings - Fork 324
133 lines (117 loc) · 4.82 KB
/
saucelabs-UI-tests.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
name: Sauce Labs UI Tests
on:
# Schedule the UI tests so we can see in Sentry how the duration of transactions
# changes over time.
schedule:
- cron: '0 0 * * *'
push:
branches:
- main
pull_request:
paths:
- 'Sources/**'
- 'Tests/**'
- '.github/workflows/saucelabs-UI-tests.yml'
- 'fastlane/**'
- '.sauce/config.yml'
- 'scripts/set-device-tests-environment.patch'
- 'scripts/ci-select-xcode.sh'
# run the workflow any time an Xcode scheme changes for one of the sample apps with a UI test suite we run in saucelabs
- 'Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-SwiftUITests.xcscheme'
- 'Samples/iOS-Swift/iOS-Swift.xcodeproj/xcshareddata/xcschemes/iOS-Swift.xcscheme'
jobs:
build-ui-tests:
name: Build UITests
runs-on: ${{ matrix.runs-on }}
strategy:
matrix:
include:
- runs-on: macos-12
xcode: '13.4.1'
- runs-on: macos-13
xcode: '14.3'
steps:
- uses: actions/checkout@v3
- run: ./scripts/ci-select-xcode.sh ${{matrix.xcode}}
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Install SentryCli
run: brew install getsentry/tools/sentry-cli
- run: git apply ./scripts/set-device-tests-environment.patch
- name: Cache iOS-Swift App and dSYM build products
id: ios-swift-cache
uses: actions/cache@v3
with:
path: |
DerivedData/Build/Products/Test-iphoneos/iOS-Swift.app.dSYM
DerivedData/Build/Products/Test-iphoneos/iOS-Swift.app
key: ios-swift-for-ui-testing-cache-key-${{ hashFiles('Samples/iOS-Swift/iOS-Swift/**') }}-Xcode-${{ matrix.xcode }}-${{ hashFiles('Sources/Sentry/**') }}
- name: Cache iOS-Swift UI Test Runner App build product
id: ios-swift-uitest-runner-cache
uses: actions/cache@v3
with:
path: |
DerivedData/Build/Products/Test-iphoneos/iOS-SwiftUITests-Runner.app
key: ios-swift-for-ui-testing-cache-key-${{ hashFiles('Samples/iOS-Swift/iOS-SwiftUITests/**') }}-Xcode-${{ matrix.xcode }}
- run: bundle exec fastlane build_ios_swift_for_tests
env:
APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
APP_STORE_CONNECT_KEY: ${{ secrets.APP_STORE_CONNECT_KEY }}
FASTLANE_KEYCHAIN_PASSWORD: ${{ secrets.FASTLANE_KEYCHAIN_PASSWORD }}
MATCH_GIT_PRIVATE_KEY: ${{ secrets.MATCH_GIT_PRIVATE_KEY }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }}
- run: bundle exec fastlane build_ios_swift_ui_test
env:
APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}
APP_STORE_CONNECT_KEY: ${{ secrets.APP_STORE_CONNECT_KEY }}
FASTLANE_KEYCHAIN_PASSWORD: ${{ secrets.FASTLANE_KEYCHAIN_PASSWORD }}
MATCH_GIT_PRIVATE_KEY: ${{ secrets.MATCH_GIT_PRIVATE_KEY }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }}
- name: Upload dSYMs
run: |
sentry-cli --auth-token ${{ secrets.SENTRY_AUTH_TOKEN }} upload-dif --org sentry-sdks --project sentry-cocoa DerivedData/Build/Products/Test-iphoneos/iOS-Swift.app.dSYM
- name: Archiving DerivedData
uses: actions/upload-artifact@v3
with:
name: DerivedData-Xcode-${{matrix.xcode}}
path: |
**/Test-iphoneos/iOS-Swift.app
**/Test-iphoneos/iOS-SwiftUITests-Runner.app
run-ui-tests-with-sauce:
name: Run UI Tests for ${{ matrix.suite }} on Sauce Labs
runs-on: ubuntu-latest
needs: build-ui-tests
strategy:
fail-fast: false
matrix:
include:
- xcode: '14.3'
suite: 'iOS-16'
- xcode: '14.3'
suite: 'iOS-15'
# We want to test the frame tracker at 120 fps
- xcode: '14.3'
suite: 'iPhone-Pro'
- xcode: '14.3'
suite: 'iOS-14'
- xcode: '13.4.1'
suite: 'iOS-13'
- xcode: '13.4.1'
suite: 'iOS-12'
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: DerivedData-Xcode-${{ matrix.xcode }}
- run: npm install -g [email protected]
# As Sauce Labs is a bit flaky we retry 5 times
- name: Run Tests in SauceLab
env:
SAUCE_USERNAME: ${{ secrets.SAUCE_USERNAME }}
SAUCE_ACCESS_KEY: ${{ secrets.SAUCE_ACCESS_KEY }}
run: for i in {1..5}; do saucectl run --select-suite ${{ matrix.suite }} && break ; done