-
Notifications
You must be signed in to change notification settings - Fork 101
270 lines (265 loc) · 9.79 KB
/
e2e.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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
name: e2e
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
paths-ignore:
- "docs/**"
- "**/example/**"
- "**.md"
- "**.png"
- "**.jpg"
push:
branches:
- main
paths-ignore:
- "docs/**"
- "**/example/**"
- "**.md"
- "**.png"
- "**.jpg"
workflow_dispatch:
jobs:
android:
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8
name: Install Node.js
with:
node-version: "18"
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: "temurin"
java-version: "17"
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Gradle cache
uses: gradle/actions/setup-gradle@v3
- name: AVD cache
uses: actions/cache@v3
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-ubuntu
- uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa
with:
channel: "stable"
cache: true
- name: "Install Tools"
run: sudo npm i -g firebase-tools
- name: Firebase Emulator Cache
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84
with:
path: ~/.cache/firebase/emulators
key: firebase-emulators-v2-${{ github.run_id }}
restore-keys: firebase-emulators-v2
- uses: bluefireteam/melos-action@720a109b686f61979b4f9f0d14f582ab1637647e
with:
run-bootstrap: false
melos-version: "3.0.1"
- name: "Bootstrap package"
run: melos bootstrap --scope tests
- name: Start Firebase Emulator
run: |
cd functions/
npm i
npm run build
../scripts/start-firebase-emulator.sh
- name: E2E Tests
uses: reactivecircus/android-emulator-runner@v2
with:
working-directory: tests
api-level: 31
target: google_apis
arch: x86_64
profile: pixel_5
script: flutter test integration_test/firebase_ui_test.dart --dart-define=CI=true -d emulator-5554
ios:
runs-on: macos-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8
name: Install Node.js
with:
node-version: "18"
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: "temurin"
java-version: "11"
- name: 'Free up space'
run: |
sudo rm -rf \
/usr/local/share/.cache \
/Users/runner/Library/Caches \
/Users/runner/Library/Developer/Xcode/DerivedData \
/Users/runner/Library/Developer/CoreSimulator/Caches \
/opt/microsoft/msedge \
/opt/microsoft/powershell \
/opt/pipx \
/usr/lib/mono \
/usr/local/julia* \
/usr/local/lib/android \
/usr/local/share/chromium \
/usr/local/share/powershell \
/usr/share/dotnet
df -h /
- uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9
name: Xcode Compile Cache
with:
key: ${{ runner.os }}-ios-v3
max-size: 700M
- uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84
name: Pods Cache
id: pods-cache
with:
path: tests/ios/Pods
key: ${{ runner.os }}-pods-v3-${{ hashFiles('tests/ios/Podfile.lock') }}
restore-keys: ${{ runner.os }}-ios-pods-v2
- name: "Install Tools"
run: sudo npm i -g firebase-tools
- name: Firebase Emulator Cache
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84
with:
path: ~/.cache/firebase/emulators
key: firebase-emulators-v1-${{ github.run_id }}
restore-keys: firebase-emulators-v1
- uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa
with:
channel: "stable"
cache: true
- uses: bluefireteam/melos-action@720a109b686f61979b4f9f0d14f582ab1637647e
with:
run-bootstrap: false
melos-version: "3.0.1"
- name: "Bootstrap package"
run: melos bootstrap --scope tests
- name: Clean up previous build artifacts
run: |
rm -rf build
rm -rf .dart_tool
- name: "Build Application"
working-directory: tests
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
export CCACHE_SLOPPINESS=clang_index_store,file_stat_matches,include_file_ctime,include_file_mtime,ivfsoverlay,pch_defines,modules,system_headers,time_macros
export CCACHE_FILECLONE=true
export CCACHE_DEPEND=true
export CCACHE_INODECACHE=true
ccache -s
flutter build ios --no-codesign --simulator --debug --target=./integration_test/firebase_ui_test.dart --dart-define=CI=true
ccache -s
- name: Start Firebase Emulator and proxy
run: |
sudo chown -R 501:20 "/Users/runner/.npm"
cd functions/
npm i
npm run build
../scripts/start-firebase-emulator.sh
- name: "E2E Tests"
working-directory: tests
run: |
# Boot simulator and wait for System app to be ready.
# List of available simulators: https://github.com/actions/runner-images/blob/main/images/macos/macos-13-Readme.md#installed-simulators
SIMULATOR="iPhone 14"
xcrun simctl bootstatus "$SIMULATOR" -b
xcrun simctl logverbose "$SIMULATOR" enable
# Sleep to allow simulator to settle.
sleep 15
# Uncomment following line to have simulator logs printed out for debugging purposes.
# xcrun simctl spawn booted log stream --predicate 'eventMessage contains "flutter"' &
flutter test ./integration_test/firebase_ui_test.dart -d "$SIMULATOR" --dart-define=CI=true
macos:
runs-on: macos-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8
name: Install Node.js
with:
node-version: "18"
- uses: actions/setup-java@b36c23c0d998641eff861008f374ee103c25ac73
with:
distribution: "temurin"
java-version: "11"
- uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9
name: Xcode Compile Cache
with:
key: ${{ runner.os }}-macos-v2
max-size: 700M
- uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84
name: Pods Cache
id: pods-cache
with:
path: tests/macos/Pods
key: ${{ runner.os }}-pods-v2-${{ hashFiles('tests/macos/Podfile.lock') }}
restore-keys: ${{ runner.os }}-macos-pods-v1
- name: "Install Tools"
run: sudo npm i -g firebase-tools
- name: Cache Firebase Emulator
uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84
with:
path: ~/.cache/firebase/emulators
key: firebase-emulators-v1-${{ github.run_id }}
restore-keys: firebase-emulators-v1
- uses: subosito/flutter-action@48cafc24713cca54bbe03cdc3a423187d413aafa
with:
channel: "stable"
cache: true
- uses: bluefireteam/melos-action@720a109b686f61979b4f9f0d14f582ab1637647e
with:
run-bootstrap: false
melos-version: "3.0.1"
- name: "Bootstrap package"
run: melos bootstrap --scope tests
- name: "Build Application"
working-directory: tests
run: |
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
export CCACHE_SLOPPINESS=clang_index_store,file_stat_matches,include_file_ctime,include_file_mtime,ivfsoverlay,pch_defines,modules,system_headers,time_macros
export CCACHE_FILECLONE=true
export CCACHE_DEPEND=true
export CCACHE_INODECACHE=true
ccache -s
flutter build macos --debug --target=./integration_test/firebase_ui_test.dart --device-id=macos --dart-define=CI=true
ccache -s
- name: Start Firebase Emulator and proxy
run: |
sudo chown -R 501:20 "/Users/runner/.npm"
cd functions/
npm i
npm run build
../scripts/start-firebase-emulator.sh
- name: "E2E Tests"
working-directory: tests
run: flutter test ./integration_test/firebase_ui_test.dart -d macos --dart-define=CI=true
web:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
- uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225
with:
channel: 'stable'
cache: true
- uses: bluefireteam/melos-action@720a109b686f61979b4f9f0d14f582ab1637647e
with:
melos-version: "3.0.1"
- name: 'Build Test Applications'
run: |
cd packages/firebase_ui_auth/example
flutter build web
cd ../../firebase_ui_database/example
flutter build web
cd ../../firebase_ui_firestore/example
flutter build web
cd ../../firebase_ui_storage/example
flutter build web