From 9063fae9c4378ebb24f2737c44b3b295c9f706e1 Mon Sep 17 00:00:00 2001 From: hainenber Date: Tue, 7 Oct 2025 22:53:52 +0700 Subject: [PATCH 1/7] fix(jest-config): allow `collectCoverage` to be configured at project level Signed-off-by: hainenber --- packages/jest-config/src/ValidConfig.ts | 1 + packages/jest-config/src/index.ts | 1 + packages/jest-config/src/normalize.ts | 3 +++ .../lib/__tests__/__snapshots__/logDebugMessages.test.ts.snap | 1 + .../jest-transform/src/__tests__/ScriptTransformer.test.ts | 1 + .../src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap | 3 +++ packages/jest-transform/src/shouldInstrument.ts | 3 ++- packages/jest-types/src/Config.ts | 1 + packages/test-utils/src/config.ts | 1 + 9 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/jest-config/src/ValidConfig.ts b/packages/jest-config/src/ValidConfig.ts index f40c1c9247d1..ab91073adc61 100644 --- a/packages/jest-config/src/ValidConfig.ts +++ b/packages/jest-config/src/ValidConfig.ts @@ -208,6 +208,7 @@ export const initialProjectOptions: Config.InitialProjectOptions = { cache: true, cacheDirectory: '/tmp/user/jest', clearMocks: false, + collectCoverage: false, collectCoverageFrom: ['src', '!public'], coverageDirectory: 'coverage', coveragePathIgnorePatterns: [NODE_MODULES_REGEXP], diff --git a/packages/jest-config/src/index.ts b/packages/jest-config/src/index.ts index e24405d15693..baf54c7ec1c2 100644 --- a/packages/jest-config/src/index.ts +++ b/packages/jest-config/src/index.ts @@ -151,6 +151,7 @@ const groupOptions = ( cache: options.cache, cacheDirectory: options.cacheDirectory, clearMocks: options.clearMocks, + collectCoverage: options.collectCoverage, collectCoverageFrom: options.collectCoverageFrom, coverageDirectory: options.coverageDirectory, coveragePathIgnorePatterns: options.coveragePathIgnorePatterns, diff --git a/packages/jest-config/src/normalize.ts b/packages/jest-config/src/normalize.ts index e2ed840cf020..656600e7d723 100644 --- a/packages/jest-config/src/normalize.ts +++ b/packages/jest-config/src/normalize.ts @@ -554,6 +554,9 @@ export default async function normalize( if (!options.coverageDirectory) { options.coverageDirectory = path.resolve(options.rootDir, 'coverage'); } + if (!Object.hasOwn(options, 'collectCoverage')) { + options.collectCoverage = undefined; + } setupBabelJest(options); // TODO: Type this properly diff --git a/packages/jest-core/src/lib/__tests__/__snapshots__/logDebugMessages.test.ts.snap b/packages/jest-core/src/lib/__tests__/__snapshots__/logDebugMessages.test.ts.snap index ec07be1650a5..48b854bd871e 100644 --- a/packages/jest-core/src/lib/__tests__/__snapshots__/logDebugMessages.test.ts.snap +++ b/packages/jest-core/src/lib/__tests__/__snapshots__/logDebugMessages.test.ts.snap @@ -7,6 +7,7 @@ exports[`prints the config object 1`] = ` "cache": false, "cacheDirectory": "/test_cache_dir/", "clearMocks": false, + "collectCoverage": false, "collectCoverageFrom": [ "src", "!public" diff --git a/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts b/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts index b1399872f51f..9de1f1d62d45 100644 --- a/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts +++ b/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts @@ -317,6 +317,7 @@ describe('ScriptTransformer', () => { id: 'test', rootDir: '/', transformIgnorePatterns: ['/node_modules/'], + collectCoverage: undefined }); createScriptTransformer = ( diff --git a/packages/jest-transform/src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap b/packages/jest-transform/src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap index 17caaf4e17aa..bce5ae00e3a5 100644 --- a/packages/jest-transform/src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap +++ b/packages/jest-transform/src/__tests__/__snapshots__/ScriptTransformer.test.ts.snap @@ -26,6 +26,7 @@ exports[`ScriptTransformer in async mode, passes expected transform options to g "cache": true, "cacheDirectory": "/cache/", "clearMocks": false, + "collectCoverage": undefined, "collectCoverageFrom": Array [ "src", "!public", @@ -177,6 +178,7 @@ exports[`ScriptTransformer passes expected transform options to getCacheKey 1`] "cache": true, "cacheDirectory": "/cache/", "clearMocks": false, + "collectCoverage": undefined, "collectCoverageFrom": Array [ "src", "!public", @@ -302,6 +304,7 @@ exports[`ScriptTransformer passes expected transform options to getCacheKeyAsync "cache": true, "cacheDirectory": "/cache/", "clearMocks": false, + "collectCoverage": undefined, "collectCoverageFrom": Array [ "src", "!public", diff --git a/packages/jest-transform/src/shouldInstrument.ts b/packages/jest-transform/src/shouldInstrument.ts index 511a7f5e1f3d..e3036f297e07 100644 --- a/packages/jest-transform/src/shouldInstrument.ts +++ b/packages/jest-transform/src/shouldInstrument.ts @@ -36,7 +36,8 @@ export default function shouldInstrument( config: Config.ProjectConfig, loadedFilenames?: Array, ): boolean { - if (!options.collectCoverage) { + // Do not instrument when `collectCoverage` is toggled off global or project-wide + if (!options.collectCoverage || (typeof config.collectCoverage === 'boolean' && !config.collectCoverage)) { return false; } diff --git a/packages/jest-types/src/Config.ts b/packages/jest-types/src/Config.ts index 1a0a9d0b64ff..976d5c2f0209 100644 --- a/packages/jest-types/src/Config.ts +++ b/packages/jest-types/src/Config.ts @@ -331,6 +331,7 @@ export type ProjectConfig = { cache: boolean; cacheDirectory: string; clearMocks: boolean; + collectCoverage?: boolean; collectCoverageFrom: Array; coverageDirectory: string; coveragePathIgnorePatterns: Array; diff --git a/packages/test-utils/src/config.ts b/packages/test-utils/src/config.ts index 3f5032e5c580..efd92fc5f6b5 100644 --- a/packages/test-utils/src/config.ts +++ b/packages/test-utils/src/config.ts @@ -75,6 +75,7 @@ const DEFAULT_PROJECT_CONFIG: Config.ProjectConfig = { cache: false, cacheDirectory: '/test_cache_dir/', clearMocks: false, + collectCoverage: false, collectCoverageFrom: ['src', '!public'], coverageDirectory: 'coverage', coveragePathIgnorePatterns: [], From a4ba7998eeaa51d798189652b6ba5b3ab35c4240 Mon Sep 17 00:00:00 2001 From: hainenber Date: Tue, 7 Oct 2025 22:57:48 +0700 Subject: [PATCH 2/7] doc: add CHANGELOG entry Signed-off-by: hainenber --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 917db93ebb8c..dac4800239a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## Fixes - `[jest-runtime]` Fix issue where user cannot utilize dynamic import despite specifying `--experimental-vm-modules` Node option ([#15842](https://github.com/jestjs/jest/pull/15842)) +- `[jest-config]` Fix issue where user cannot toggle `collectCoverage` at project level ([#15588](https://github.com/jestjs/jest/issues/15588)) ## 30.2.0 From 56fc4cc595a0d781f438d7cf37b4ecf8719a7a00 Mon Sep 17 00:00:00 2001 From: hainenber Date: Tue, 7 Oct 2025 23:17:21 +0700 Subject: [PATCH 3/7] fix(ci): ensure project-specific `collectCoverage` default value is `undefined` Signed-off-by: hainenber --- packages/jest-transform/src/__tests__/shouldInstrument.test.ts | 2 +- packages/test-utils/src/config.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/jest-transform/src/__tests__/shouldInstrument.test.ts b/packages/jest-transform/src/__tests__/shouldInstrument.test.ts index e48229f06a6f..b598c28c9ff2 100644 --- a/packages/jest-transform/src/__tests__/shouldInstrument.test.ts +++ b/packages/jest-transform/src/__tests__/shouldInstrument.test.ts @@ -18,7 +18,7 @@ describe('shouldInstrument', () => { }), changedFiles: undefined, }; - const defaultConfig = makeProjectConfig({rootDir: '/'}); + const defaultConfig = makeProjectConfig({rootDir: '/', collectCoverage: undefined}); describe('should return true', () => { const testShouldInstrument = ( filename = defaultFilename, diff --git a/packages/test-utils/src/config.ts b/packages/test-utils/src/config.ts index efd92fc5f6b5..85a584e7a959 100644 --- a/packages/test-utils/src/config.ts +++ b/packages/test-utils/src/config.ts @@ -75,7 +75,7 @@ const DEFAULT_PROJECT_CONFIG: Config.ProjectConfig = { cache: false, cacheDirectory: '/test_cache_dir/', clearMocks: false, - collectCoverage: false, + collectCoverage: undefined, collectCoverageFrom: ['src', '!public'], coverageDirectory: 'coverage', coveragePathIgnorePatterns: [], From 2f17ab4990adce805b1e7ff3d07e1cf0e0032ded Mon Sep 17 00:00:00 2001 From: hainenber Date: Tue, 7 Oct 2025 23:20:49 +0700 Subject: [PATCH 4/7] fix(ci): resolve lint issues + update failed snapshot Signed-off-by: hainenber --- e2e/__tests__/__snapshots__/showConfig.test.ts.snap | 1 - .../jest-transform/src/__tests__/ScriptTransformer.test.ts | 2 +- .../jest-transform/src/__tests__/shouldInstrument.test.ts | 5 ++++- packages/jest-transform/src/shouldInstrument.ts | 5 ++++- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/e2e/__tests__/__snapshots__/showConfig.test.ts.snap b/e2e/__tests__/__snapshots__/showConfig.test.ts.snap index 6e3b84b759de..b86d7957163a 100644 --- a/e2e/__tests__/__snapshots__/showConfig.test.ts.snap +++ b/e2e/__tests__/__snapshots__/showConfig.test.ts.snap @@ -105,7 +105,6 @@ exports[`--showConfig outputs config info and exits 1`] = ` "bail": 0, "changedFilesWithAncestor": false, "ci": true, - "collectCoverage": false, "collectCoverageFrom": [], "coverageDirectory": "<>/coverage", "coverageProvider": "babel", diff --git a/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts b/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts index 9de1f1d62d45..7671c76d2907 100644 --- a/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts +++ b/packages/jest-transform/src/__tests__/ScriptTransformer.test.ts @@ -314,10 +314,10 @@ describe('ScriptTransformer', () => { config = makeProjectConfig({ cache: true, cacheDirectory: '/cache/', + collectCoverage: undefined, id: 'test', rootDir: '/', transformIgnorePatterns: ['/node_modules/'], - collectCoverage: undefined }); createScriptTransformer = ( diff --git a/packages/jest-transform/src/__tests__/shouldInstrument.test.ts b/packages/jest-transform/src/__tests__/shouldInstrument.test.ts index b598c28c9ff2..c825a411816f 100644 --- a/packages/jest-transform/src/__tests__/shouldInstrument.test.ts +++ b/packages/jest-transform/src/__tests__/shouldInstrument.test.ts @@ -18,7 +18,10 @@ describe('shouldInstrument', () => { }), changedFiles: undefined, }; - const defaultConfig = makeProjectConfig({rootDir: '/', collectCoverage: undefined}); + const defaultConfig = makeProjectConfig({ + collectCoverage: undefined, + rootDir: '/', + }); describe('should return true', () => { const testShouldInstrument = ( filename = defaultFilename, diff --git a/packages/jest-transform/src/shouldInstrument.ts b/packages/jest-transform/src/shouldInstrument.ts index e3036f297e07..dc6fc22f9b73 100644 --- a/packages/jest-transform/src/shouldInstrument.ts +++ b/packages/jest-transform/src/shouldInstrument.ts @@ -37,7 +37,10 @@ export default function shouldInstrument( loadedFilenames?: Array, ): boolean { // Do not instrument when `collectCoverage` is toggled off global or project-wide - if (!options.collectCoverage || (typeof config.collectCoverage === 'boolean' && !config.collectCoverage)) { + if ( + !options.collectCoverage || + (typeof config.collectCoverage === 'boolean' && !config.collectCoverage) + ) { return false; } From 7808876e148b5abd6705faed66d1baa886c1eeb9 Mon Sep 17 00:00:00 2001 From: hainenber Date: Wed, 8 Oct 2025 09:25:52 +0700 Subject: [PATCH 5/7] chore(ci): update failed snapshot in `logDebugMessages.test.ts` Signed-off-by: hainenber --- .../lib/__tests__/__snapshots__/logDebugMessages.test.ts.snap | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/jest-core/src/lib/__tests__/__snapshots__/logDebugMessages.test.ts.snap b/packages/jest-core/src/lib/__tests__/__snapshots__/logDebugMessages.test.ts.snap index 48b854bd871e..ec07be1650a5 100644 --- a/packages/jest-core/src/lib/__tests__/__snapshots__/logDebugMessages.test.ts.snap +++ b/packages/jest-core/src/lib/__tests__/__snapshots__/logDebugMessages.test.ts.snap @@ -7,7 +7,6 @@ exports[`prints the config object 1`] = ` "cache": false, "cacheDirectory": "/test_cache_dir/", "clearMocks": false, - "collectCoverage": false, "collectCoverageFrom": [ "src", "!public" From 3400fee82566b87e6d4c79ce39beac5e94295a42 Mon Sep 17 00:00:00 2001 From: hainenber Date: Mon, 13 Oct 2025 23:13:51 +0700 Subject: [PATCH 6/7] chore: add E2E test for better assurance Signed-off-by: hainenber --- ...overageReportForMultiProjects.test.ts.snap | 25 +++++++++++++++++ .../coverageReportForMultiProjects.test.ts | 20 ++++++++++++++ .../jest.config.js | 27 +++++++++++++++++++ .../package.json | 6 +++++ .../packages/package-1/index.js | 3 +++ .../package-1/test-e2e/example.e2e.js | 7 +++++ .../packages/package-2/index.js | 3 +++ .../package-2/test-e2e/example.e2e.js | 7 +++++ .../packages/package-3/index.js | 3 +++ .../package-3/test-e2e/example.e2e.js | 5 ++++ 10 files changed, 106 insertions(+) create mode 100644 e2e/__tests__/__snapshots__/coverageReportForMultiProjects.test.ts.snap create mode 100644 e2e/__tests__/coverageReportForMultiProjects.test.ts create mode 100644 e2e/coverage-report-for-multi-projects/jest.config.js create mode 100644 e2e/coverage-report-for-multi-projects/package.json create mode 100644 e2e/coverage-report-for-multi-projects/packages/package-1/index.js create mode 100644 e2e/coverage-report-for-multi-projects/packages/package-1/test-e2e/example.e2e.js create mode 100644 e2e/coverage-report-for-multi-projects/packages/package-2/index.js create mode 100644 e2e/coverage-report-for-multi-projects/packages/package-2/test-e2e/example.e2e.js create mode 100644 e2e/coverage-report-for-multi-projects/packages/package-3/index.js create mode 100644 e2e/coverage-report-for-multi-projects/packages/package-3/test-e2e/example.e2e.js diff --git a/e2e/__tests__/__snapshots__/coverageReportForMultiProjects.test.ts.snap b/e2e/__tests__/__snapshots__/coverageReportForMultiProjects.test.ts.snap new file mode 100644 index 000000000000..a0b77ab765d6 --- /dev/null +++ b/e2e/__tests__/__snapshots__/coverageReportForMultiProjects.test.ts.snap @@ -0,0 +1,25 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`exclude a project's code coverage if its collectCoverage is toggled off 1`] = ` +"-----------|---------|----------|---------|---------|------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-----------|---------|----------|---------|---------|------------------- +All files | 100 | 100 | 100 | 100 | + package-1 | 100 | 100 | 100 | 100 | + index.js | 100 | 100 | 100 | 100 | + package-2 | 100 | 100 | 100 | 100 | + index.js | 100 | 100 | 100 | 100 | +-----------|---------|----------|---------|---------|-------------------" +`; + +exports[`exclude a project's code coverage if its collectCoverage is toggled off 2`] = ` +"PASS Package 3 packages/package-3/test-e2e/example.e2e.js +PASS Package 2 packages/package-2/test-e2e/example.e2e.js +PASS Package 1 packages/package-1/test-e2e/example.e2e.js + +Test Suites: 3 passed, 3 total +Tests: 3 passed, 3 total +Snapshots: 0 total +Time: 0.554 s +Ran all test suites in 3 projects." +`; diff --git a/e2e/__tests__/coverageReportForMultiProjects.test.ts b/e2e/__tests__/coverageReportForMultiProjects.test.ts new file mode 100644 index 000000000000..33491dc0804c --- /dev/null +++ b/e2e/__tests__/coverageReportForMultiProjects.test.ts @@ -0,0 +1,20 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import * as path from 'path'; +import runJest from '../runJest'; + +const DIR = path.resolve(__dirname, '../coverage-report-for-multi-projects'); + +test('exclude a project\'s code coverage if its collectCoverage is toggled off', () => { + const {stdout, stderr, exitCode} = runJest(DIR, [ + '--no-cache', + ]); + expect(stdout).toMatchSnapshot(); + expect(stderr).toMatchSnapshot(); + expect(exitCode).toBe(0); +}) diff --git a/e2e/coverage-report-for-multi-projects/jest.config.js b/e2e/coverage-report-for-multi-projects/jest.config.js new file mode 100644 index 000000000000..a13daf68edeb --- /dev/null +++ b/e2e/coverage-report-for-multi-projects/jest.config.js @@ -0,0 +1,27 @@ +export default { + clearMocks: true, + collectCoverage: true, + collectCoverageFrom: ['./**/index.js', '!./test-e2e/**/*.js'], + coverageProvider: 'v8', + coverageThreshold: { + global: {statements: 80, branches: 80, functions: 80, lines: 80}, + }, + projects: [ + { + displayName: 'Package 1', + rootDir: '/packages/package-1', + testMatch: ['/test-e2e/**/*.e2e.js'], + }, + { + displayName: 'Package 2', + rootDir: '/packages/package-2', + testMatch: ['/test-e2e/**/*.e2e.js'], + }, + { + displayName: 'Package 3', + rootDir: '/packages/package-3', + testMatch: ['/test-e2e/**/*.e2e.js'], + collectCoverage: false, + }, + ], +}; diff --git a/e2e/coverage-report-for-multi-projects/package.json b/e2e/coverage-report-for-multi-projects/package.json new file mode 100644 index 000000000000..1befe01f8d0a --- /dev/null +++ b/e2e/coverage-report-for-multi-projects/package.json @@ -0,0 +1,6 @@ +{ + "type": "module", + "workspaces": [ + "packages/*" + ] +} diff --git a/e2e/coverage-report-for-multi-projects/packages/package-1/index.js b/e2e/coverage-report-for-multi-projects/packages/package-1/index.js new file mode 100644 index 000000000000..f82a7bc1dd01 --- /dev/null +++ b/e2e/coverage-report-for-multi-projects/packages/package-1/index.js @@ -0,0 +1,3 @@ +module.exports = { + package1: () => true, +}; diff --git a/e2e/coverage-report-for-multi-projects/packages/package-1/test-e2e/example.e2e.js b/e2e/coverage-report-for-multi-projects/packages/package-1/test-e2e/example.e2e.js new file mode 100644 index 000000000000..c1e4d82c3528 --- /dev/null +++ b/e2e/coverage-report-for-multi-projects/packages/package-1/test-e2e/example.e2e.js @@ -0,0 +1,7 @@ +const {package1} = require('../index.js'); + +describe('Example Package 1 Test', () => { + it('should run', () => { + expect(package1()).toBeTruthy(); + }); +}); diff --git a/e2e/coverage-report-for-multi-projects/packages/package-2/index.js b/e2e/coverage-report-for-multi-projects/packages/package-2/index.js new file mode 100644 index 000000000000..f80abeb10420 --- /dev/null +++ b/e2e/coverage-report-for-multi-projects/packages/package-2/index.js @@ -0,0 +1,3 @@ +module.exports = { + package2: () => true, +}; diff --git a/e2e/coverage-report-for-multi-projects/packages/package-2/test-e2e/example.e2e.js b/e2e/coverage-report-for-multi-projects/packages/package-2/test-e2e/example.e2e.js new file mode 100644 index 000000000000..e8148a8f20b1 --- /dev/null +++ b/e2e/coverage-report-for-multi-projects/packages/package-2/test-e2e/example.e2e.js @@ -0,0 +1,7 @@ +const {package2} = require('../index'); + +describe('Example Package 2 Test', () => { + it('should run', () => { + expect(package2()).toBeTruthy(); + }); +}); diff --git a/e2e/coverage-report-for-multi-projects/packages/package-3/index.js b/e2e/coverage-report-for-multi-projects/packages/package-3/index.js new file mode 100644 index 000000000000..ab07fdcd2cff --- /dev/null +++ b/e2e/coverage-report-for-multi-projects/packages/package-3/index.js @@ -0,0 +1,3 @@ +module.exports = { + package3: () => true, +}; diff --git a/e2e/coverage-report-for-multi-projects/packages/package-3/test-e2e/example.e2e.js b/e2e/coverage-report-for-multi-projects/packages/package-3/test-e2e/example.e2e.js new file mode 100644 index 000000000000..7a9ab14b852b --- /dev/null +++ b/e2e/coverage-report-for-multi-projects/packages/package-3/test-e2e/example.e2e.js @@ -0,0 +1,5 @@ +describe('Example Package 3 Test', () => { + it('should run', () => { + expect(true).toBeTruthy(); + }); +}); From 5bd0409732e8ef030444fea4e66d9bef5296729e Mon Sep 17 00:00:00 2001 From: hainenber Date: Mon, 13 Oct 2025 23:59:03 +0700 Subject: [PATCH 7/7] chore: resolve lint issues Signed-off-by: hainenber --- ...overageReportForMultiProjects.test.ts.snap | 12 ----------- .../coverageReportForMultiProjects.test.ts | 11 ++++------ .../jest.config.js | 20 +++++++++++-------- .../package-1/__tests__/example.e2e.js | 15 ++++++++++++++ .../packages/package-1/index.js | 8 ++++++++ .../package-1/test-e2e/example.e2e.js | 7 ------- .../package-2/__tests__/example.e2e.js | 15 ++++++++++++++ .../packages/package-2/index.js | 8 ++++++++ .../package-2/test-e2e/example.e2e.js | 7 ------- .../package-3/__tests__/example.e2e.js | 13 ++++++++++++ .../packages/package-3/index.js | 8 ++++++++ .../package-3/test-e2e/example.e2e.js | 5 ----- 12 files changed, 83 insertions(+), 46 deletions(-) create mode 100644 e2e/coverage-report-for-multi-projects/packages/package-1/__tests__/example.e2e.js delete mode 100644 e2e/coverage-report-for-multi-projects/packages/package-1/test-e2e/example.e2e.js create mode 100644 e2e/coverage-report-for-multi-projects/packages/package-2/__tests__/example.e2e.js delete mode 100644 e2e/coverage-report-for-multi-projects/packages/package-2/test-e2e/example.e2e.js create mode 100644 e2e/coverage-report-for-multi-projects/packages/package-3/__tests__/example.e2e.js delete mode 100644 e2e/coverage-report-for-multi-projects/packages/package-3/test-e2e/example.e2e.js diff --git a/e2e/__tests__/__snapshots__/coverageReportForMultiProjects.test.ts.snap b/e2e/__tests__/__snapshots__/coverageReportForMultiProjects.test.ts.snap index a0b77ab765d6..37c1f2f315b2 100644 --- a/e2e/__tests__/__snapshots__/coverageReportForMultiProjects.test.ts.snap +++ b/e2e/__tests__/__snapshots__/coverageReportForMultiProjects.test.ts.snap @@ -11,15 +11,3 @@ All files | 100 | 100 | 100 | 100 | index.js | 100 | 100 | 100 | 100 | -----------|---------|----------|---------|---------|-------------------" `; - -exports[`exclude a project's code coverage if its collectCoverage is toggled off 2`] = ` -"PASS Package 3 packages/package-3/test-e2e/example.e2e.js -PASS Package 2 packages/package-2/test-e2e/example.e2e.js -PASS Package 1 packages/package-1/test-e2e/example.e2e.js - -Test Suites: 3 passed, 3 total -Tests: 3 passed, 3 total -Snapshots: 0 total -Time: 0.554 s -Ran all test suites in 3 projects." -`; diff --git a/e2e/__tests__/coverageReportForMultiProjects.test.ts b/e2e/__tests__/coverageReportForMultiProjects.test.ts index 33491dc0804c..282e6e6485a3 100644 --- a/e2e/__tests__/coverageReportForMultiProjects.test.ts +++ b/e2e/__tests__/coverageReportForMultiProjects.test.ts @@ -10,11 +10,8 @@ import runJest from '../runJest'; const DIR = path.resolve(__dirname, '../coverage-report-for-multi-projects'); -test('exclude a project\'s code coverage if its collectCoverage is toggled off', () => { - const {stdout, stderr, exitCode} = runJest(DIR, [ - '--no-cache', - ]); +test("exclude a project's code coverage if its collectCoverage is toggled off", () => { + const {stdout, exitCode} = runJest(DIR, ['--no-cache']); expect(stdout).toMatchSnapshot(); - expect(stderr).toMatchSnapshot(); - expect(exitCode).toBe(0); -}) + expect(exitCode).toBe(0); +}); diff --git a/e2e/coverage-report-for-multi-projects/jest.config.js b/e2e/coverage-report-for-multi-projects/jest.config.js index a13daf68edeb..dade8ef68f77 100644 --- a/e2e/coverage-report-for-multi-projects/jest.config.js +++ b/e2e/coverage-report-for-multi-projects/jest.config.js @@ -1,27 +1,31 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + export default { clearMocks: true, collectCoverage: true, - collectCoverageFrom: ['./**/index.js', '!./test-e2e/**/*.js'], + collectCoverageFrom: ['./**/index.js', '!./__tests__/**/*.js'], coverageProvider: 'v8', - coverageThreshold: { - global: {statements: 80, branches: 80, functions: 80, lines: 80}, - }, projects: [ { displayName: 'Package 1', rootDir: '/packages/package-1', - testMatch: ['/test-e2e/**/*.e2e.js'], + testMatch: ['/__tests__/**/*.e2e.js'], }, { displayName: 'Package 2', rootDir: '/packages/package-2', - testMatch: ['/test-e2e/**/*.e2e.js'], + testMatch: ['/__tests__/**/*.e2e.js'], }, { + collectCoverage: false, displayName: 'Package 3', rootDir: '/packages/package-3', - testMatch: ['/test-e2e/**/*.e2e.js'], - collectCoverage: false, + testMatch: ['/__tests__/**/*.e2e.js'], }, ], }; diff --git a/e2e/coverage-report-for-multi-projects/packages/package-1/__tests__/example.e2e.js b/e2e/coverage-report-for-multi-projects/packages/package-1/__tests__/example.e2e.js new file mode 100644 index 000000000000..c343d29aa2ea --- /dev/null +++ b/e2e/coverage-report-for-multi-projects/packages/package-1/__tests__/example.e2e.js @@ -0,0 +1,15 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +'use strict'; + +const {package1} = require('../index.js'); + +describe('Example Package 1 Test', () => { + it('should run', () => { + expect(package1()).toBeTruthy(); + }); +}); diff --git a/e2e/coverage-report-for-multi-projects/packages/package-1/index.js b/e2e/coverage-report-for-multi-projects/packages/package-1/index.js index f82a7bc1dd01..5d28ad35f6d6 100644 --- a/e2e/coverage-report-for-multi-projects/packages/package-1/index.js +++ b/e2e/coverage-report-for-multi-projects/packages/package-1/index.js @@ -1,3 +1,11 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +'use strict'; + module.exports = { package1: () => true, }; diff --git a/e2e/coverage-report-for-multi-projects/packages/package-1/test-e2e/example.e2e.js b/e2e/coverage-report-for-multi-projects/packages/package-1/test-e2e/example.e2e.js deleted file mode 100644 index c1e4d82c3528..000000000000 --- a/e2e/coverage-report-for-multi-projects/packages/package-1/test-e2e/example.e2e.js +++ /dev/null @@ -1,7 +0,0 @@ -const {package1} = require('../index.js'); - -describe('Example Package 1 Test', () => { - it('should run', () => { - expect(package1()).toBeTruthy(); - }); -}); diff --git a/e2e/coverage-report-for-multi-projects/packages/package-2/__tests__/example.e2e.js b/e2e/coverage-report-for-multi-projects/packages/package-2/__tests__/example.e2e.js new file mode 100644 index 000000000000..5e608e9b90ca --- /dev/null +++ b/e2e/coverage-report-for-multi-projects/packages/package-2/__tests__/example.e2e.js @@ -0,0 +1,15 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +'use strict'; + +const {package2} = require('../index'); + +describe('Example Package 2 Test', () => { + it('should run', () => { + expect(package2()).toBeTruthy(); + }); +}); diff --git a/e2e/coverage-report-for-multi-projects/packages/package-2/index.js b/e2e/coverage-report-for-multi-projects/packages/package-2/index.js index f80abeb10420..eb6a86c03e33 100644 --- a/e2e/coverage-report-for-multi-projects/packages/package-2/index.js +++ b/e2e/coverage-report-for-multi-projects/packages/package-2/index.js @@ -1,3 +1,11 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +'use strict'; + module.exports = { package2: () => true, }; diff --git a/e2e/coverage-report-for-multi-projects/packages/package-2/test-e2e/example.e2e.js b/e2e/coverage-report-for-multi-projects/packages/package-2/test-e2e/example.e2e.js deleted file mode 100644 index e8148a8f20b1..000000000000 --- a/e2e/coverage-report-for-multi-projects/packages/package-2/test-e2e/example.e2e.js +++ /dev/null @@ -1,7 +0,0 @@ -const {package2} = require('../index'); - -describe('Example Package 2 Test', () => { - it('should run', () => { - expect(package2()).toBeTruthy(); - }); -}); diff --git a/e2e/coverage-report-for-multi-projects/packages/package-3/__tests__/example.e2e.js b/e2e/coverage-report-for-multi-projects/packages/package-3/__tests__/example.e2e.js new file mode 100644 index 000000000000..593fbb3bfbcd --- /dev/null +++ b/e2e/coverage-report-for-multi-projects/packages/package-3/__tests__/example.e2e.js @@ -0,0 +1,13 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +'use strict'; + +describe('Example Package 3 Test', () => { + it('should run', () => { + expect(true).toBeTruthy(); + }); +}); diff --git a/e2e/coverage-report-for-multi-projects/packages/package-3/index.js b/e2e/coverage-report-for-multi-projects/packages/package-3/index.js index ab07fdcd2cff..e371f36f4837 100644 --- a/e2e/coverage-report-for-multi-projects/packages/package-3/index.js +++ b/e2e/coverage-report-for-multi-projects/packages/package-3/index.js @@ -1,3 +1,11 @@ +/** + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ +'use strict'; + module.exports = { package3: () => true, }; diff --git a/e2e/coverage-report-for-multi-projects/packages/package-3/test-e2e/example.e2e.js b/e2e/coverage-report-for-multi-projects/packages/package-3/test-e2e/example.e2e.js deleted file mode 100644 index 7a9ab14b852b..000000000000 --- a/e2e/coverage-report-for-multi-projects/packages/package-3/test-e2e/example.e2e.js +++ /dev/null @@ -1,5 +0,0 @@ -describe('Example Package 3 Test', () => { - it('should run', () => { - expect(true).toBeTruthy(); - }); -});