diff --git a/examples/plugins/src/lighthouse/src/lighthouse.plugin.ts b/examples/plugins/src/lighthouse/src/lighthouse.plugin.ts index 41086e273..1a3fcbb33 100644 --- a/examples/plugins/src/lighthouse/src/lighthouse.plugin.ts +++ b/examples/plugins/src/lighthouse/src/lighthouse.plugin.ts @@ -102,7 +102,7 @@ export function runnerConfig(options: LighthouseCliOptions): RunnerConfig { outputFile: outputPath, outputTransform: (lighthouseOutput: unknown) => lhrToAuditOutputs(lighthouseOutput as Result), - } satisfies RunnerConfig; + }; } function lhrToAuditOutputs(lhr: Result): AuditOutputs { diff --git a/examples/plugins/src/package-json/src/integration/utils.ts b/examples/plugins/src/package-json/src/integration/utils.ts index a3d5d2695..e0d6e2356 100644 --- a/examples/plugins/src/package-json/src/integration/utils.ts +++ b/examples/plugins/src/package-json/src/integration/utils.ts @@ -8,7 +8,7 @@ export function baseAuditOutput(slug: string): AuditOutput { score: 1, value: 0, displayValue: pluralizePackage(), - } satisfies AuditOutput; + }; } export function filterSeverityError(issue: Issue): boolean { diff --git a/packages/cli/src/lib/autorun/autorun-command.unit.test.ts b/packages/cli/src/lib/autorun/autorun-command.unit.test.ts index ccbbaf95b..cb5d3b17e 100644 --- a/packages/cli/src/lib/autorun/autorun-command.unit.test.ts +++ b/packages/cli/src/lib/autorun/autorun-command.unit.test.ts @@ -1,6 +1,6 @@ import { vol } from 'memfs'; import { describe, expect, it, vi } from 'vitest'; -import { PortalUploadArgs, uploadToPortal } from '@code-pushup/portal-client'; +import { uploadToPortal } from '@code-pushup/portal-client'; import { collectAndPersistReports, readRcByPath } from '@code-pushup/core'; import { MEMFS_VOLUME, MINIMAL_REPORT_MOCK } from '@code-pushup/test-utils'; import { DEFAULT_CLI_CONFIGURATION } from '../../../mocks/constants'; @@ -58,7 +58,9 @@ describe('autorun-command', () => { ); // values come from CORE_CONFIG_MOCK returned by readRcByPath mock - expect(uploadToPortal).toHaveBeenCalledWith({ + expect(uploadToPortal).toHaveBeenCalledWith< + Parameters + >({ apiKey: 'dummy-api-key', server: 'https://example.com/api', data: { @@ -72,6 +74,6 @@ describe('autorun-command', () => { project: 'cli', commit: expect.any(String), }, - } satisfies PortalUploadArgs); + }); }); }); diff --git a/packages/cli/src/lib/implementation/core-config.integration.test.ts b/packages/cli/src/lib/implementation/core-config.integration.test.ts index 4f6ae6f39..42150e3cf 100644 --- a/packages/cli/src/lib/implementation/core-config.integration.test.ts +++ b/packages/cli/src/lib/implementation/core-config.integration.test.ts @@ -4,6 +4,8 @@ import { PERSIST_FILENAME, PERSIST_FORMAT, PERSIST_OUTPUT_DIR, + PersistConfig, + UploadConfig, } from '@code-pushup/models'; import { CORE_CONFIG_MOCK, MINIMAL_CONFIG_MOCK } from '@code-pushup/test-utils'; import { yargsCli } from '../yargs-cli'; @@ -58,7 +60,7 @@ describe('parsing values from CLI and middleware', () => { }, ).parseAsync(); - expect(persist).toEqual({ + expect(persist).toEqual({ filename: PERSIST_FILENAME, format: PERSIST_FORMAT, outputDir: PERSIST_OUTPUT_DIR, @@ -79,7 +81,7 @@ describe('parsing values from CLI and middleware', () => { }, ).parseAsync(); - expect(persist).toEqual({ + expect(persist).toEqual({ filename: 'cli-filename', format: ['md'], outputDir: 'cli-outputDir', @@ -95,7 +97,7 @@ describe('parsing values from CLI and middleware', () => { }, ).parseAsync(); - expect(persist).toEqual({ + expect(persist).toEqual({ filename: 'rc-filename', format: ['json', 'md'], outputDir: 'rc-outputDir', @@ -116,7 +118,7 @@ describe('parsing values from CLI and middleware', () => { }, ).parseAsync(); - expect(persist).toEqual({ + expect(persist).toEqual({ filename: 'cli-filename', format: ['md'], outputDir: 'cli-outputDir', @@ -135,7 +137,7 @@ describe('parsing values from CLI and middleware', () => { }, ).parseAsync(); - expect(persist).toEqual({ + expect(persist).toEqual({ filename: 'rc-filename', format: PERSIST_FORMAT, outputDir: 'cli-outputdir', @@ -163,7 +165,7 @@ describe('parsing values from CLI and middleware', () => { }, ).parseAsync(); - expect(upload).toStrictEqual({ + expect(upload).toStrictEqual({ organization: 'code-pushup', project: 'portal', apiKey: 'dummy-api-key', diff --git a/packages/cli/src/lib/upload/upload-command.unit.test.ts b/packages/cli/src/lib/upload/upload-command.unit.test.ts index ce39cd11e..040e07999 100644 --- a/packages/cli/src/lib/upload/upload-command.unit.test.ts +++ b/packages/cli/src/lib/upload/upload-command.unit.test.ts @@ -1,6 +1,6 @@ import { vol } from 'memfs'; import { describe, expect, it } from 'vitest'; -import { PortalUploadArgs, uploadToPortal } from '@code-pushup/portal-client'; +import { uploadToPortal } from '@code-pushup/portal-client'; import { readRcByPath } from '@code-pushup/core'; import { ISO_STRING_REGEXP, @@ -52,7 +52,9 @@ describe('upload-command-object', () => { ); // values come from CORE_CONFIG_MOCK returned by readRcByPath mock - expect(uploadToPortal).toHaveBeenCalledWith({ + expect(uploadToPortal).toHaveBeenCalledWith< + Parameters + >({ apiKey: 'dummy-api-key', server: 'https://example.com/api', data: { @@ -66,6 +68,6 @@ describe('upload-command-object', () => { project: 'cli', commit: expect.any(String), }, - } satisfies PortalUploadArgs); + }); }); }); diff --git a/packages/cli/src/lib/yargs-cli.integration.test.ts b/packages/cli/src/lib/yargs-cli.integration.test.ts index 3eecb1df4..5909e644d 100644 --- a/packages/cli/src/lib/yargs-cli.integration.test.ts +++ b/packages/cli/src/lib/yargs-cli.integration.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest'; -import { CoreConfig } from '@code-pushup/models'; +import { CoreConfig, Format } from '@code-pushup/models'; import { PersistConfigCliOptions, UploadConfigCliOptions, @@ -47,7 +47,7 @@ describe('yargsCli', () => { ['--persist.format=md', '--persist.format=json'], { options }, ).parseAsync(); - expect(parsedArgv.persist?.format).toEqual(['md', 'json']); + expect(parsedArgv.persist?.format).toEqual(['md', 'json']); }); it('should throw for an invalid persist format', () => { diff --git a/packages/core/src/lib/implementation/execute-plugin.ts b/packages/core/src/lib/implementation/execute-plugin.ts index 6633889d4..f3a8b92b0 100644 --- a/packages/core/src/lib/implementation/execute-plugin.ts +++ b/packages/core/src/lib/implementation/execute-plugin.ts @@ -92,7 +92,7 @@ export async function executePlugin( ...(description && { description }), ...(docsUrl && { docsUrl }), ...(groups && { groups }), - } satisfies PluginReport; + }; } /** diff --git a/packages/core/src/lib/upload.unit.test.ts b/packages/core/src/lib/upload.unit.test.ts index d37549da5..409c423dc 100644 --- a/packages/core/src/lib/upload.unit.test.ts +++ b/packages/core/src/lib/upload.unit.test.ts @@ -1,6 +1,6 @@ import { vol } from 'memfs'; import { describe, expect } from 'vitest'; -import { PortalUploadArgs, uploadToPortal } from '@code-pushup/portal-client'; +import { uploadToPortal } from '@code-pushup/portal-client'; import { ISO_STRING_REGEXP, MEMFS_VOLUME, @@ -37,7 +37,9 @@ describe('upload', () => { expect(result).toEqual({ url: expect.stringContaining('code-pushup/cli') }); - expect(uploadToPortal).toHaveBeenCalledWith({ + expect(uploadToPortal).toHaveBeenCalledWith< + Parameters + >({ apiKey: 'dummy-api-key', server: 'https://example.com/api', data: { @@ -51,7 +53,7 @@ describe('upload', () => { project: 'cli', commit: expect.any(String), }, - } satisfies PortalUploadArgs); + }); }); it('should throw for missing upload configuration', async () => { diff --git a/packages/plugin-coverage/src/lib/config.unit.test.ts b/packages/plugin-coverage/src/lib/config.unit.test.ts index 2a6d510d8..5c9ae130c 100644 --- a/packages/plugin-coverage/src/lib/config.unit.test.ts +++ b/packages/plugin-coverage/src/lib/config.unit.test.ts @@ -40,11 +40,11 @@ describe('coveragePluginConfigSchema', () => { expect(() => coveragePluginConfigSchema.parse(config)).not.toThrow(); const { coverageTypes } = coveragePluginConfigSchema.parse(config); - expect(coverageTypes).toEqual([ + expect(coverageTypes).toEqual([ 'function', 'branch', 'line', - ] satisfies CoverageType[]); + ]); }); it('throws for empty coverage type array', () => { diff --git a/packages/plugin-coverage/src/lib/runner/lcov/transform.unit.test.ts b/packages/plugin-coverage/src/lib/runner/lcov/transform.unit.test.ts index 3937f9448..245738b2e 100644 --- a/packages/plugin-coverage/src/lib/runner/lcov/transform.unit.test.ts +++ b/packages/plugin-coverage/src/lib/runner/lcov/transform.unit.test.ts @@ -1,6 +1,6 @@ import { LCOVRecord } from 'parse-lcov'; import { describe, it } from 'vitest'; -import { AuditOutput, Issue } from '@code-pushup/models'; +import type { AuditOutput, Issue } from '@code-pushup/models'; import { lcovCoverageToAuditOutput, lcovReportToBranchStat, @@ -28,7 +28,7 @@ describe('lcovReportToFunctionStat', () => { details: [{ line: 12, name: 'yargsCli', hit: 6 }], }, }), - ).toEqual({ totalHit: 1, totalFound: 1, issues: [] } satisfies LCOVStat); + ).toEqual({ totalHit: 1, totalFound: 1, issues: [] }); }); it('should transform an empty LCOV function report to LCOV stat', () => { @@ -37,7 +37,11 @@ describe('lcovReportToFunctionStat', () => { ...lcovRecordMock, functions: { hit: 0, found: 0, details: [] }, }), - ).toEqual({ totalHit: 0, totalFound: 0, issues: [] } satisfies LCOVStat); + ).toEqual({ + totalHit: 0, + totalFound: 0, + issues: [], + }); }); it('should transform details from function report to issues', () => { @@ -101,7 +105,11 @@ describe('lcovReportToLineStat', () => { details: [{ line: 1, hit: 6 }], }, }), - ).toEqual({ totalHit: 1, totalFound: 1, issues: [] } satisfies LCOVStat); + ).toEqual({ + totalHit: 1, + totalFound: 1, + issues: [], + }); }); it('should transform an empty LCOV line report to LCOV stat', () => { @@ -110,7 +118,11 @@ describe('lcovReportToLineStat', () => { ...lcovRecordMock, lines: { hit: 0, found: 0, details: [] }, }), - ).toEqual({ totalHit: 0, totalFound: 0, issues: [] } satisfies LCOVStat); + ).toEqual({ + totalHit: 0, + totalFound: 0, + issues: [], + }); }); it('should transform details from line report to issues', () => { @@ -210,7 +222,11 @@ describe('lcovReportToBranchStat', () => { details: [{ line: 12, taken: 6, branch: 0, block: 0 }], }, }), - ).toEqual({ totalHit: 1, totalFound: 1, issues: [] } satisfies LCOVStat); + ).toEqual({ + totalHit: 1, + totalFound: 1, + issues: [], + }); }); it('should transform an empty LCOV branch report to LCOV stat', () => { @@ -219,7 +235,11 @@ describe('lcovReportToBranchStat', () => { ...lcovRecordMock, branches: { hit: 0, found: 0, details: [] }, }), - ).toEqual({ totalHit: 0, totalFound: 0, issues: [] } satisfies LCOVStat); + ).toEqual({ + totalHit: 0, + totalFound: 0, + issues: [], + }); }); it('should transform details from branch report to issues', () => { @@ -279,12 +299,12 @@ describe('lcovCoverageToAudit', () => { { totalHit: 56, totalFound: 56, issues: [] }, 'branch', ), - ).toEqual({ + ).toEqual({ slug: 'branch-coverage', score: 1, value: 100, displayValue: '100 %', - } satisfies AuditOutput); + }); }); it('should transform an empty function coverage to audit output', () => { @@ -293,12 +313,12 @@ describe('lcovCoverageToAudit', () => { { totalHit: 0, totalFound: 0, issues: [] }, 'function', ), - ).toEqual({ + ).toEqual({ slug: 'function-coverage', score: 1, value: 100, displayValue: '100 %', - } satisfies AuditOutput); + }); }); it('should transform a partial line coverage to audit output', () => { @@ -317,7 +337,7 @@ describe('lcovCoverageToAudit', () => { }, 'line', ), - ).toEqual({ + ).toEqual({ slug: 'line-coverage', score: 0.9, value: 90, @@ -331,6 +351,6 @@ describe('lcovCoverageToAudit', () => { }, ], }, - } satisfies AuditOutput); + }); }); }); diff --git a/packages/plugin-coverage/src/lib/runner/runner.integration.test.ts b/packages/plugin-coverage/src/lib/runner/runner.integration.test.ts index 4bdd7ee32..22e02f5c1 100644 --- a/packages/plugin-coverage/src/lib/runner/runner.integration.test.ts +++ b/packages/plugin-coverage/src/lib/runner/runner.integration.test.ts @@ -15,12 +15,12 @@ describe('createRunnerConfig', () => { coverageTypes: ['branch'], perfectScoreThreshold: 85, }); - expect(runnerConfig).toStrictEqual({ + expect(runnerConfig).toStrictEqual({ command: 'node', args: ['executeRunner.ts'], outputTransform: expect.any(Function), outputFile: expect.stringContaining('runner-output.json'), - } satisfies RunnerConfig); + }); }); it('should provide plugin config to runner in JSON file', async () => { diff --git a/packages/plugin-coverage/src/lib/utils.unit.test.ts b/packages/plugin-coverage/src/lib/utils.unit.test.ts index 040e38a8a..819e8692a 100644 --- a/packages/plugin-coverage/src/lib/utils.unit.test.ts +++ b/packages/plugin-coverage/src/lib/utils.unit.test.ts @@ -11,16 +11,16 @@ describe('applyMaxScoreAboveThreshold', () => { slug: 'branch-coverage', value: 75, score: 0.75, - } satisfies AuditOutput, + }, ], 0.7, ), - ).toEqual([ + ).toEqual([ { slug: 'branch-coverage', value: 75, score: 1, - } satisfies AuditOutput, + }, ]); }); @@ -32,16 +32,16 @@ describe('applyMaxScoreAboveThreshold', () => { slug: 'line-coverage', value: 60, score: 0.6, - } satisfies AuditOutput, + }, ], 0.7, ), - ).toEqual([ + ).toEqual([ { slug: 'line-coverage', value: 60, score: 0.6, - } satisfies AuditOutput, + }, ]); }); }); diff --git a/packages/plugin-eslint/src/lib/eslint-plugin.integration.test.ts b/packages/plugin-eslint/src/lib/eslint-plugin.integration.test.ts index 0818d6032..9f4c5bf5c 100644 --- a/packages/plugin-eslint/src/lib/eslint-plugin.integration.test.ts +++ b/packages/plugin-eslint/src/lib/eslint-plugin.integration.test.ts @@ -57,17 +57,17 @@ describe('eslintPlugin', () => { // expect rule from extended base .eslintrc.json expect(plugin.audits).toContainEqual( - expect.objectContaining({ + expect.objectContaining({ slug: expect.stringMatching(/^nx-enforce-module-boundaries/), title: expect.any(String), description: expect.stringContaining('sourceTag'), - } satisfies Audit), + }), ); // expect rule from utils project's .eslintrc.json expect(plugin.audits).toContainEqual( - expect.objectContaining({ + expect.objectContaining>({ slug: 'nx-dependency-checks', - } satisfies Partial), + }), ); }); diff --git a/packages/plugin-eslint/src/lib/runner.integration.test.ts b/packages/plugin-eslint/src/lib/runner.integration.test.ts index 029cc6ba2..ba01076b1 100644 --- a/packages/plugin-eslint/src/lib/runner.integration.test.ts +++ b/packages/plugin-eslint/src/lib/runner.integration.test.ts @@ -72,22 +72,22 @@ describe('executeRunner', () => { const json = await readJsonFile(RUNNER_OUTPUT_PATH); // expect warnings from unicorn/filename-case rule from default config expect(json).toContainEqual( - expect.objectContaining({ + expect.objectContaining>({ slug: 'unicorn-filename-case', displayValue: '5 warnings', details: { - issues: expect.arrayContaining([ + issues: expect.arrayContaining([ { severity: 'warning', message: 'Filename is not in kebab case. Rename it to `use-todos.js`.', - source: expect.objectContaining({ + source: expect.objectContaining({ file: join(appDir, 'src', 'hooks', 'useTodos.js'), - } satisfies Partial), - } satisfies Issue, + }), + }, ]), }, - } satisfies Partial), + }), ); }, 7000); }); diff --git a/packages/plugin-eslint/src/lib/runner/transform.unit.test.ts b/packages/plugin-eslint/src/lib/runner/transform.unit.test.ts index 84149002e..f6bfe911a 100644 --- a/packages/plugin-eslint/src/lib/runner/transform.unit.test.ts +++ b/packages/plugin-eslint/src/lib/runner/transform.unit.test.ts @@ -1,5 +1,5 @@ import type { ESLint } from 'eslint'; -import type { AuditOutput } from '@code-pushup/models'; +import { AuditOutput } from '@code-pushup/models'; import { lintResultsToAudits } from './transform'; describe('lintResultsToAudits', () => { @@ -109,7 +109,7 @@ describe('lintResultsToAudits', () => { }, }, }), - ).toEqual([ + ).toEqual([ { slug: expect.stringContaining('max-lines'), score: 0, @@ -221,6 +221,6 @@ describe('lintResultsToAudits', () => { ], }, }, - ] satisfies AuditOutput[]); + ]); }); }); diff --git a/packages/plugin-lighthouse/src/lib/utils.unit.test.ts b/packages/plugin-lighthouse/src/lib/utils.unit.test.ts index 935371717..f28655135 100644 --- a/packages/plugin-lighthouse/src/lib/utils.unit.test.ts +++ b/packages/plugin-lighthouse/src/lib/utils.unit.test.ts @@ -2,6 +2,7 @@ import Details from 'lighthouse/types/lhr/audit-details'; import { describe, expect, it } from 'vitest'; import { Audit, + AuditOutput, Group, PluginConfig, pluginConfigSchema, @@ -152,10 +153,10 @@ describe('filterAuditsAndGroupsByOnlyOptions to be used in plugin config', () => { onlyAudits: ['speed-index'] }, ); - expect(filteredAudits).toStrictEqual([ + expect(filteredAudits).toStrictEqual([ { slug: 'speed-index', title: 'Speed Index' }, ]); - expect(filteredGroups).toStrictEqual([ + expect(filteredGroups).toStrictEqual([ { slug: 'performance', title: 'Performance', @@ -195,10 +196,10 @@ describe('filterAuditsAndGroupsByOnlyOptions to be used in plugin config', () => ], { onlyAudits: ['speed-index'] }, ); - expect(filteredAudits).toStrictEqual([ + expect(filteredAudits).toStrictEqual([ { slug: 'speed-index', title: 'Speed Index' }, ]); - expect(filteredGroups).toStrictEqual([ + expect(filteredGroups).toStrictEqual([ { slug: 'performance', title: 'Performance', @@ -245,10 +246,10 @@ describe('filterAuditsAndGroupsByOnlyOptions to be used in plugin config', () => { onlyCategories: ['coverage'] }, ); - expect(filteredAudits).toStrictEqual([ + expect(filteredAudits).toStrictEqual([ { slug: 'function-coverage', title: 'Function Coverage' }, ]); - expect(filteredGroups).toStrictEqual([ + expect(filteredGroups).toStrictEqual([ { slug: 'coverage', title: 'Code coverage', @@ -298,10 +299,10 @@ describe('filterAuditsAndGroupsByOnlyOptions to be used in plugin config', () => }, ); - expect(filteredAudits).toStrictEqual([ + expect(filteredAudits).toStrictEqual([ { slug: 'function-coverage', title: 'Function Coverage' }, ]); - expect(filteredGroups).toStrictEqual([ + expect(filteredGroups).toStrictEqual([ { slug: 'coverage', title: 'Code coverage', @@ -378,7 +379,7 @@ describe('toAuditOutputs', () => { displayValue: '2.8 s', }, ]), - ).toStrictEqual([ + ).toStrictEqual([ { displayValue: '2.8 s', score: 0.55, diff --git a/packages/utils/src/lib/reports/utils.unit.test.ts b/packages/utils/src/lib/reports/utils.unit.test.ts index 76f6dbcb7..6a3291a1b 100644 --- a/packages/utils/src/lib/reports/utils.unit.test.ts +++ b/packages/utils/src/lib/reports/utils.unit.test.ts @@ -79,7 +79,7 @@ describe('getSortableAuditByRef', () => { }, ], ), - ).toStrictEqual({ + ).toStrictEqual({ slug: 'function-coverage', title: 'Function coverage', score: 1, @@ -172,7 +172,7 @@ describe('getSortableGroupByRef', () => { }, ], ), - ).toStrictEqual({ + ).toStrictEqual({ slug: 'code-coverage', title: 'Code coverage', score: 0.66, @@ -310,12 +310,10 @@ describe('countWeightedRefs', () => { describe('compareIssueSeverity', () => { it('should order severities in logically ascending order when used as compareFn with .sort()', () => { - const severityArr = ['error', 'info', 'warning'] satisfies IssueSeverity[]; - expect([...severityArr].sort(compareIssueSeverity)).toEqual([ - 'info', - 'warning', - 'error', - ]); + const severityArr: IssueSeverity[] = ['error', 'info', 'warning']; + expect([...severityArr].sort(compareIssueSeverity)).toEqual< + IssueSeverity[] + >(['info', 'warning', 'error']); }); });