From 69c41e1fe1f4eafffb53c0970c3a1b0b71e3add3 Mon Sep 17 00:00:00 2001 From: Riley Jones <78179109+rileyajones@users.noreply.github.com> Date: Mon, 12 Apr 2021 11:26:32 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=8F=97=20=E2=9C=A8=20=E2=9D=84=EF=B8=8F?= =?UTF-8?q?=20add=20karma-junit-reporter=20to=20store=20test=20results=20i?= =?UTF-8?q?n=20a=20way=20circleci=20can=20interpret=20them=20(#33682)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add karma-junit-reporter to store test results in a way circleci can interpret them --- .circleci/config.yml | 14 +++ .eslintignore | 1 + .prettierignore | 1 + .../tasks/runtime-test/runtime-test-base.js | 10 ++- build-system/test-configs/karma.conf.js | 1 + package-lock.json | 90 +++++++++++++++++++ package.json | 2 + 7 files changed, 118 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f642dc075ab2..cd1465560269 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -93,6 +93,12 @@ commands: name: 'Fail Fast' when: on_fail command: ./.circleci/fail_fast.sh + store_test_output: + steps: + - store_artifacts: + path: result-reports + - store_test_results: + path: result-reports jobs: 'Compute Merge Commit': @@ -179,6 +185,7 @@ jobs: - run: name: 'Validator Tests' command: node build-system/pr-check/validator-tests.js + - store_test_output - fail_fast - teardown_vm 'Visual Diff Tests': @@ -192,6 +199,7 @@ jobs: - run: name: 'Visual Diff Tests' command: node build-system/pr-check/visual-diff-tests.js + - store_test_output - fail_fast - teardown_vm 'Unit Tests': @@ -205,6 +213,7 @@ jobs: - run: name: 'Unit Tests' command: node build-system/pr-check/unit-tests.js + - store_test_output - fail_fast - teardown_vm 'Unminified Tests': @@ -218,6 +227,7 @@ jobs: - run: name: 'Unminified Tests' command: node build-system/pr-check/unminified-tests.js + - store_test_output - fail_fast - teardown_vm 'Nomodule Tests': @@ -236,6 +246,7 @@ jobs: - run: name: 'Nomodule Tests (<< parameters.config >>)' command: node build-system/pr-check/nomodule-tests.js --config=<< parameters.config >> + - store_test_output - fail_fast - teardown_vm 'Module Tests': @@ -254,6 +265,7 @@ jobs: - run: name: 'Module Tests (<< parameters.config >>)' command: node build-system/pr-check/module-tests.js --config=<< parameters.config >> + - store_test_output - fail_fast - teardown_vm 'End-to-End Tests': @@ -280,6 +292,7 @@ jobs: - run: name: 'Performance Tests' command: node build-system/pr-check/performance-tests.js + - store_test_output - fail_fast - teardown_vm 'Experiment Build': @@ -316,6 +329,7 @@ jobs: - run: name: 'Experiment << parameters.exp >> Tests' command: node build-system/pr-check/experiment-tests.js --experiment=experiment<< parameters.exp >> + - store_test_output - fail_fast - teardown_vm diff --git a/.eslintignore b/.eslintignore index 59f5cdf8bd5c..a6e4d757c87d 100644 --- a/.eslintignore +++ b/.eslintignore @@ -9,6 +9,7 @@ out/** test/coverage/** .babel-cache/** .css-cache/** +result-reports/** # Code directories build-system/tasks/visual-diff/snippets/*.js diff --git a/.prettierignore b/.prettierignore index ef36be043f94..51ac84ee1e20 100644 --- a/.prettierignore +++ b/.prettierignore @@ -8,3 +8,4 @@ **/dist.3p/** **/dist.tools/** extensions/**/dist/** +result-reports/** diff --git a/build-system/tasks/runtime-test/runtime-test-base.js b/build-system/tasks/runtime-test/runtime-test-base.js index 2e5ea4870cb8..4d5a4a101b88 100644 --- a/build-system/tasks/runtime-test/runtime-test-base.js +++ b/build-system/tasks/runtime-test/runtime-test-base.js @@ -36,7 +36,7 @@ const {cyan, green, red, yellow} = require('kleur/colors'); const {dotWrappingWidth} = require('../../common/logging'); const {getEsbuildBabelPlugin} = require('../../common/esbuild-babel'); const {getFilesFromArgv} = require('../../common/utils'); -const {isCiBuild} = require('../../common/ci'); +const {isCiBuild, isCircleciBuild} = require('../../common/ci'); const {log} = require('../../common/logging'); const {reportTestStarted} = require('../report-test-status'); const {SERVER_TRANSFORM_PATH} = require('../../server/typescript-compile'); @@ -173,6 +173,14 @@ function updateReporters(config) { config.reporters = ['mocha']; } + if (isCircleciBuild()) { + config.reporters.push('junit'); + config.junitReporter = { + outputFile: `result-reports/${config.testType}.xml`, + useBrowserName: false, + }; + } + if (argv.coverage) { config.reporters.push('coverage-istanbul'); } diff --git a/build-system/test-configs/karma.conf.js b/build-system/test-configs/karma.conf.js index 2396e58d89fb..c7de16075e6e 100644 --- a/build-system/test-configs/karma.conf.js +++ b/build-system/test-configs/karma.conf.js @@ -162,6 +162,7 @@ module.exports = { 'karma-html2js-preprocessor', 'karma-ie-launcher', 'karma-structured-json-reporter', + 'karma-junit-reporter', 'karma-mocha', 'karma-mocha-reporter', 'karma-safarinative-launcher', diff --git a/package-lock.json b/package-lock.json index d7e84d00ad3f..a4c722640d4c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4215,6 +4215,12 @@ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "dev": true + }, "check-dependencies": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/check-dependencies/-/check-dependencies-1.1.0.tgz", @@ -5293,6 +5299,12 @@ } } }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "dev": true + }, "crypto-random-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", @@ -12105,6 +12117,16 @@ "lodash": "^4.6.1" } }, + "karma-junit-reporter": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/karma-junit-reporter/-/karma-junit-reporter-2.0.1.tgz", + "integrity": "sha512-VtcGfE0JE4OE1wn0LK8xxDKaTP7slN8DO3I+4xg6gAi1IoAHAXOJ1V9G/y45Xg6sxdxPOR3THCFtDlAfBo9Afw==", + "dev": true, + "requires": { + "path-is-absolute": "^1.0.0", + "xmlbuilder": "12.0.0" + } + }, "karma-mocha": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/karma-mocha/-/karma-mocha-2.0.1.tgz", @@ -12899,6 +12921,17 @@ "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", "dev": true }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, "md5-hex": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/md5-hex/-/md5-hex-3.0.1.tgz", @@ -13277,6 +13310,51 @@ } } }, + "mocha-junit-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.0.0.tgz", + "integrity": "sha512-20HoWh2HEfhqmigfXOKUhZQyX23JImskc37ZOhIjBKoBEsb+4cAFRJpAVhFpnvsztLklW/gFVzsrobjLwmX4lA==", + "dev": true, + "requires": { + "debug": "^2.2.0", + "md5": "^2.1.0", + "mkdirp": "~0.5.1", + "strip-ansi": "^4.0.0", + "xml": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "mocha-silent-reporter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/mocha-silent-reporter/-/mocha-silent-reporter-1.0.0.tgz", @@ -18397,12 +18475,24 @@ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true }, + "xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=", + "dev": true + }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, + "xmlbuilder": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-12.0.0.tgz", + "integrity": "sha512-lMo8DJ8u6JRWp0/Y4XLa/atVDr75H9litKlb2E5j3V3MesoL50EBgZDWoLT3F/LztVnG67GjPXLZpqcky/UMnQ==", + "dev": true + }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", diff --git a/package.json b/package.json index 7a7b136a2bf2..0bf0d09b7b0e 100644 --- a/package.json +++ b/package.json @@ -131,6 +131,7 @@ "karma-fixture": "0.2.6", "karma-html2js-preprocessor": "1.1.0", "karma-ie-launcher": "1.0.0", + "karma-junit-reporter": "2.0.1", "karma-mocha": "2.0.1", "karma-mocha-reporter": "2.2.5", "karma-safarinative-launcher": "1.1.0", @@ -148,6 +149,7 @@ "minimatch": "3.0.4", "minimist": "1.2.5", "mocha": "8.3.2", + "mocha-junit-reporter": "2.0.0", "mocha-silent-reporter": "1.0.0", "morgan": "1.10.0", "multer": "1.4.2",