Skip to content

Commit 2cadf0e

Browse files
authored
Merge branch 'main' into axe-auth-support
2 parents 85cf463 + 9d4a223 commit 2cadf0e

112 files changed

Lines changed: 555 additions & 298 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
1+
## 0.101.1 (2026-01-06)
2+
3+
### 🩹 Fixes
4+
5+
- **plugin-typescript:** exclude test files from standalone analysis ([bf008fd4](https://github.com/code-pushup/cli/commit/bf008fd4))
6+
7+
### ❤️ Thank You
8+
9+
- hanna-skryl
10+
11+
## 0.101.0 (2026-01-05)
12+
13+
### 🚀 Features
14+
15+
- **plugin-eslint:** make patterns input optional with default ([7ce6e9b7](https://github.com/code-pushup/cli/commit/7ce6e9b7))
16+
17+
### ❤️ Thank You
18+
19+
- Hanna Skryl @hanna-skryl
20+
121
## 0.100.1 (2025-12-29)
222

323
### 🩹 Fixes

README.md

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,18 @@
1616

1717
---
1818

19+
### 🏷️ Category labels
20+
21+
See how your project measures up. With [portal integration](./packages/cli/README.md#portal-integration), category scores are embeddable and always reflect your latest report.
22+
1923
![Type safety](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/type-safety?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef)
2024
![Bug prevention](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/bug-prevention?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef)
2125
![Code style](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/code-style?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef)
2226
![Code coverage](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/code-coverage?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef)
2327
![Security](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/security?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef)
2428
![Updates](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/updates?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef)
2529
![Documentation](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/docs?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef)
30+
![Axe Accessibility](https://api.staging.code-pushup.dev/badges/code-pushup/cli-workspace/axe-a11y?apiKey=cp_def67c4efe558a9149061d0c62de893e1689ad793071db332790238446173fef)
2631

2732
---
2833

@@ -31,8 +36,7 @@
3136
_Common problems with keeping track of technical quality:_
3237

3338
- When **tech debt is invisible**, it's difficult to plan much-needed maintenance efforts 🔧
34-
- Individual tools measure different metrics, inability to combine them leads to
35-
a **lack of comprehensive overview** 🧑‍🦯
39+
- Individual tools measure different metrics, the inability to combine them leads to a **lack of comprehensive overview** 🧑‍🦯
3640
- Open-source tools typically used for failing checks in CI, which **can't measure incremental improvements** due to arbitrary pass/fail thresholds 🤖
3741
- Off-the-shelf solutions tend to be opinionated and **hard to customize**, so may not fit your specific needs 🧱
3842

@@ -42,15 +46,15 @@ _We want to change that!_
4246

4347
## 🔎🔬 Code quality integrations for any tool 📉🔍
4448

45-
| [🚀 Get started](./packages/cli/README.md#getting-started) | [🤖 CI automation](https://github.com/marketplace/actions/code-pushup) |
46-
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
47-
| <a href="./packages/cli/README.md#getting-started"><img alt="Getting started cover image" title="Getting started with code-pushup" src="packages/cli/docs/images/cli-terminal-overview.png" width="1000"></a> | <a href="./packages/cli/README.md#-ci-automation"><img alt="CI Automation cover" title="CI automation guide" src="docs/images/gh-action.png" width="1000"></a> |
48-
| <ul><li>Run **[📦 `@code-pushup/cli`](./packages/cli#readme)** to collect **reports**.</li><li>[Get started](./packages/cli/README.md#getting-started) quickly with our [**official plugins**](#-officially-supported-plugins)! ⏱️</li></ul> | <ul><li>Easy **CI** setup with **[🤖 `code-pushup/github-action`](https://github.com/marketplace/actions/code-pushup)**.</li><li>Import logic from **[📦 `@code-pushup/core`](./packages/core#readme)** to craft **custom tools**.</li></ul> |
49+
| [🚀 Get started](./packages/cli/README.md#getting-started)| [🤖 CI automation](https://github.com/marketplace/actions/code-pushup) |
50+
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
51+
| <a href="./packages/cli/README.md#getting-started"><img alt="Getting started cover image" title="Getting started with code-pushup" src="packages/cli/docs/images/cli-terminal-overview.png" width="1000"></a> | <a href="./packages/cli/README.md#-ci-automation"><img alt="CI Automation cover" title="CI automation guide" src="docs/images/gh-action.png" width="1000"></a> |
52+
| <ul><li>Run **[📦 `@code-pushup/cli`](./packages/cli#readme)** to collect **reports**.</li><li>Get started quickly with our [**official plugins**](#-officially-supported-plugins)! ⏱️</li></ul> | <ul><li>Easy **CI** setup with **[🤖 `code-pushup/github-action`](https://github.com/marketplace/actions/code-pushup)**.</li><li>Import logic from **[📦 `@code-pushup/core`](./packages/core#readme)** to craft **custom tools**.</li></ul> |
4953

50-
| 📈 [Portal](https://code-pushup.dev#portal) | 🔌 [Custom plugins](./packages/cli/docs/custom-plugins.md) |
51-
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
52-
| <a href="#portal-integration"><img alt="Portal integration cover image" title="Inetegrate code-pushup portal" src="packages/cli/docs/images/portal-cover.png" width="1000"></a> | <a href="#custom-plugins"><img alt="Custom plugins" title="Create custom code-pushup plugins" src="docs/images/code-pushup-custom-plugins.png" width="1000"></a> |
53-
| <ul><li>**[Portal](https://code-pushup.dev#portal)** 🌐 **visualizes reports** in a slick UI.</li><li>Track **historical data** from uploads. ⬆️</li></ul> | <ul><li>All the [data models](./packages/models/docs/models-reference.md) you need are provided in **[📦 `@code-pushup/models`](./packages/models/README.md)**.</li><li>Find tons of useful utilities in **[📦 `@code-pushup/utils`](./packages/utils/README.md)**.</li></ul> |
54+
| 📈 [Portal](https://code-pushup.dev/features) | 🔌 [Custom plugins](./packages/cli/docs/custom-plugins.md) |
55+
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
56+
| <a href="./packages/cli/README.md#portal-integration"><img alt="Portal integration cover image" title="Integrate code-pushup portal" src="packages/cli/docs/images/portal-cover.png" width="1000"></a> | <a href="./packages/cli/docs/custom-plugins.md"><img alt="Custom plugins" title="Create custom code-pushup plugins" src="docs/images/code-pushup-custom-plugins.png" width="1000"></a> |
57+
| <ul><li>**[Portal](https://code-pushup.dev/features)** 🌐 **visualizes reports** in a slick UI.</li><li>Track **historical data** from uploads. ⬆️</li></ul> | <ul><li>All the [data models](./packages/models/docs/models-reference.md) you need are provided in **[📦 `@code-pushup/models`](./packages/models/README.md)**.</li><li>Find tons of useful utilities in **[📦 `@code-pushup/utils`](./packages/utils/README.md)**.</li></ul> |
5458

5559
---
5660

@@ -64,6 +68,7 @@ _We want to change that!_
6468
| <img width="24" src="docs/images/plugin-lighthouse.icon.png"> | [Lighthouse](./packages/plugin-lighthouse#readme) | Measures web performance and best practices with **Lighthouse**. |
6569
| <img width="24" src="docs/images/plugin-jsdocs.icon.png"> | [JSDocs](./packages/plugin-jsdocs#readme) | Analyzes how much source code is **documented** using JSDocs comments. |
6670
| <img width="24" src="docs/images/plugin-typescript.icon.png"> | [TypeScript](./packages/plugin-typescript#readme) | Checks for **TypeScript** errors using strict compiler flags. |
71+
| <img width="24" src="docs/images/plugin-axe.icon.png"> | [Axe](./packages/plugin-axe#readme) | Detects accessibility issues using **Axe**. |
6772

6873
---
6974

@@ -75,7 +80,7 @@ _We want to change that!_
7580
2. **[Integrate](https://github.com/marketplace/actions/code-pushup)**
7681
Use our integration guide and packages to set up CI integration in minutes. ⏱️
7782

78-
3. **[Observe](https://code-pushup.dev#portal)**
83+
3. **[Observe](https://code-pushup.dev/features)**
7984
Guard regressions and track improvements with every code change. 🔍
8085

8186
4. **Relax!**

code-pushup.preset.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,7 @@ export async function configureEslintPlugin(
4848
plugins: [
4949
projectName
5050
? await eslintPlugin(
51-
{
52-
eslintrc: `packages/${projectName}/eslint.config.js`,
53-
patterns: ['.'],
54-
},
51+
{ eslintrc: `packages/${projectName}/eslint.config.js` },
5552
{
5653
artifacts: {
5754
// We leverage Nx dependsOn to only run all lint targets before we run code-pushup
@@ -161,7 +158,7 @@ export async function configureJsPackagesPlugin(): Promise<CoreConfig> {
161158
export function configureTypescriptPlugin(projectName?: string): CoreConfig {
162159
const tsconfig = projectName
163160
? `packages/${projectName}/tsconfig.lib.json`
164-
: 'tsconfig.base.json';
161+
: 'tsconfig.code-pushup.json';
165162
return {
166163
plugins: [typescriptPlugin({ tsconfig })],
167164
categories: getCategories(),

docs/images/plugin-axe.icon.png

3.81 KB
Loading

docs/images/plugin-jsdocs.icon.png

1.28 KB
Loading

e2e/plugin-axe-e2e/tests/__snapshots__/collect.e2e.test.ts.snap

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ exports[`PLUGIN collect report with axe-plugin NPM package > should run plugin o
497497
"details": {
498498
"issues": [
499499
{
500-
"message": "[\`body > button\`] Fix any of the following: Element does not have inner text that is visible to screen readers aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element has no title attribute Element does not have an implicit (wrapped) <label> Element does not have an explicit <label> Element's default semantics were not overridden with role="none" or role="presentation" ([/<TEST_DIR>/index.html](file:///<TEST_DIR>/index.html))",
500+
"message": "[\`body > button\`] Fix any of the following: Element does not have inner text that is visible to screen readers aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element has no title attribute Element does not have an implicit (wrapped) <label> Element does not have an explicit <label> Element's default semantics were not overridden with role="none" or role="presentation"",
501501
"severity": "error",
502502
},
503503
],
@@ -523,7 +523,7 @@ exports[`PLUGIN collect report with axe-plugin NPM package > should run plugin o
523523
"details": {
524524
"issues": [
525525
{
526-
"message": "[\`.low-contrast\`] Fix any of the following: Element has insufficient color contrast of 1.57 (foreground color: #777777, background color: #999999, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1 ([/<TEST_DIR>/index.html](file:///<TEST_DIR>/index.html))",
526+
"message": "[\`.low-contrast\`] Fix any of the following: Element has insufficient color contrast of 1.57 (foreground color: #777777, background color: #999999, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1",
527527
"severity": "error",
528528
},
529529
],
@@ -612,7 +612,7 @@ exports[`PLUGIN collect report with axe-plugin NPM package > should run plugin o
612612
"details": {
613613
"issues": [
614614
{
615-
"message": "[\`div[role="button"]\`] Fix any of the following: Invalid ARIA attribute name: aria-invalid-attribute ([/<TEST_DIR>/index.html](file:///<TEST_DIR>/index.html))",
615+
"message": "[\`div[role="button"]\`] Fix any of the following: Invalid ARIA attribute name: aria-invalid-attribute",
616616
"severity": "error",
617617
},
618618
],
@@ -629,7 +629,7 @@ exports[`PLUGIN collect report with axe-plugin NPM package > should run plugin o
629629
"details": {
630630
"issues": [
631631
{
632-
"message": "[\`img\`] Fix any of the following: Element does not have an alt attribute aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element has no title attribute Element's default semantics were not overridden with role="none" or role="presentation" ([/<TEST_DIR>/index.html](file:///<TEST_DIR>/index.html))",
632+
"message": "[\`img\`] Fix any of the following: Element does not have an alt attribute aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element has no title attribute Element's default semantics were not overridden with role="none" or role="presentation"",
633633
"severity": "error",
634634
},
635635
],
@@ -646,7 +646,7 @@ exports[`PLUGIN collect report with axe-plugin NPM package > should run plugin o
646646
"details": {
647647
"issues": [
648648
{
649-
"message": "[\`a\`] Fix all of the following: Element is in tab order and does not have accessible text Fix any of the following: Element does not have text that is visible to screen readers aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element has no title attribute ([/<TEST_DIR>/index.html](file:///<TEST_DIR>/index.html))",
649+
"message": "[\`a\`] Fix all of the following: Element is in tab order and does not have accessible text Fix any of the following: Element does not have text that is visible to screen readers aria-label attribute does not exist or is empty aria-labelledby attribute does not exist, references elements that do not exist or references elements that are empty Element has no title attribute",
650650
"severity": "error",
651651
},
652652
],

e2e/plugin-axe-e2e/tests/collect.e2e.test.ts

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,16 @@ import { cp } from 'node:fs/promises';
22
import path from 'node:path';
33
import { afterAll, beforeAll, describe, expect, it } from 'vitest';
44
import { type Report, reportSchema } from '@code-pushup/models';
5+
import { omitVariableReportData } from '@code-pushup/test-fixtures';
56
import { nxTargetProject } from '@code-pushup/test-nx-utils';
67
import {
78
E2E_ENVIRONMENTS_DIR,
89
TEST_OUTPUT_DIR,
9-
omitVariableReportData,
1010
restoreNxIgnoredFiles,
1111
teardownTestFolder,
1212
} from '@code-pushup/test-utils';
1313
import { executeProcess, readJsonFile } from '@code-pushup/utils';
1414

15-
function sanitizeReportPaths(report: Report): Report {
16-
// Convert to JSON, replace paths, and parse back
17-
const reportJson = JSON.stringify(report);
18-
const sanitized = reportJson.replace(
19-
/\/(?:[^/\s"]+\/)+index\.html/g,
20-
'/<TEST_DIR>/index.html',
21-
);
22-
return JSON.parse(sanitized);
23-
}
24-
2515
describe('PLUGIN collect report with axe-plugin NPM package', () => {
2616
const fixturesDir = path.join('e2e', nxTargetProject(), 'mocks', 'fixtures');
2717
const testFileDir = path.join(
@@ -54,8 +44,6 @@ describe('PLUGIN collect report with axe-plugin NPM package', () => {
5444
);
5545

5646
expect(() => reportSchema.parse(report)).not.toThrow();
57-
expect(
58-
omitVariableReportData(sanitizeReportPaths(report)),
59-
).toMatchSnapshot();
47+
expect(omitVariableReportData(report)).toMatchSnapshot();
6048
});
6149
});

e2e/plugin-coverage-e2e/tests/collect.e2e.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@ import path from 'node:path';
33
import { simpleGit } from 'simple-git';
44
import { afterAll, afterEach, beforeAll } from 'vitest';
55
import { type Report, reportSchema } from '@code-pushup/models';
6+
import { omitVariableReportData } from '@code-pushup/test-fixtures';
67
import { nxTargetProject } from '@code-pushup/test-nx-utils';
78
import {
89
E2E_ENVIRONMENTS_DIR,
910
TEST_OUTPUT_DIR,
1011
initGitRepo,
11-
omitVariableReportData,
1212
restoreNxIgnoredFiles,
1313
teardownTestFolder,
1414
} from '@code-pushup/test-utils';

e2e/plugin-eslint-e2e/tests/collect.e2e.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import { cp } from 'node:fs/promises';
22
import path from 'node:path';
33
import { afterAll, afterEach, beforeAll, describe, expect, it } from 'vitest';
44
import { type Report, reportSchema } from '@code-pushup/models';
5+
import { omitVariableReportData } from '@code-pushup/test-fixtures';
56
import { nxTargetProject } from '@code-pushup/test-nx-utils';
67
import {
78
E2E_ENVIRONMENTS_DIR,
89
TEST_OUTPUT_DIR,
9-
omitVariableReportData,
1010
restoreNxIgnoredFiles,
1111
teardownTestFolder,
1212
} from '@code-pushup/test-utils';

0 commit comments

Comments
 (0)