diff --git a/.circleci/config.yml b/.circleci/config.yml index 8d46d24..c8341d7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,7 +7,7 @@ orbs: jobs: build: docker: - - image: cimg/python:3.7 + - image: cimg/python:3.12 parameters: aws_bucket: type: string @@ -62,7 +62,7 @@ jobs: js_tests: docker: - - image: circleci/buildpack-deps:18.04-browsers + - image: cimg/base:2026.10-26.04 steps: - checkout - install_container_dependencies @@ -110,7 +110,7 @@ commands: steps: - run: name: install npm packages - command: npm install + command: npm ci --ignore-scripts - run: name: install and check for secrets command: npm run install-git-secrets @@ -120,7 +120,10 @@ commands: steps: - run: name: lint - command: npm run lint + command: npm run lint -- -f junit -o test-results/eslint/eslint.xml + - store_test_results: + path: test-results + when: always install_container_dependencies: steps: @@ -142,6 +145,9 @@ commands: - run: name: run unit tests command: bash -i -c 'npm run test' + - store_test_results: + path: test-results + when: always workflows: version: 2 diff --git a/.gitignore b/.gitignore index b3d44d5..e63390c 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ git-secrets.sh *.iml dependency-reduced-pom.xml target + +# Test results (JUnit XML) +test-results/ diff --git a/package-lock.json b/package-lock.json index 0a3d9fd..6359c33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -56,6 +56,12 @@ } } }, + "@xmldom/xmldom": { + "version": "0.8.15", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.15.tgz", + "integrity": "sha512-/5NV/vDALVFDXgLmfsy9TRCBlKwO2LNBFzpzvb9iIj+jR+eSc6DLYYvVOdivT/jm7MtU6TebYuRmzEOI7w40UA==", + "dev": true + }, "acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -66,7 +72,8 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", - "dev": true + "dev": true, + "requires": {} }, "ajv": { "version": "6.12.6", @@ -398,7 +405,8 @@ "version": "8.3.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", - "dev": true + "dev": true, + "requires": {} }, "eslint-plugin-prettier": { "version": "3.4.0", @@ -697,6 +705,16 @@ "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", "dev": true }, + "jasmine-reporters": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jasmine-reporters/-/jasmine-reporters-2.5.2.tgz", + "integrity": "sha512-qdewRUuFOSiWhiyWZX8Yx3YNQ9JG51ntBEO4ekLQRpktxFTwUHy24a86zD/Oi2BRTKksEdfWQZcQFqzjqIkPig==", + "dev": true, + "requires": { + "@xmldom/xmldom": "^0.8.5", + "mkdirp": "^1.0.4" + } + }, "jasmine-spec-reporter": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-6.0.0.tgz", @@ -780,6 +798,12 @@ "brace-expansion": "^1.1.7" } }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", diff --git a/package.json b/package.json index f66d229..91b4bc2 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "eslint-plugin-prettier": "^3.4.0", "husky": "^7.0.0", "jasmine": "^3.6.3", + "jasmine-reporters": "^2.5.2", "jasmine-spec-reporter": "^6.0.0", "prettier": "^2.3.1" } diff --git a/spec/helpers/reporter.js b/spec/helpers/reporter.js index 62c0c85..343ccaa 100644 --- a/spec/helpers/reporter.js +++ b/spec/helpers/reporter.js @@ -9,3 +9,14 @@ jasmine.getEnv().addReporter( }, }) ); + +// Write JUnit XML on CircleCI so store_test_results can show a test summary +if (process.env.CIRCLECI) { + const reporters = require("jasmine-reporters"); + jasmine.getEnv().addReporter( + new reporters.JUnitXmlReporter({ + savePath: "test-results/jasmine", + consolidateAll: true, + }) + ); +}