From 23e2909067fbc19258bc1730e022fed028f78dde Mon Sep 17 00:00:00 2001 From: dwyfrequency Date: Tue, 16 Aug 2022 14:57:13 -0400 Subject: [PATCH 1/8] Add browser unit tests for firefox in firestore --- .github/workflows/test-changed-firestore.yml | 81 +++++++++++++------ packages/firestore/karma.conf.js | 8 ++ packages/firestore/package.json | 1 + .../firestore/test/unit/util/bundle.test.ts | 2 +- 4 files changed, 66 insertions(+), 26 deletions(-) diff --git a/.github/workflows/test-changed-firestore.yml b/.github/workflows/test-changed-firestore.yml index fc56beb4ba0..91a64f31004 100644 --- a/.github/workflows/test-changed-firestore.yml +++ b/.github/workflows/test-changed-firestore.yml @@ -3,31 +3,62 @@ name: Test Firestore on: pull_request jobs: - test: - name: Test Firestore If Changed + test-chrome: + name: Test Firestore on Chrome and Node If Changed runs-on: ubuntu-latest steps: - - name: Checkout Repo - uses: actions/checkout@master - with: - # This makes Actions fetch all Git history so run-changed script can diff properly. - fetch-depth: 0 - - name: Set up Node (14) - uses: actions/setup-node@v2 - with: - node-version: 14.x - - name: install Chrome stable - run: | - sudo apt-get update - sudo apt-get install google-chrome-stable - - name: Bump Node memory limit - run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV - - name: Test setup and yarn install - run: | - cp config/ci.config.json config/project.json - yarn - - name: build - run: yarn build:changed firestore - - name: Run tests if firestore or its dependencies has changed - run: yarn test:changed firestore + - name: Checkout Repo + uses: actions/checkout@master + with: + # This makes Actions fetch all Git history so run-changed script can diff properly. + fetch-depth: 0 + - name: Set up Node (14) + uses: actions/setup-node@v2 + with: + node-version: 14.x + - name: install Chrome stable + run: | + sudo apt-get update + sudo apt-get install google-chrome-stable + - name: Bump Node memory limit + run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV + - name: Test setup and yarn install + run: | + cp config/ci.config.json config/project.json + yarn + - name: build + run: yarn build:changed firestore + - name: Run tests if firestore or its dependencies has changed + run: yarn test:changed firestore + + test-firefox: + name: Test Firestore on Firefox If Changed + runs-on: ubuntu-latest + + steps: + - name: install Firefox stable + run: | + sudo apt-get update + sudo apt-get install firefox + - name: Checkout Repo + uses: actions/checkout@master + with: + # This makes Actions fetch all Git history so run-changed script can diff properly. + fetch-depth: 0 + - name: Set up Node (14) + uses: actions/setup-node@v2 + with: + node-version: 14.x + - name: Bump Node memory limit + run: echo "NODE_OPTIONS=--max_old_space_size=4096" >> $GITHUB_ENV + - name: Test setup and yarn install + run: | + cp config/ci.config.json config/project.json + yarn + - name: build + run: yarn build:changed auth + - name: Run tests on auth changed packages + run: xvfb-run yarn --cwd packages/firestore test:browser:unit + env: + BROWSERS: 'Firefox' diff --git a/packages/firestore/karma.conf.js b/packages/firestore/karma.conf.js index 21d9fe6277e..4264a39a4c9 100644 --- a/packages/firestore/karma.conf.js +++ b/packages/firestore/karma.conf.js @@ -20,6 +20,7 @@ const { argv } = require('yargs'); module.exports = function (config) { const karmaConfig = Object.assign({}, karmaBase, { + browsers: getTestBrowsers(argv), // files to load into karma files: getTestFiles(argv), @@ -59,6 +60,13 @@ function getTestFiles(argv) { } } +function getTestBrowsers(argv) { + if (process.env?.BROWSERS && argv.unit) { + browsers = process.env?.BROWSERS?.split(','); + } + return browsers; +} + /** * If the --local argument is passed, returns a {host, ssl} FirestoreSettings * object that point to localhost instead of production. diff --git a/packages/firestore/package.json b/packages/firestore/package.json index 74fce9a85f5..7fca0c5b4eb 100644 --- a/packages/firestore/package.json +++ b/packages/firestore/package.json @@ -30,6 +30,7 @@ "test:all:ci": "run-p test:browser test:lite:browser test:travis", "test:all": "run-p test:browser test:lite:browser test:travis test:minified", "test:browser": "karma start --single-run", + "test:browser:unit": "karma start --single-run --unit", "test:browser:debug": "karma start --browsers=Chrome --auto-watch", "test:node": "node ./scripts/run-tests.js --main=test/register.ts --emulator 'test/{,!(browser|lite)/**/}*.test.ts'", "test:node:prod": "node ./scripts/run-tests.js --main=test/register.ts 'test/{,!(browser|lite)/**/}*.test.ts'", diff --git a/packages/firestore/test/unit/util/bundle.test.ts b/packages/firestore/test/unit/util/bundle.test.ts index 942d45f41f8..2a201af01e6 100644 --- a/packages/firestore/test/unit/util/bundle.test.ts +++ b/packages/firestore/test/unit/util/bundle.test.ts @@ -241,7 +241,7 @@ function genericBundleReadingTests(bytesPerRead: number): void { await expect( generateBundleAndParse('{metadata: "no length prefix"}', bytesPerRead) - ).to.be.rejectedWith('Unexpected end of JSON input'); + ).to.be.rejectedWith(/(Unexpected end of )(?=.*\JSON\b).*/gi); await expect( generateBundleAndParse( From f635bc334f31a087728b31965ad783d78eb47bd8 Mon Sep 17 00:00:00 2001 From: dwyfrequency Date: Tue, 16 Aug 2022 15:31:09 -0400 Subject: [PATCH 2/8] Update action to remove auth references --- .github/workflows/test-changed-firestore.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-changed-firestore.yml b/.github/workflows/test-changed-firestore.yml index 91a64f31004..ef330a4058c 100644 --- a/.github/workflows/test-changed-firestore.yml +++ b/.github/workflows/test-changed-firestore.yml @@ -57,8 +57,8 @@ jobs: cp config/ci.config.json config/project.json yarn - name: build - run: yarn build:changed auth - - name: Run tests on auth changed packages + run: yarn build + - name: Run tests on firestore changed packages run: xvfb-run yarn --cwd packages/firestore test:browser:unit env: BROWSERS: 'Firefox' From e2328713540b72d1f1f17df24a8697cf8486e5cd Mon Sep 17 00:00:00 2001 From: dwyfrequency Date: Wed, 17 Aug 2022 11:31:01 -0400 Subject: [PATCH 3/8] Update Auth Build --- .github/workflows/test-changed-auth.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-changed-auth.yml b/.github/workflows/test-changed-auth.yml index bdb224a9326..e3faf7399ad 100644 --- a/.github/workflows/test-changed-auth.yml +++ b/.github/workflows/test-changed-auth.yml @@ -61,7 +61,7 @@ jobs: cp config/ci.config.json config/project.json yarn - name: build - run: yarn build:changed auth + run: yarn build - name: Run tests on auth changed packages run: xvfb-run yarn --cwd packages/auth test:browser:unit env: From cabc694869549c3f6ec4a69b9fc50205a1504c29 Mon Sep 17 00:00:00 2001 From: dwyfrequency Date: Wed, 17 Aug 2022 13:40:54 -0400 Subject: [PATCH 4/8] Initialize browser variable --- packages/firestore/karma.conf.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/firestore/karma.conf.js b/packages/firestore/karma.conf.js index 4264a39a4c9..8d379b0bf59 100644 --- a/packages/firestore/karma.conf.js +++ b/packages/firestore/karma.conf.js @@ -61,6 +61,7 @@ function getTestFiles(argv) { } function getTestBrowsers(argv) { + let browsers = ['ChromeHeadless']; if (process.env?.BROWSERS && argv.unit) { browsers = process.env?.BROWSERS?.split(','); } From 47596d731c0f7799e139cda2607378ba8d10c91d Mon Sep 17 00:00:00 2001 From: dwyfrequency Date: Mon, 22 Aug 2022 12:12:51 -0400 Subject: [PATCH 5/8] update actions to use changed command --- .github/workflows/test-changed-auth.yml | 8 ++------ .github/workflows/test-changed-firestore.yml | 6 +++--- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test-changed-auth.yml b/.github/workflows/test-changed-auth.yml index e3faf7399ad..1902b136caa 100644 --- a/.github/workflows/test-changed-auth.yml +++ b/.github/workflows/test-changed-auth.yml @@ -61,12 +61,8 @@ jobs: cp config/ci.config.json config/project.json yarn - name: build - run: yarn build + run: yarn build:changed auth - name: Run tests on auth changed packages - run: xvfb-run yarn --cwd packages/auth test:browser:unit - env: - BROWSERS: 'Firefox' - - name: Run tests on auth-compat changed packages - run: xvfb-run yarn --cwd packages/auth-compat test:browser:unit + run: xvfb-run yarn test:changed auth env: BROWSERS: 'Firefox' diff --git a/.github/workflows/test-changed-firestore.yml b/.github/workflows/test-changed-firestore.yml index ef330a4058c..327cc144c0a 100644 --- a/.github/workflows/test-changed-firestore.yml +++ b/.github/workflows/test-changed-firestore.yml @@ -57,8 +57,8 @@ jobs: cp config/ci.config.json config/project.json yarn - name: build - run: yarn build - - name: Run tests on firestore changed packages - run: xvfb-run yarn --cwd packages/firestore test:browser:unit + run: yarn build:changed firestore + - name: Run tests on auth changed packages + run: xvfb-run yarn test:changed firestore env: BROWSERS: 'Firefox' From ce790303ba8adde520fa8e5795d9ca26f17148d5 Mon Sep 17 00:00:00 2001 From: dwyfrequency Date: Mon, 22 Aug 2022 12:28:07 -0400 Subject: [PATCH 6/8] Update run tests ci script to accommodate firestore --- scripts/run_tests_in_ci.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/run_tests_in_ci.js b/scripts/run_tests_in_ci.js index ceaff03fa90..fdced9cb70f 100644 --- a/scripts/run_tests_in_ci.js +++ b/scripts/run_tests_in_ci.js @@ -23,7 +23,10 @@ const { writeFileSync } = require('fs'); const LOGDIR = process.env.CI ? process.env.HOME : '/tmp'; // Maps the packages where we should not run `test:all` and instead isolate the cross-browser tests. // TODO(dwyfrequency): Update object with `storage` and `firestore` packages. -const crossBrowserPackages = { 'packages/auth': 'test:browser:unit' }; +const crossBrowserPackages = { + 'packages/auth': 'test:browser:unit', + 'packages/firestore': 'test:browser:unit' +}; function writeLogs(status, name, logText) { const safeName = name.replace(/@/g, 'at_').replace(/\//g, '_'); From db8dff0514302987c2e79c1d94190848de27db66 Mon Sep 17 00:00:00 2001 From: dwyfrequency Date: Mon, 22 Aug 2022 13:59:21 -0400 Subject: [PATCH 7/8] Update name of step --- .github/workflows/test-changed-firestore.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-changed-firestore.yml b/.github/workflows/test-changed-firestore.yml index 327cc144c0a..d4600ae4b99 100644 --- a/.github/workflows/test-changed-firestore.yml +++ b/.github/workflows/test-changed-firestore.yml @@ -58,7 +58,7 @@ jobs: yarn - name: build run: yarn build:changed firestore - - name: Run tests on auth changed packages + - name: Run tests if firestore or its dependencies has changed run: xvfb-run yarn test:changed firestore env: BROWSERS: 'Firefox' From 9ae0d769b0da2f18d42ff90f3f91b01f595efd2c Mon Sep 17 00:00:00 2001 From: dwyfrequency Date: Mon, 22 Aug 2022 15:18:57 -0400 Subject: [PATCH 8/8] Update regex to remove unnecessary `/` --- packages/firestore/test/unit/util/bundle.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/firestore/test/unit/util/bundle.test.ts b/packages/firestore/test/unit/util/bundle.test.ts index 2a201af01e6..9f225138491 100644 --- a/packages/firestore/test/unit/util/bundle.test.ts +++ b/packages/firestore/test/unit/util/bundle.test.ts @@ -241,7 +241,7 @@ function genericBundleReadingTests(bytesPerRead: number): void { await expect( generateBundleAndParse('{metadata: "no length prefix"}', bytesPerRead) - ).to.be.rejectedWith(/(Unexpected end of )(?=.*\JSON\b).*/gi); + ).to.be.rejectedWith(/(Unexpected end of )(?=.*JSON\b).*/gi); await expect( generateBundleAndParse(