From 68d56c5be81e730d500c708172ec9da5b3b3a6bd Mon Sep 17 00:00:00 2001 From: Tom Mrazauskas Date: Sat, 9 Apr 2022 19:29:45 +0300 Subject: [PATCH 1/9] feat: GitHubActions goes live --- jest.config.js | 1 + packages/jest-config/src/constants.ts | 2 +- packages/jest-config/src/normalize.ts | 4 +- packages/jest-core/src/TestScheduler.ts | 57 ++++++++++--------- .../src/__tests__/TestScheduler.test.js | 40 ++++++++++++- .../src/GitHubActionsReporter.ts | 2 + 6 files changed, 76 insertions(+), 30 deletions(-) diff --git a/jest.config.js b/jest.config.js index f6eb19eb57c9..121a53a6655a 100644 --- a/jest.config.js +++ b/jest.config.js @@ -31,6 +31,7 @@ module.exports = { 'e2e/runtime-internal-module-registry/__mocks__', ], projects: ['', '/examples/*/'], + reporters: ['default', 'github-actions'], setupFilesAfterEnv: ['/testSetupFile.js'], snapshotFormat: { escapeString: false, diff --git a/packages/jest-config/src/constants.ts b/packages/jest-config/src/constants.ts index 35e13c6f0a46..601362499677 100644 --- a/packages/jest-config/src/constants.ts +++ b/packages/jest-config/src/constants.ts @@ -8,8 +8,8 @@ import * as path from 'path'; export const NODE_MODULES = `${path.sep}node_modules${path.sep}`; +export const BUILD_IN_REPORTERS = ['default', 'github-actions']; export const DEFAULT_JS_PATTERN = '\\.[jt]sx?$'; -export const DEFAULT_REPORTER_LABEL = 'default'; export const PACKAGE_JSON = 'package.json'; export const JEST_CONFIG_BASE_NAME = 'jest.config'; export const JEST_CONFIG_EXT_CJS = '.cjs'; diff --git a/packages/jest-config/src/normalize.ts b/packages/jest-config/src/normalize.ts index 7f22cb5e72e7..1d3398cd0a9a 100644 --- a/packages/jest-config/src/normalize.ts +++ b/packages/jest-config/src/normalize.ts @@ -32,7 +32,7 @@ import DEPRECATED_CONFIG from './Deprecated'; import {validateReporters} from './ReporterValidationErrors'; import VALID_CONFIG from './ValidConfig'; import {getDisplayNameColor} from './color'; -import {DEFAULT_JS_PATTERN, DEFAULT_REPORTER_LABEL} from './constants'; +import {BUILD_IN_REPORTERS, DEFAULT_JS_PATTERN} from './constants'; import getMaxWorkers from './getMaxWorkers'; import {parseShardPair} from './parseShardPair'; import setFromArgv from './setFromArgv'; @@ -433,7 +433,7 @@ const normalizeReporters = (options: Config.InitialOptionsWithRootDir) => { normalizedReporterConfig[0], ); - if (reporterPath !== DEFAULT_REPORTER_LABEL) { + if (!BUILD_IN_REPORTERS.includes(reporterPath)) { const reporter = Resolver.findNodeModule(reporterPath, { basedir: options.rootDir, }); diff --git a/packages/jest-core/src/TestScheduler.ts b/packages/jest-core/src/TestScheduler.ts index 9cceb5fb1bdd..ab439730a731 100644 --- a/packages/jest-core/src/TestScheduler.ts +++ b/packages/jest-core/src/TestScheduler.ts @@ -12,6 +12,7 @@ import exit = require('exit'); import { CoverageReporter, DefaultReporter, + GitHubActionsReporter, NotifyReporter, Reporter, SummaryReporter, @@ -28,6 +29,7 @@ import { } from '@jest/test-result'; import {createScriptTransformer} from '@jest/transform'; import type {Config} from '@jest/types'; +import {constants} from 'jest-config'; import {formatExecError} from 'jest-message-util'; import type {JestTestRunner, TestRunnerContext} from 'jest-runner'; import type {Context} from 'jest-runtime'; @@ -330,25 +332,40 @@ class TestScheduler { } } - private _shouldAddDefaultReporters( - reporters?: Array, - ): boolean { - return ( - !reporters || - !!reporters.find( - reporter => this._getReporterProps(reporter).path === 'default', - ) - ); - } - async _setupReporters() { const {collectCoverage, notify, reporters} = this._globalConfig; - const isDefault = this._shouldAddDefaultReporters(reporters); + + if (notify) { + this.addReporter( + new NotifyReporter( + this._globalConfig, + this._options.startRun, + this._context, + ), + ); + } + + if (!reporters) { + this._setupDefaultReporters(collectCoverage); + return; + } + + const reporterNames = reporters.map( + reporter => this._getReporterProps(reporter).path, + ); + + const isDefault = reporterNames?.includes('default'); + const isGitHubActions = + process.env.GITHUB_ACTIONS && reporterNames?.includes('github-actions'); if (isDefault) { this._setupDefaultReporters(collectCoverage); } + if (isGitHubActions) { + this.addReporter(new GitHubActionsReporter()); + } + if (!isDefault && collectCoverage) { this.addReporter( new CoverageReporter(this._globalConfig, { @@ -359,19 +376,7 @@ class TestScheduler { ); } - if (notify) { - this.addReporter( - new NotifyReporter( - this._globalConfig, - this._options.startRun, - this._context, - ), - ); - } - - if (reporters && Array.isArray(reporters)) { - await this._addCustomReporters(reporters); - } + await this._addCustomReporters(reporters); } private _setupDefaultReporters(collectCoverage: boolean) { @@ -400,7 +405,7 @@ class TestScheduler { for (const reporter of reporters) { const {options, path} = this._getReporterProps(reporter); - if (path === 'default') continue; + if (constants.BUILD_IN_REPORTERS.includes(path)) continue; try { const Reporter = await requireOrImportModule(path, true); diff --git a/packages/jest-core/src/__tests__/TestScheduler.test.js b/packages/jest-core/src/__tests__/TestScheduler.test.js index 98b0d705ad7e..d7a878850afa 100644 --- a/packages/jest-core/src/__tests__/TestScheduler.test.js +++ b/packages/jest-core/src/__tests__/TestScheduler.test.js @@ -6,12 +6,13 @@ * */ -import {SummaryReporter} from '@jest/reporters'; +import {GitHubActionsReporter, SummaryReporter} from '@jest/reporters'; import {makeGlobalConfig, makeProjectConfig} from '@jest/test-utils'; import {createTestScheduler} from '../TestScheduler'; import * as testSchedulerHelper from '../testSchedulerHelper'; jest.mock('@jest/reporters'); + const mockSerialRunner = { isSerial: true, runTests: jest.fn(), @@ -29,10 +30,18 @@ jest.mock('jest-runner-parallel', () => jest.fn(() => mockParallelRunner), { const spyShouldRunInBand = jest.spyOn(testSchedulerHelper, 'shouldRunInBand'); +const original_GITHUB_ACTIONS = process.env.GITHUB_ACTIONS; + beforeEach(() => { mockSerialRunner.runTests.mockClear(); mockParallelRunner.runTests.mockClear(); spyShouldRunInBand.mockClear(); + + process.env.GITHUB_ACTIONS = true; +}); + +afterEach(() => { + process.env.GITHUB_ACTIONS = original_GITHUB_ACTIONS; }); test('config for reporters supports `default`', async () => { @@ -78,6 +87,35 @@ test('config for reporters supports `default`', async () => { expect(emptyReportersScheduler._dispatcher._reporters.length).toBe(0); }); +test('config for reporters supports `github-actions`', async () => { + await createTestScheduler( + makeGlobalConfig({ + reporters: [], + }), + {}, + {}, + ); + expect(GitHubActionsReporter).toHaveBeenCalledTimes(0); + + await createTestScheduler( + makeGlobalConfig({ + reporters: ['github-actions'], + }), + {}, + {}, + ); + expect(GitHubActionsReporter).toHaveBeenCalledTimes(100); + + await createTestScheduler( + makeGlobalConfig({ + reporters: ['default', 'github-actions'], + }), + {}, + {}, + ); + expect(GitHubActionsReporter).toHaveBeenCalledTimes(2); +}); + test('.addReporter() .removeReporter()', async () => { const scheduler = await createTestScheduler(makeGlobalConfig(), {}, {}); const reporter = new SummaryReporter(); diff --git a/packages/jest-reporters/src/GitHubActionsReporter.ts b/packages/jest-reporters/src/GitHubActionsReporter.ts index b9188e701b7b..b6095659a8d6 100644 --- a/packages/jest-reporters/src/GitHubActionsReporter.ts +++ b/packages/jest-reporters/src/GitHubActionsReporter.ts @@ -23,6 +23,8 @@ function replaceEntities(s: string): string { } export default class GitHubActionsReporter extends BaseReporter { + static readonly filename = __filename; + override onRunComplete( _contexts?: Set, aggregatedResults?: AggregatedResult, From b1ce7f43dfb7253268543d71873403023b2a16cc Mon Sep 17 00:00:00 2001 From: Tom Mrazauskas Date: Sat, 9 Apr 2022 19:54:45 +0300 Subject: [PATCH 2/9] wrong config? --- jest.config.ci.js | 1 + jest.config.js | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/jest.config.ci.js b/jest.config.ci.js index 68e16b4300ac..953f52e08310 100644 --- a/jest.config.ci.js +++ b/jest.config.ci.js @@ -11,6 +11,7 @@ module.exports = { ...require('./jest.config'), coverageReporters: ['json'], reporters: [ + 'github-actions', [ 'jest-junit', {outputDirectory: 'reports/junit', outputName: 'js-test-results.xml'}, diff --git a/jest.config.js b/jest.config.js index 121a53a6655a..f6eb19eb57c9 100644 --- a/jest.config.js +++ b/jest.config.js @@ -31,7 +31,6 @@ module.exports = { 'e2e/runtime-internal-module-registry/__mocks__', ], projects: ['', '/examples/*/'], - reporters: ['default', 'github-actions'], setupFilesAfterEnv: ['/testSetupFile.js'], snapshotFormat: { escapeString: false, From 8ac8ce01a148d69a50e0b2a22e3008431bf45eb4 Mon Sep 17 00:00:00 2001 From: Tom Mrazauskas Date: Sat, 9 Apr 2022 20:05:32 +0300 Subject: [PATCH 3/9] line break? --- packages/jest-reporters/src/GitHubActionsReporter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jest-reporters/src/GitHubActionsReporter.ts b/packages/jest-reporters/src/GitHubActionsReporter.ts index b6095659a8d6..454eeb93705b 100644 --- a/packages/jest-reporters/src/GitHubActionsReporter.ts +++ b/packages/jest-reporters/src/GitHubActionsReporter.ts @@ -50,7 +50,7 @@ function getMessages(results: Array | undefined) { .filter((m): m is RegExpExecArray => m !== null) .map( ([message, line, col]) => - `::error file=${testFilePath},line=${line},col=${col}::${message}`, + `\n::error file=${testFilePath},line=${line},col=${col}::${message}`, ), ); } From 12c4de74b3a2cafa56bc504b410d1c6bdbc06b94 Mon Sep 17 00:00:00 2001 From: Tom Mrazauskas Date: Sat, 9 Apr 2022 20:17:33 +0300 Subject: [PATCH 4/9] snap --- .../__tests__/__snapshots__/GitHubActionsReporter.test.js.snap | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/jest-reporters/src/__tests__/__snapshots__/GitHubActionsReporter.test.js.snap b/packages/jest-reporters/src/__tests__/__snapshots__/GitHubActionsReporter.test.js.snap index c523c4dd3448..0deced8ea4cf 100644 --- a/packages/jest-reporters/src/__tests__/__snapshots__/GitHubActionsReporter.test.js.snap +++ b/packages/jest-reporters/src/__tests__/__snapshots__/GitHubActionsReporter.test.js.snap @@ -1,6 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`reporter extracts the correct filename, line, and column 1`] = ` -"::error file=/home/runner/work/jest/jest/some.test.js,line=4,col=17::%0A Error: expect(received).toBe(expected) // Object.is equality%0A%0A %0A%0A Expected: "b"%0A%0A Received: "a"%0A%0A at Object. (/home/runner/work/jest/jest/some.test.js:4:17)%0A%0A at Object.asyncJestTest (/home/runner/work/jest/jest/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:106:37)%0A%0A at /home/runner/work/jest/jest/node_modules/jest-jasmine2/build/queueRunner.js:45:12%0A%0A at new Promise ()%0A%0A at mapper (/home/runner/work/jest/jest/node_modules/jest-jasmine2/build/queueRunner.js:28:19)%0A%0A at /home/runner/work/jest/jest/node_modules/jest-jasmine2/build/queueRunner.js:75:41%0A%0A at processTicksAndRejections (internal/process/task_queues.js:93:5)%0A +" +::error file=/home/runner/work/jest/jest/some.test.js,line=4,col=17::%0A Error: expect(received).toBe(expected) // Object.is equality%0A%0A %0A%0A Expected: "b"%0A%0A Received: "a"%0A%0A at Object. (/home/runner/work/jest/jest/some.test.js:4:17)%0A%0A at Object.asyncJestTest (/home/runner/work/jest/jest/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:106:37)%0A%0A at /home/runner/work/jest/jest/node_modules/jest-jasmine2/build/queueRunner.js:45:12%0A%0A at new Promise ()%0A%0A at mapper (/home/runner/work/jest/jest/node_modules/jest-jasmine2/build/queueRunner.js:28:19)%0A%0A at /home/runner/work/jest/jest/node_modules/jest-jasmine2/build/queueRunner.js:75:41%0A%0A at processTicksAndRejections (internal/process/task_queues.js:93:5)%0A " `; From 6fdfc0d17c80d5722a6e3e9dfec828e36e630e08 Mon Sep 17 00:00:00 2001 From: Tom Mrazauskas Date: Sat, 9 Apr 2022 20:17:46 +0300 Subject: [PATCH 5/9] fix test --- packages/jest-core/src/__tests__/TestScheduler.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/jest-core/src/__tests__/TestScheduler.test.js b/packages/jest-core/src/__tests__/TestScheduler.test.js index d7a878850afa..87b5ef1b6178 100644 --- a/packages/jest-core/src/__tests__/TestScheduler.test.js +++ b/packages/jest-core/src/__tests__/TestScheduler.test.js @@ -104,7 +104,7 @@ test('config for reporters supports `github-actions`', async () => { {}, {}, ); - expect(GitHubActionsReporter).toHaveBeenCalledTimes(100); + expect(GitHubActionsReporter).toHaveBeenCalledTimes(1); await createTestScheduler( makeGlobalConfig({ From a6a96fb7e63acbbe26ea098d9f8bc916c04dba68 Mon Sep 17 00:00:00 2001 From: Tom Mrazauskas Date: Sat, 9 Apr 2022 20:21:00 +0300 Subject: [PATCH 6/9] changelog entry --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7be38c0984c0..6e708c847eb1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,7 +37,7 @@ - `[jest-mock]` [**BREAKING**] Improve the usage of `jest.fn` generic type argument ([#12489](https://github.com/facebook/jest/pull/12489)) - `[jest-mock]` Add support for auto-mocking async generator functions ([#11080](https://github.com/facebook/jest/pull/11080)) - `[jest-mock]` Add `contexts` member to mock functions ([#12601](https://github.com/facebook/jest/pull/12601)) -- `[jest-reporters]` Add GitHub Actions reporter ([#11320](https://github.com/facebook/jest/pull/11320)) +- `[jest-reporters]` Add GitHub Actions reporter ([#11320](https://github.com/facebook/jest/pull/11320), [#12658](https://github.com/facebook/jest/pull/12658) - `[jest-resolve]` [**BREAKING**] Add support for `package.json` `exports` ([#11961](https://github.com/facebook/jest/pull/11961), [#12373](https://github.com/facebook/jest/pull/12373)) - `[jest-resolve, jest-runtime]` Add support for `data:` URI import and mock ([#12392](https://github.com/facebook/jest/pull/12392)) - `[jest-resolve, jest-runtime]` Add support for async resolver ([#11540](https://github.com/facebook/jest/pull/11540)) From 42467d1ec493d3b80084c6f3ce5a6da33af2aa2e Mon Sep 17 00:00:00 2001 From: Tom Mrazauskas Date: Sat, 9 Apr 2022 23:29:27 +0300 Subject: [PATCH 7/9] use ci-info --- packages/jest-core/package.json | 1 + packages/jest-core/src/TestScheduler.ts | 6 +++++- packages/jest-core/src/__tests__/TestScheduler.test.js | 10 ++-------- yarn.lock | 1 + 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/jest-core/package.json b/packages/jest-core/package.json index ccf923767447..e260ce01689d 100644 --- a/packages/jest-core/package.json +++ b/packages/jest-core/package.json @@ -20,6 +20,7 @@ "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", + "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", "jest-changed-files": "^28.0.0-alpha.3", diff --git a/packages/jest-core/src/TestScheduler.ts b/packages/jest-core/src/TestScheduler.ts index ab439730a731..f0d829fda202 100644 --- a/packages/jest-core/src/TestScheduler.ts +++ b/packages/jest-core/src/TestScheduler.ts @@ -8,6 +8,7 @@ /* eslint-disable local/ban-types-eventually */ import chalk = require('chalk'); +import {GITHUB_ACTIONS} from 'ci-info'; import exit = require('exit'); import { CoverageReporter, @@ -354,9 +355,12 @@ class TestScheduler { reporter => this._getReporterProps(reporter).path, ); + console.log('GITHUB_ACTIONS'); + console.log(GITHUB_ACTIONS); + const isDefault = reporterNames?.includes('default'); const isGitHubActions = - process.env.GITHUB_ACTIONS && reporterNames?.includes('github-actions'); + GITHUB_ACTIONS && reporterNames?.includes('github-actions'); if (isDefault) { this._setupDefaultReporters(collectCoverage); diff --git a/packages/jest-core/src/__tests__/TestScheduler.test.js b/packages/jest-core/src/__tests__/TestScheduler.test.js index 87b5ef1b6178..24dd450ee9a1 100644 --- a/packages/jest-core/src/__tests__/TestScheduler.test.js +++ b/packages/jest-core/src/__tests__/TestScheduler.test.js @@ -11,6 +11,8 @@ import {makeGlobalConfig, makeProjectConfig} from '@jest/test-utils'; import {createTestScheduler} from '../TestScheduler'; import * as testSchedulerHelper from '../testSchedulerHelper'; +jest.mock('ci-info', () => ({GITHUB_ACTIONS: true})); + jest.mock('@jest/reporters'); const mockSerialRunner = { @@ -30,18 +32,10 @@ jest.mock('jest-runner-parallel', () => jest.fn(() => mockParallelRunner), { const spyShouldRunInBand = jest.spyOn(testSchedulerHelper, 'shouldRunInBand'); -const original_GITHUB_ACTIONS = process.env.GITHUB_ACTIONS; - beforeEach(() => { mockSerialRunner.runTests.mockClear(); mockParallelRunner.runTests.mockClear(); spyShouldRunInBand.mockClear(); - - process.env.GITHUB_ACTIONS = true; -}); - -afterEach(() => { - process.env.GITHUB_ACTIONS = original_GITHUB_ACTIONS; }); test('config for reporters supports `default`', async () => { diff --git a/yarn.lock b/yarn.lock index a9276f7a5f4a..f1389152dc7e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2557,6 +2557,7 @@ __metadata: "@types/rimraf": ^3.0.0 ansi-escapes: ^4.2.1 chalk: ^4.0.0 + ci-info: ^3.2.0 exit: ^0.1.2 graceful-fs: ^4.2.9 jest-changed-files: ^28.0.0-alpha.3 From fe6c9082d707d9742d92c3d7657d6664e5c5412d Mon Sep 17 00:00:00 2001 From: Tom Mrazauskas Date: Sat, 9 Apr 2022 23:40:38 +0300 Subject: [PATCH 8/9] ups.. --- packages/jest-core/src/TestScheduler.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/jest-core/src/TestScheduler.ts b/packages/jest-core/src/TestScheduler.ts index f0d829fda202..925881883819 100644 --- a/packages/jest-core/src/TestScheduler.ts +++ b/packages/jest-core/src/TestScheduler.ts @@ -355,9 +355,6 @@ class TestScheduler { reporter => this._getReporterProps(reporter).path, ); - console.log('GITHUB_ACTIONS'); - console.log(GITHUB_ACTIONS); - const isDefault = reporterNames?.includes('default'); const isGitHubActions = GITHUB_ACTIONS && reporterNames?.includes('github-actions'); From f842845cd108314d069ee6bb66767d903e2ebd4a Mon Sep 17 00:00:00 2001 From: Tom Mrazauskas Date: Sun, 10 Apr 2022 09:46:50 +0300 Subject: [PATCH 9/9] inline reporter names --- packages/jest-config/src/constants.ts | 1 - packages/jest-config/src/normalize.ts | 4 ++-- packages/jest-core/src/TestScheduler.ts | 3 +-- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/jest-config/src/constants.ts b/packages/jest-config/src/constants.ts index 601362499677..c24a77233c00 100644 --- a/packages/jest-config/src/constants.ts +++ b/packages/jest-config/src/constants.ts @@ -8,7 +8,6 @@ import * as path from 'path'; export const NODE_MODULES = `${path.sep}node_modules${path.sep}`; -export const BUILD_IN_REPORTERS = ['default', 'github-actions']; export const DEFAULT_JS_PATTERN = '\\.[jt]sx?$'; export const PACKAGE_JSON = 'package.json'; export const JEST_CONFIG_BASE_NAME = 'jest.config'; diff --git a/packages/jest-config/src/normalize.ts b/packages/jest-config/src/normalize.ts index 1d3398cd0a9a..b7fd07b904c9 100644 --- a/packages/jest-config/src/normalize.ts +++ b/packages/jest-config/src/normalize.ts @@ -32,7 +32,7 @@ import DEPRECATED_CONFIG from './Deprecated'; import {validateReporters} from './ReporterValidationErrors'; import VALID_CONFIG from './ValidConfig'; import {getDisplayNameColor} from './color'; -import {BUILD_IN_REPORTERS, DEFAULT_JS_PATTERN} from './constants'; +import {DEFAULT_JS_PATTERN} from './constants'; import getMaxWorkers from './getMaxWorkers'; import {parseShardPair} from './parseShardPair'; import setFromArgv from './setFromArgv'; @@ -433,7 +433,7 @@ const normalizeReporters = (options: Config.InitialOptionsWithRootDir) => { normalizedReporterConfig[0], ); - if (!BUILD_IN_REPORTERS.includes(reporterPath)) { + if (!['default', 'github-actions'].includes(reporterPath)) { const reporter = Resolver.findNodeModule(reporterPath, { basedir: options.rootDir, }); diff --git a/packages/jest-core/src/TestScheduler.ts b/packages/jest-core/src/TestScheduler.ts index 925881883819..9eb4465a77ca 100644 --- a/packages/jest-core/src/TestScheduler.ts +++ b/packages/jest-core/src/TestScheduler.ts @@ -30,7 +30,6 @@ import { } from '@jest/test-result'; import {createScriptTransformer} from '@jest/transform'; import type {Config} from '@jest/types'; -import {constants} from 'jest-config'; import {formatExecError} from 'jest-message-util'; import type {JestTestRunner, TestRunnerContext} from 'jest-runner'; import type {Context} from 'jest-runtime'; @@ -406,7 +405,7 @@ class TestScheduler { for (const reporter of reporters) { const {options, path} = this._getReporterProps(reporter); - if (constants.BUILD_IN_REPORTERS.includes(path)) continue; + if (['default', 'github-actions'].includes(path)) continue; try { const Reporter = await requireOrImportModule(path, true);