diff --git a/.github/workflows/test-all.yml b/.github/workflows/test-all.yml index 8b61c9bd5b..2a2faf2c1c 100644 --- a/.github/workflows/test-all.yml +++ b/.github/workflows/test-all.yml @@ -45,11 +45,11 @@ jobs: run: nohup Xvfb & echo "DISPLAY=:0" >> $GITHUB_ENV - run: npm ci - - run: npm run jest-ci -- --coverage --coverageReporters json text html-spa --selectProjects unit + - run: npm run test-unit-ci - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3 with: - files: ${{ github.workspace }}/coverage/coverage-final.json + files: ${{ github.workspace }}/coverage/unit/codecov.json verbose: true integration-tests: diff --git a/jest.config.ts b/jest.config.ts index c27a41edc9..f2d1e1f0b2 100644 --- a/jest.config.ts +++ b/jest.config.ts @@ -14,6 +14,23 @@ const sharedConfig = { } as Partial; const config: Config = { + coverageProvider: 'v8', + reporters: [ + 'github-actions', + ['jest-monocart-coverage', { + name: 'MapLibre Unit Coverage Report', + + reports: [ + ['codecov'] + ], + + sourceFilter: (sourcePath) => { + return !sourcePath.includes('node_modules/') && sourcePath.search(/src\//) !== -1; + }, + + outputDir: './coverage/unit' + }] + ], projects: [ { displayName: 'unit', diff --git a/package-lock.json b/package-lock.json index 9d7a08f185..c5153eb2bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -91,6 +91,7 @@ "is-builtin-module": "^3.2.1", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", + "jest-monocart-coverage": "^1.0.2", "jest-webgl-canvas-mock": "^2.5.3", "jsdom": "^24.0.0", "json-stringify-pretty-compact": "^4.0.0", @@ -8340,6 +8341,15 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-monocart-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jest-monocart-coverage/-/jest-monocart-coverage-1.0.2.tgz", + "integrity": "sha512-dcsBG3F0pCpVZh6Uz1QylwgIrl7SN+dXvMSbGARfPCVQwmwLft7MDwZmod6SHw/jGdNlO8ovpSyRUnK4q9gg9w==", + "dev": true, + "dependencies": { + "monocart-coverage-reports": "^2.3.0" + } + }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", @@ -9480,9 +9490,9 @@ "dev": true }, "node_modules/monocart-coverage-reports": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/monocart-coverage-reports/-/monocart-coverage-reports-2.2.2.tgz", - "integrity": "sha512-7DdDhmLRKR82VOnOl292jkHtHqbV28SMe+wZTOCxSIBSdNC0pcINos16GIIiNTtrXzABkSYQv7jOKDTevengMw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/monocart-coverage-reports/-/monocart-coverage-reports-2.3.0.tgz", + "integrity": "sha512-1jbdu9qPDVHKXp2I/kgpzO+Orn2n2ZJZzh06lYD/cRExt5sprIAU2VXkLb/u2t9IU4FdChTri7pvISOS/MmoQg==", "dev": true, "dependencies": { "console-grid": "~2.1.0", diff --git a/package.json b/package.json index 26f78d0090..f4111825d5 100644 --- a/package.json +++ b/package.json @@ -95,6 +95,7 @@ "is-builtin-module": "^3.2.1", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", + "jest-monocart-coverage": "^1.0.2", "jest-webgl-canvas-mock": "^2.5.3", "jsdom": "^24.0.0", "json-stringify-pretty-compact": "^4.0.0", @@ -165,11 +166,11 @@ "lint-css": "stylelint src/css/maplibre-gl.css", "test": "run-p lint lint-css test-render jest", "jest": "jest", - "jest-ci": "jest --reporters=github-actions --reporters=summary", "test-build": "jest --selectProjects=build", "test-integration": "jest --selectProjects=integration", "test-render": "node --no-warnings --loader ts-node/esm test/integration/render/run_render_tests.ts", - "test-unit": "jest --selectProjects=unit", + "test-unit": "jest --selectProjects=unit --reporters=default", + "test-unit-ci": "jest --coverage --selectProjects unit", "test-watch-roots": "jest --watch", "codegen": "run-p --print-label generate-dist-package generate-style-code generate-struct-arrays generate-shaders && npm run generate-typings", "benchmark": "node --no-warnings --loader ts-node/esm test/bench/run-benchmarks.ts",