@@ -21,41 +21,44 @@ jobs:
2121    name : Build 
2222    steps :
2323      - name : Checkout 
24-         uses : actions/checkout@v2  
24+         uses : actions/checkout@v3  
2525      - name : Setup node 
26-         uses : actions/setup-node@v2-beta  
26+         uses : actions/setup-node@v3  
2727        with :
28-           node-version : ' 14' 
28+           node-version : ' 16' 
29+           check-latest : true 
2930      - name : node_modules cache 
30-         uses : actions/cache@v2  
31+         uses : actions/cache@v3  
3132        id : node_modules_cache 
3233        with :
3334          path : ./node_modules 
34-           key : ${{ runner.os }}-14 -12-9-9-6-node_modules-${{ hashFiles('yarn.lock') }} 
35+           key : ${{ runner.os }}-16 -12-9-9-6-node_modules-${{ hashFiles('yarn.lock') }} 
3536          restore-keys : | 
36-             ${{ runner.os }}-14 -12-9-9-6-node_modules- 
37-             ${{ runner.os }}-14 -12-9-9- 
38-             ${{ runner.os }}-14 -12-9- 
39-             ${{ runner.os }}-14 -12- 
40-             ${{ runner.os }}-14 - 
37+             ${{ runner.os }}-16 -12-9-9-6-node_modules- 
38+             ${{ runner.os }}-16 -12-9-9- 
39+             ${{ runner.os }}-16 -12-9- 
40+             ${{ runner.os }}-16 -12- 
41+             ${{ runner.os }}-16 - 
4142       - name : Yarn offline cache 
4243        if : steps.node_modules_cache.outputs.cache-hit != 'true' 
43-         uses : actions/cache@v2  
44+         uses : actions/cache@v3  
4445        with :
4546          path : ~/.npm-packages-offline-cache 
4647          key : yarn-offline-${{ hashFiles('**/yarn.lock') }} 
4748          restore-keys : yarn-offline 
4849      - name : Install deps 
4950        if : steps.node_modules_cache.outputs.cache-hit != 'true' 
5051        run : | 
52+           yarn config set ignore-engines true  
5153          yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache 
54+           yarn config set network-timeout 300000 
5255          yarn config set yarn-offline-mirror-pruning true  
5356          yarn install --frozen-lockfile --prefer-offline 
5457       - name : Build 
5558        id : yarn-pack-dir 
5659        run : ./tools/build.sh 
5760      - name : ' Upload Artifact' 
58-         uses : actions/upload-artifact@v2  
61+         uses : actions/upload-artifact@v3  
5962        with :
6063          name : angularfire-${{ github.run_id }} 
6164          path : dist 
@@ -67,175 +70,140 @@ jobs:
6770    strategy :
6871      matrix :
6972        os : [ ubuntu-latest, macos-latest, windows-latest ] 
70-         node : ["12", "14", "16"] 
71-         firebase : ["9"] 
72-         firebaseTools : ["9", "10"] 
73-         rxjs : ["6", "7"] 
74-         ng : ["12", "13"] 
75-         exclude :
76-           #  TODO investigate failures
77-           #  https://github.com/angular/angularfire/runs/4174069788
78-           #  Can't resolve 'core-js/proposals/reflect-metadata'
79-           - os : ubuntu-latest 
80-             node : 14 
81-             ng : 13 
73+         node : ["16", "18", "20"] 
8274      fail-fast : false 
83-     name : Test firebase@${{ matrix.firebase }} firebase-tools@ ${{ matrix.firebaseTools  }} ng@ ${{ matrix.ng }} rxjs@${{ matrix.rxjs}} on ${{ matrix. os }} Node.js ${{ matrix.node }}  
75+     name : Test Node  ${{ matrix.node  }} ( ${{ matrix.os }})  
8476    steps :
8577      - name : Checkout 
86-         uses : actions/checkout@v2  
78+         uses : actions/checkout@v3  
8779      - name : Setup node 
88-         uses : actions/setup-node@v2-beta  
80+         uses : actions/setup-node@v3  
8981        with :
9082          node-version : ${{ matrix.node }} 
9183          check-latest : true 
9284      - name : node_modules cache 
9385        id : node_modules_cache 
94-         uses : actions/cache@v2  
86+         uses : actions/cache@v3  
9587        with :
9688          path : ./node_modules 
97-           key : ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}-${{ matrix.rxjs }} -node_modules-${{ hashFiles('yarn.lock') }} 
89+           key : ${{ runner.os }}-${{ matrix.node }}-16-9-12-7 -node_modules-${{ hashFiles('yarn.lock') }} 
9890          restore-keys : | 
99-             ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}-${{ matrix.rxjs }} -node_modules- 
100-             ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }} - 
101-             ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }} - 
102-             ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }} - 
91+             ${{ runner.os }}-${{ matrix.node }}-16-9-12-7 -node_modules- 
92+             ${{ runner.os }}-${{ matrix.node }}-16-9-12 - 
93+             ${{ runner.os }}-${{ matrix.node }}-16-9 - 
94+             ${{ runner.os }}-${{ matrix.node }}-16 - 
10395            ${{ runner.os }}-${{ matrix.node }}- 
10496       - name : Yarn offline cache 
105-         uses : actions/cache@v2  
97+         uses : actions/cache@v3  
10698        with :
10799          path : ~/.npm-packages-offline-cache 
108100          key : yarn-offline-${{ hashFiles('**/yarn.lock') }} 
109101          restore-keys : yarn-offline 
110102      - name : Configure yarn 
111103        run : | 
112104          yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache 
105+           yarn config set network-timeout 300000 
113106          yarn config set ignore-engines true  
114107       - name : Yarn install 
115108        if : steps.node_modules_cache.outputs.cache-hit != 'true' 
116109        run : yarn install --frozen-lockfile --prefer-offline 
117-       - name : Bump deps 
118-         run : | 
119-           yarn add firebase@${{ matrix.firebase }} 
120-           yarn add firebase-tools@${{ matrix.firebaseTools }} 
121-           yarn add rxjs@${{ matrix.rxjs }} --prefer-offline 
122-           npx ng update @angular/core@${{ matrix.ng }} @angular/cli@${{ matrix.ng }} --allow-dirty --force || true  
123-        - name : Firebase emulator cache 
124-         uses : actions/cache@v2 
125-         with :
126-           path : ~/.cache/firebase/emulators 
127-           key : firebase_emulators 
128110      - name : Download Artifacts 
129-         uses : actions/download-artifact@v2  
111+         uses : actions/download-artifact@v3  
130112      - name : Relocate Artifacts 
131113        run : mv angularfire-${{ github.run_id }} dist 
132-       - name : Test node  
114+       - name : Test Node  
133115        run : | 
134116          yarn build:jasmine 
135117          yarn test:node 
136-        - name : Test browser 
137-         if : matrix.os == 'ubuntu-latest' && matrix.node == '14' && matrix.firebaseTools == '9' 
138-         run : yarn test:chrome-headless 
118+        - name : ng-build yarn install 
119+         run : | 
120+           cd ./test/ng-build 
121+           yarn --prefer-offline 
122+        - name : ng-build prerender 
123+         run : | 
124+           cd ./test/ng-build 
125+           yarn prerender 
139126
140-   #  TODO dry up
141-   canary :
127+    browser :
142128    runs-on : ${{ matrix.os }} 
143-     if :  ${{ github.ref == 'refs/heads/master' }} 
144-     needs :  [ 'build', 'test' ] 
129+     needs :  build 
130+     name :  Test ${{ matrix.browser }} 
145131    strategy :
146132      matrix :
147133        os : [ ubuntu-latest ] 
148-         node : ["14"] 
149-         firebase : ["9", "canary", "next"] 
150-         firebaseTools : ["9", "10"] 
151-         rxjs : ["7"] 
152-         ng : ["12", "13", "next"] 
153-         exclude :
154-           #  standard configurations
155-           - firebase : 9 
156-             ng : 12 
157-           - firebase : 9 
158-             ng : 13 
159-       fail-fast : false 
160-     name : Canary firebase@${{ matrix.firebase }} firebase-tools@${{ matrix.firebaseTools }} ng@${{ matrix.ng }} rxjs@${{ matrix.rxjs}} on ${{ matrix.os }} Node.js ${{ matrix.node }} 
134+         browser : [ chrome-headless, firefox-headless ] 
135+         include :
136+         - os : macos-latest 
137+           browser : safari 
161138    steps :
162139      - name : Checkout 
163-         uses : actions/checkout@v2  
140+         uses : actions/checkout@v3  
164141      - name : Setup node 
165-         uses : actions/setup-node@v2-beta  
142+         uses : actions/setup-node@v3  
166143        with :
167-           node-version : ${{ matrix.node }} 
144+           node-version : 16 
168145          check-latest : true 
146+       - name : Setup java 
147+         uses : actions/setup-java@v3 
148+         with :
149+           distribution : ' temurin' 
150+           java-version : ' 11' 
169151      - name : node_modules cache 
170152        id : node_modules_cache 
171-         uses : actions/cache@v2  
153+         uses : actions/cache@v3  
172154        with :
173155          path : ./node_modules 
174-           key : ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}-${{ matrix.rxjs }} -node_modules-${{ hashFiles('yarn.lock') }} 
156+           key : ${{ runner.os }}-${{ matrix.node }}-16-9-12-7 -node_modules-${{ hashFiles('yarn.lock') }} 
175157          restore-keys : | 
176-             ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }}-${{ matrix.rxjs }} -node_modules- 
177-             ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }}-${{ matrix.firebaseTools }} - 
178-             ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }}-${{ matrix.firebase }} - 
179-             ${{ runner.os }}-${{ matrix.node }}-${{ matrix.ng }} - 
158+             ${{ runner.os }}-${{ matrix.node }}-16-9-12-7 -node_modules- 
159+             ${{ runner.os }}-${{ matrix.node }}-16-9-12 - 
160+             ${{ runner.os }}-${{ matrix.node }}-16-9 - 
161+             ${{ runner.os }}-${{ matrix.node }}-16 - 
180162            ${{ runner.os }}-${{ matrix.node }}- 
181163       - name : Yarn offline cache 
182-         uses : actions/cache@v2  
164+         uses : actions/cache@v3  
183165        with :
184166          path : ~/.npm-packages-offline-cache 
185167          key : yarn-offline-${{ hashFiles('**/yarn.lock') }} 
186168          restore-keys : yarn-offline 
187169      - name : Configure yarn 
188170        run : | 
189171          yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache 
172+           yarn config set network-timeout 300000 
190173          yarn config set ignore-engines true  
191174       - name : Yarn install 
192175        if : steps.node_modules_cache.outputs.cache-hit != 'true' 
193176        run : yarn install --frozen-lockfile --prefer-offline 
194-       - name : Bump deps 
195-         run : | 
196-           yarn add firebase@${{ matrix.firebase }} 
197-           yarn add firebase-tools@${{ matrix.firebaseTools }} 
198-           yarn add rxjs@${{ matrix.rxjs }} --prefer-offline 
199-           npx ng update @angular/core@${{ matrix.ng }} @angular/cli@${{ matrix.ng }} --allow-dirty --force || true  
200177      - name : Firebase emulator cache 
201-         uses : actions/cache@v2  
178+         uses : actions/cache@v3  
202179        with :
203180          path : ~/.cache/firebase/emulators 
204181          key : firebase_emulators 
205182      - name : Download Artifacts 
206-         uses : actions/download-artifact@v2  
183+         uses : actions/download-artifact@v3  
207184      - name : Relocate Artifacts 
208185        run : mv angularfire-${{ github.run_id }} dist 
209-       - name : Test node 
210-         run : | 
211-           yarn build:jasmine 
212-           yarn test:node 
213186      - name : Test browser 
214-         if : matrix.os == 'ubuntu-latest' && matrix.node == '14' && matrix.firebaseTools == '9' 
215-         run : yarn test:chrome-headless 
187+         run : yarn test:${{ matrix.browser }} 
216188
217189  contribute :
218190    runs-on : ${{ matrix.os }} 
219-     name : Contribute ${{ matrix.os  }} on Node.js  ${{ matrix.node  }} 
191+     name : Contribute Node  ${{ matrix.node  }} ( ${{ matrix.os  }})  
220192    strategy :
221193      matrix :
222194        os : [ ubuntu-latest, macos-latest, windows-latest ] 
223-         node : ["12", "14", "16"] 
224-         exclude :
225-           #  we build with this combination, safely skip
226-           - os : ubuntu-latest 
227-             node : 14 
195+         node : ["16"] 
228196      fail-fast : false 
229197    steps :
230198      - name : Checkout 
231-         uses : actions/checkout@v2  
199+         uses : actions/checkout@v3  
232200      - name : Setup node 
233-         uses : actions/setup-node@v2-beta  
201+         uses : actions/setup-node@v3  
234202        with :
235203          node-version : ${{ matrix.node }} 
236204          check-latest : true 
237205      - name : node_modules cache 
238-         uses : actions/cache@v2  
206+         uses : actions/cache@v3  
239207        id : node_modules_cache 
240208        with :
241209          path : ./node_modules 
@@ -248,7 +216,7 @@ jobs:
248216            ${{ runner.os }}-${{ matrix.node }}- 
249217       - name : Yarn offline cache 
250218        if : steps.node_modules_cache.outputs.cache-hit != 'true' 
251-         uses : actions/cache@v2  
219+         uses : actions/cache@v3  
252220        with :
253221          path : ~/.npm-packages-offline-cache 
254222          key : yarn-offline-${{ hashFiles('**/yarn.lock') }} 
@@ -257,36 +225,54 @@ jobs:
257225        if : steps.node_modules_cache.outputs.cache-hit != 'true' 
258226        run : | 
259227          yarn config set yarn-offline-mirror ~/.npm-packages-offline-cache 
228+           yarn config set network-timeout 300000 
260229          yarn config set ignore-engines true  
261230          yarn install --frozen-lockfile --prefer-offline 
231+        - name : Lint 
232+         run : yarn lint 
262233      - name : Build 
263234        run : yarn build 
264-       - name : Test 
265-         #  TODO figure out why tests are flaking
266-         continue-on-error : true 
267-         run : yarn test 
235+       - name : Test Node 
236+         run : | 
237+           yarn build:jasmine 
238+           yarn test:node 
239+        - name : Firebase emulator cache 
240+         uses : actions/cache@v3 
241+         with :
242+           path : ~/.cache/firebase/emulators 
243+           key : firebase_emulators 
244+       - name : Setup java 
245+         uses : actions/setup-java@v3 
246+         with :
247+           distribution : ' temurin' 
248+           java-version : ' 11' 
249+       - name : Test headless 
250+         run : yarn test:chrome-headless 
251+         #  Tests are flaky on Windows
252+         continue-on-error : ${{ matrix.os == 'windows-latest' }} 
268253
269254  #  Break the branch protection test into a seperate step, so we can manage the matrix more easily
270255  test_and_contribute :
271256    runs-on : ubuntu-latest 
272257    name : Branch protection 
273-     needs : ['test', 'contribute'] 
258+     needs : ['test', 'contribute', 'browser' ] 
274259    steps :
275260      - run : true 
276261
277262  publish :
278263    runs-on : ubuntu-latest 
279264    name : Publish (NPM) 
280-     needs : ['build', 'test'] 
265+     needs : ['build', 'test', 'browser' ] 
281266    if : ${{ github.ref == 'refs/heads/master' || github.event_name == 'release' }} 
282267    steps :
283268      - name : Setup node 
284-         uses : actions/setup-node@v2-beta  
269+         uses : actions/setup-node@v3  
285270        with :
286-           node-version : ' 14 ' 
271+           node-version : ' 16 ' 
287272          registry-url : ' https://registry.npmjs.org' 
273+           check-latest : true 
288274      - name : ' Download Artifacts' 
289-         uses : actions/download-artifact@v2  
275+         uses : actions/download-artifact@v3  
290276      - name : Publish 
291277        run : | 
292278          cd ./angularfire-${{ github.run_id }}/packages-dist 
0 commit comments