77env :
88 # make chromedriver detect installed Chrome version and download the corresponding driver
99 DETECT_CHROMEDRIVER_VERSION : true
10+ artifactRetentionDays : 2
1011
1112jobs :
12- test :
13- name : Node.js and Browser (Chrome) Tests
13+ build :
14+ name : Build the SDK
1415 runs-on : ubuntu-latest
15-
1616 steps :
17- # install Chrome first, so the correct version of webdriver can be installed by chromedriver when setting up the repo
17+ # Install Chrome so the correct version of webdriver can be installed by chromedriver when
18+ # setting up the repo. This must be done to build and execute Auth properly.
1819 - name : install Chrome stable
1920 # Install Chrome version 110.0.5481.177-1 as some Auth tests start to fail on version 111.
2021 # Temporary: Auth team will explore what's going wrong with the auth tests.
@@ -36,11 +37,142 @@ jobs:
3637 yarn
3738 - name : yarn build
3839 run : yarn build
40+ - name : Archive build
41+ if : ${{ !cancelled() }}
42+ run : |
43+ tar -cf build.tar .
44+ gzip build.tar
45+ - name : Upload build archive
46+ if : ${{ !cancelled() }}
47+ uses : actions/upload-artifact@v3
48+ with :
49+ name : build.tar.gz
50+ path : build.tar.gz
51+ retention-days : ${{ env.artifactRetentionDays }}
52+
53+ # Auth and Firestore are built and executed in their own jobs in an attempt to reduce flakiness.
54+ test-the-rest :
55+ name : (bulk) Node.js and Browser (Chrome) Tests
56+ needs : build
57+ runs-on : ubuntu-latest
58+ steps :
59+ # install Chrome first, so the correct version of webdriver can be installed by chromedriver when setting up the repo
60+ - name : install Chrome stable
61+ run : |
62+ sudo apt-get update
63+ sudo apt-get install google-chrome-stable
64+ - name : Download build archive
65+ uses : actions/download-artifact@v3
66+ with :
67+ name : build.tar.gz
68+ - name : Unzip build artifact
69+ run : tar xf build.tar.gz
70+ - name : Set up Node (16)
71+ uses : actions/setup-node@v3
72+ with :
73+ node-version : 16.x
74+ - name : Bump Node memory limit
75+ run : echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV
76+ - name : Test setup and yarn install
77+ run : |
78+ cp config/ci.config.json config/project.json
79+ yarn
80+ - name : Set start timestamp env var
81+ run : echo "FIREBASE_CI_TEST_START_TIME=$(date +%s)" >> $GITHUB_ENV
82+ - name : Run unit tests
83+ # Ignore auth and firestore since they're handled in their own separate jobs.
84+ run : |
85+ xvfb-run yarn lerna run --ignore '{firebase-messaging-integration-test,@firebase/auth*,@firebase/firestore*,firebase-firestore-integration-test}' --concurrency 4 test:ci
86+ node scripts/print_test_logs.js
87+ env :
88+ FIREBASE_TOKEN : ${{ secrets.FIREBASE_CLI_TOKEN }}
89+ - name : Generate coverage file
90+ run : yarn ci:coverage
91+ - name : Run coverage
92+ uses : coverallsapp/github-action@master
93+ with :
94+ github-token : ${{ secrets.GITHUB_TOKEN }}
95+ path-to-lcov : ./lcov-all.info
96+ continue-on-error : true
97+
98+ test-auth :
99+ name : (Auth) Node.js and Browser (Chrome) Tests
100+ needs : build
101+ runs-on : ubuntu-latest
102+ steps :
103+ # install Chrome so the correct version of webdriver can be installed by chromedriver when setting up the repo
104+ - name : install Chrome stable
105+ # Install Chrome version 110.0.5481.177-1 as some Auth tests start to fail on version 111.
106+ # Temporary: Auth team will explore what's going wrong with the auth tests.
107+ run : |
108+ sudo apt-get update
109+ sudo apt-get install wget
110+ sudo wget http://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_110.0.5481.177-1_amd64.deb
111+ sudo apt-get install -f ./google-chrome-stable_110.0.5481.177-1_amd64.deb --allow-downgrades
112+ - name : Download build archive
113+ uses : actions/download-artifact@v3
114+ with :
115+ name : build.tar.gz
116+ - name : Unzip build artifact
117+ run : tar xf build.tar.gz
118+ - name : Set up Node (16)
119+ uses : actions/setup-node@v3
120+ with :
121+ node-version : 16.x
122+ - name : Bump Node memory limit
123+ run : echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV
124+ - name : Test setup and yarn install
125+ run : |
126+ cp config/ci.config.json config/project.json
127+ yarn
128+ - name : Set start timestamp env var
129+ run : echo "FIREBASE_CI_TEST_START_TIME=$(date +%s)" >> $GITHUB_ENV
130+ - name : Run unit tests
131+ run : |
132+ xvfb-run yarn lerna run --concurrency 4 test:ci --scope '@firebase/auth*'
133+ node scripts/print_test_logs.js
134+ env :
135+ FIREBASE_TOKEN : ${{ secrets.FIREBASE_CLI_TOKEN }}
136+ - name : Generate coverage file
137+ run : yarn ci:coverage
138+ - name : Run coverage
139+ uses : coverallsapp/github-action@master
140+ with :
141+ github-token : ${{ secrets.GITHUB_TOKEN }}
142+ path-to-lcov : ./lcov-all.info
143+ continue-on-error : true
144+
145+ test-firestore :
146+ name : (Firestore) Node.js and Browser (Chrome) Tests
147+ needs : build
148+ runs-on : ubuntu-latest
149+ steps :
150+ # install Chrome so the correct version of webdriver can be installed by chromedriver when setting up the repo
151+ - name : install Chrome stable
152+ run : |
153+ sudo apt-get update
154+ sudo apt-get install google-chrome-stable
155+ - name : Download build archive
156+ uses : actions/download-artifact@v3
157+ with :
158+ name : build.tar.gz
159+ - name : Unzip build artifact
160+ run : tar xf build.tar.gz
161+ - name : Set up Node (16)
162+ uses : actions/setup-node@v3
163+ with :
164+ node-version : 16.x
165+ - name : Bump Node memory limit
166+ run : echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV
167+ - name : Test setup and yarn install
168+ run : |
169+ cp config/ci.config.json config/project.json
170+ yarn
39171 - name : Set start timestamp env var
40172 run : echo "FIREBASE_CI_TEST_START_TIME=$(date +%s)" >> $GITHUB_ENV
41173 - name : Run unit tests
42174 run : |
43- xvfb-run yarn test:ci
175+ xvfb-run yarn lerna run --concurrency 4 test:ci --scope '{@firebase/firestore*,firebase-firestore-integration-test}'
44176 node scripts/print_test_logs.js
45177 env :
46178 FIREBASE_TOKEN : ${{ secrets.FIREBASE_CLI_TOKEN }}
0 commit comments