@@ -22,35 +22,76 @@ permissions:
2222 contents : read
2323
2424jobs :
25- swiftui-auth :
25+ # Package Unit Tests (standalone, no emulator needed)
26+ unit-tests :
27+ name : Package Unit Tests
2628 runs-on : macos-15
27- timeout-minutes : 60
29+ timeout-minutes : 20
2830 steps :
2931 - uses : actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
32+
33+ - name : Install xcpretty
34+ run : gem install xcpretty
35+
36+ - name : Select Xcode version
37+ run : sudo xcode-select -switch /Applications/Xcode_16.4.app/Contents/Developer
38+
39+ - name : Run FirebaseSwiftUI Package Unit Tests
40+ run : |
41+ set -o pipefail
42+ xcodebuild test \
43+ -scheme FirebaseUI-Package \
44+ -destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
45+ -enableCodeCoverage YES \
46+ -resultBundlePath FirebaseSwiftUIPackageTests.xcresult | tee FirebaseSwiftUIPackageTests.log | xcpretty --test --color --simple
47+
48+ - name : Upload test logs
49+ if : failure()
50+ uses : actions/upload-artifact@v4
51+ with :
52+ name : unit-tests-logs
53+ path : FirebaseSwiftUIPackageTests.log
54+
55+ - name : Upload test results
56+ if : failure()
57+ uses : actions/upload-artifact@v4
58+ with :
59+ name : unit-tests-results
60+ path : FirebaseSwiftUIPackageTests.xcresult
61+
62+ # Integration Tests (requires emulator)
63+ integration-tests :
64+ name : Integration Tests
65+ runs-on : macos-15
66+ timeout-minutes : 20
67+ steps :
68+ - uses : actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
69+
3070 - uses : actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
3171 name : Install Node.js 20
3272 with :
3373 node-version : ' 20'
74+
3475 - uses : actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
3576 with :
3677 distribution : ' temurin'
3778 java-version : ' 17'
79+
3880 - name : Install Firebase
39- run : |
40- sudo npm i -g firebase-tools
81+ run : sudo npm i -g firebase-tools
82+
4183 - name : Start Firebase Emulator
4284 run : |
43- sudo chown -R 501:20 "/Users/runner/.npm" && cd ./samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample && ./start-firebase-emulator.sh
85+ sudo chown -R 501:20 "/Users/runner/.npm"
86+ cd ./samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample
87+ ./start-firebase-emulator.sh
88+
4489 - name : Install xcpretty
4590 run : gem install xcpretty
91+
4692 - name : Select Xcode version
47- run : |
48- sudo xcode-select -switch /Applications/Xcode_16.4.app/Contents/Developer
49- - name : Run FirebaseSwiftUI Package Unit Tests
50- run : |
51- set -o pipefail
52- xcodebuild test -scheme FirebaseUI-Package -destination 'platform=iOS Simulator,name=iPhone 16 Pro' -enableCodeCoverage YES -resultBundlePath FirebaseSwiftUIPackageTests.xcresult | tee FirebaseSwiftUIPackageTests.log | xcpretty --test --color --simple
53- # Build for integration tests (builds app + integration test bundle)
93+ run : sudo xcode-select -switch /Applications/Xcode_16.4.app/Contents/Developer
94+
5495 - name : Build for Integration Tests
5596 run : |
5697 cd ./samples/swiftui/FirebaseSwiftUIExample
59100 -scheme FirebaseSwiftUIExampleTests \
60101 -destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
61102 -enableCodeCoverage YES | xcpretty --color --simple
62- # Run integration tests
103+
63104 - name : Run Integration Tests
64105 run : |
65106 cd ./samples/swiftui/FirebaseSwiftUIExample
@@ -69,7 +110,54 @@ jobs:
69110 -destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
70111 -enableCodeCoverage YES \
71112 -resultBundlePath FirebaseSwiftUIExampleTests.xcresult | tee FirebaseSwiftUIExampleTests.log | xcpretty --test --color --simple
72- # Build for UI tests (reuses app build, builds UI test bundle)
113+
114+ - name : Upload test logs
115+ if : failure()
116+ uses : actions/upload-artifact@v4
117+ with :
118+ name : integration-tests-logs
119+ path : samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleTests.log
120+
121+ - name : Upload test results
122+ if : failure()
123+ uses : actions/upload-artifact@v4
124+ with :
125+ name : integration-tests-results
126+ path : samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleTests.xcresult
127+
128+ # UI Tests (requires emulator)
129+ ui-tests :
130+ name : UI Tests
131+ runs-on : macos-15
132+ timeout-minutes : 30
133+ steps :
134+ - uses : actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
135+
136+ - uses : actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
137+ name : Install Node.js 20
138+ with :
139+ node-version : ' 20'
140+
141+ - uses : actions/setup-java@8df1039502a15bceb9433410b1a100fbe190c53b
142+ with :
143+ distribution : ' temurin'
144+ java-version : ' 17'
145+
146+ - name : Install Firebase
147+ run : sudo npm i -g firebase-tools
148+
149+ - name : Start Firebase Emulator
150+ run : |
151+ sudo chown -R 501:20 "/Users/runner/.npm"
152+ cd ./samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExample
153+ ./start-firebase-emulator.sh
154+
155+ - name : Install xcpretty
156+ run : gem install xcpretty
157+
158+ - name : Select Xcode version
159+ run : sudo xcode-select -switch /Applications/Xcode_16.4.app/Contents/Developer
160+
73161 - name : Build for UI Tests
74162 run : |
75163 cd ./samples/swiftui/FirebaseSwiftUIExample
78166 -scheme FirebaseSwiftUIExampleUITests \
79167 -destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
80168 -enableCodeCoverage YES | xcpretty --color --simple
81- # Run UI tests
82- - name : Run View UI Tests
169+
170+ - name : Run UI Tests
83171 run : |
84172 cd ./samples/swiftui/FirebaseSwiftUIExample
85173 set -o pipefail
@@ -90,30 +178,17 @@ jobs:
90178 -maximum-concurrent-test-simulator-destinations 2 \
91179 -enableCodeCoverage YES \
92180 -resultBundlePath FirebaseSwiftUIExampleUITests.xcresult | tee FirebaseSwiftUIExampleUITests.log | xcpretty --test --color --simple
181+
93182 - name : Upload test logs
94183 if : failure()
95184 uses : actions/upload-artifact@v4
96185 with :
97- name : swiftui-auth-test-logs
98- path : |
99- FirebaseSwiftUIPackageTests.log
100- samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleTests.log
101- samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleUITests.log
102- - name : Upload FirebaseSwiftUIExampleUITests.xcresult bundle
103- if : failure()
104- uses : actions/upload-artifact@v4
105- with :
106- name : FirebaseSwiftUIExampleUITests.xcresult
107- path : samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleUITests.xcresult
108- - name : Upload FirebaseSwiftUIExampleTests.xcresult bundle
109- if : failure()
110- uses : actions/upload-artifact@v4
111- with :
112- name : FirebaseSwiftUIExampleTests.xcresult
113- path : samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleTests.xcresult
114- - name : Upload FirebaseSwiftUIPackageTests.xcresult bundle
186+ name : ui-tests-logs
187+ path : samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleUITests.log
188+
189+ - name : Upload test results
115190 if : failure()
116191 uses : actions/upload-artifact@v4
117192 with :
118- name : FirebaseSwiftUIPackageTests.xcresult
119- path : FirebaseSwiftUIPackageTests .xcresult
193+ name : ui-tests-results
194+ path : samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleUITests .xcresult
0 commit comments