@@ -2,14 +2,14 @@ name: SwiftUI Auth
22
33on :
44 push :
5- branches : [ main ]
5+ branches : [ main, development ]
66 paths :
77 - ' .github/workflows/swiftui-auth.yml'
88 - ' samples/swiftui/**'
99 - ' FirebaseSwiftUI/**'
1010 - ' Package.swift'
1111 pull_request :
12- branches : [ main ]
12+ branches : [ main, development ]
1313 paths :
1414 - ' .github/workflows/swiftui-auth.yml'
1515 - ' samples/swiftui/**'
@@ -22,57 +22,173 @@ 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 : 30
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.3.app/Contents/Developer
49- - name : Run Integration Tests
93+ run : sudo xcode-select -switch /Applications/Xcode_16.4.app/Contents/Developer
94+
95+ - name : Build for Integration Tests
5096 run : |
5197 cd ./samples/swiftui/FirebaseSwiftUIExample
5298 set -o pipefail
53- xcodebuild test -scheme FirebaseSwiftUIExampleTests -destination 'platform=iOS Simulator,name=iPhone 16 Pro' -enableCodeCoverage YES -resultBundlePath FirebaseSwiftUIExampleTests.xcresult | tee FirebaseSwiftUIExampleTests.log | xcpretty --test --color --simple
54- - name : Run View UI Tests
99+ xcodebuild build-for-testing \
100+ -scheme FirebaseSwiftUIExampleTests \
101+ -destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
102+ -enableCodeCoverage YES | xcpretty --color --simple
103+
104+ - name : Run Integration Tests
55105 run : |
56106 cd ./samples/swiftui/FirebaseSwiftUIExample
57107 set -o pipefail
58- xcodebuild test -scheme FirebaseSwiftUIExampleUITests -destination 'platform=iOS Simulator,name=iPhone 16 Pro' -enableCodeCoverage YES -resultBundlePath FirebaseSwiftUIExampleUITests.xcresult | tee FirebaseSwiftUIExampleUITests.log | xcpretty --test --color --simple
108+ xcodebuild test-without-building \
109+ -scheme FirebaseSwiftUIExampleTests \
110+ -destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
111+ -enableCodeCoverage YES \
112+ -resultBundlePath FirebaseSwiftUIExampleTests.xcresult | tee FirebaseSwiftUIExampleTests.log | xcpretty --test --color --simple
113+
59114 - name : Upload test logs
60115 if : failure()
61116 uses : actions/upload-artifact@v4
62117 with :
63- name : swiftui-auth-test-logs
64- path : |
65- samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleTests.log
66- samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleUITests.log
67- - name : Upload FirebaseSwiftUIExampleUITests.xcresult bundle
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+
161+ - name : Build for UI Tests
162+ run : |
163+ cd ./samples/swiftui/FirebaseSwiftUIExample
164+ set -o pipefail
165+ xcodebuild build-for-testing \
166+ -scheme FirebaseSwiftUIExampleUITests \
167+ -destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
168+ -enableCodeCoverage YES | xcpretty --color --simple
169+
170+ - name : Run UI Tests
171+ run : |
172+ cd ./samples/swiftui/FirebaseSwiftUIExample
173+ set -o pipefail
174+ xcodebuild test-without-building \
175+ -scheme FirebaseSwiftUIExampleUITests \
176+ -destination 'platform=iOS Simulator,name=iPhone 16 Pro' \
177+ -parallel-testing-enabled YES \
178+ -maximum-concurrent-test-simulator-destinations 2 \
179+ -enableCodeCoverage YES \
180+ -resultBundlePath FirebaseSwiftUIExampleUITests.xcresult | tee FirebaseSwiftUIExampleUITests.log | xcpretty --test --color --simple
181+
182+ - name : Upload test logs
68183 if : failure()
69184 uses : actions/upload-artifact@v4
70185 with :
71- name : FirebaseSwiftUIExampleUITests.xcresult
72- path : samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleUITests.xcresult
73- - name : Upload FirebaseSwiftUIExampleTests.xcresult bundle
186+ name : ui-tests-logs
187+ path : samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleUITests.log
188+
189+ - name : Upload test results
74190 if : failure()
75191 uses : actions/upload-artifact@v4
76192 with :
77- name : FirebaseSwiftUIExampleTests.xcresult
78- path : samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleTests .xcresult
193+ name : ui-tests-results
194+ path : samples/swiftui/FirebaseSwiftUIExample/FirebaseSwiftUIExampleUITests .xcresult
0 commit comments