Repository navigation
chore: merge master into develop - #1482
Merged
Merged
Conversation
`@axe-core/cli` prereleases built since #1430 install without an `axe` bin, and `require('@axe-core/cli')` fails. This fixes the cause and adds a CI check for every published package, so a broken package layout fails a pull request instead of reaching a prerelease. ## Cause #1430 set `"rootDir": "./src"` in `packages/cli/tsconfig.json` to silence TS5011 under TypeScript 6. When the tests run through ts-node, the program pulls in `../webdriverjs/dist`, which moves the inferred common source directory outside the package. Setting the root to `./src` moved the build output from `dist/src/` to `dist/`. `main`, `typings` and `bin.axe` in `package.json` still pointed at `dist/src/`, so npm skipped the bin. ## Change - **CLI:** `rootDir` is now `"."`. TypeScript 6 still gets an explicit root, and the `dist/src/` layout that every published path expects comes back. No published path changes. - **Package linting in CI:** `publint` and `@arethetypeswrong/cli` are root devDependencies. Each published package has three new scripts: - `pack:lint`: `pnpm pack` with lifecycle scripts disabled, written to `node_modules/.cache/package-lint/`. - `lint:package`: `publint --strict` on that tarball. - `lint:types`: `attw` on that tarball. Each job in `tests.yml` runs both lint scripts right after its build. The `cli` job had no build step before and gains one. - **ESM types (playwright, puppeteer, react, reporter-earl, webdriverio, webdriverjs):** `exports["."].types` pointed ESM consumers at the CJS `.d.ts`, which attw reports as "Masquerading as CJS". Each exports map now has separate `import` and `require` conditions, each with its own types (`.d.mts` and `.d.ts`). tsup already produced the `.d.mts` files. - **react:** `files` now includes `dist/index.d.mts`. Before this, React never published its ESM types. - **reporter-earl:** adds `"files": ["dist"]`. It previously published `src/`, `tests/` and its config files, 24 files in all. It now publishes 7. ### Why pack with pnpm and `ignore-scripts` `attw --pack` uses `npm pack`, and publint's own packing runs `pnpm pack` with scripts. Both run `prepare`, which reinstalls Playwright's browsers and rebuilds `dist` in several packages. `npm pack` also leaves the `workspace:` protocol in place, so the tarball would not match what pnpm publishes. The CLI's attw call passes `--entrypoints .` because the CLI has no `exports` map, and without one attw guesses a nonexistent `@axe-core/cli/dist` subpath from `files`. ## Verification | Check | Before | After | | --- | --- | --- | | CLI tarball: `.bin/axe` created, `npx axe --version` | missing / fails | created / exit 0 | | `publint --strict`, 7 packages | 7 fail | 7 pass | | `attw`, 7 packages | 7 fail | 7 pass | | `test:export`, 6 tsup packages | — | pass | | CLI tests / coverage | — | 82 passing, branches 91.8% | I also confirmed the checks catch both original bugs. Putting back the old `rootDir` or a single top-level `types` in `exports` makes both lint scripts fail. Closes: #1465 (cherry picked from commit 839553f)
… (#1468) ## Details Cherry-picks 839553f (#1467) from `develop` onto `release` so v4.14.0 ships with a working `axe` bin for `@axe-core/cli` and the package-layout lint checks in CI. Applied cleanly with no conflicts; see #1467 for the full change description. Verified on this branch: `pnpm -r build`, `lint:package` and `lint:types` pass for all 7 packages, CLI tests 82 passing. Ref: #1465
## Changelog Additions: # [4.14.0](v4.13.0...v4.14.0) (2026-10-06) ### Bug Fixes * exempt axe-core from the pnpm release-age cooldown ([#1441](#1441)) ([0bcb185](0bcb185)), closes [#1346](#1346) [#1346](#1346) [#1442](#1442) [#1346](#1346) ### Features * Update axe-core to v4.14.0 ([#1456](#1456)) ([dccfe7a](dccfe7a)) _This PR was automatically created by a 🤖_
There was a problem hiding this comment.
🟡 Changes recommended
Critical package lint and ESM declaration build issues remain unresolved.
8 open findings
Create the package-lint cache directory before packing · New Generate the missing ESM declaration file during build · New Create the package-lint cache directory before packing · New Generate the missing ESM declaration file during build · New Generate the missing ESM declaration file during build · New Generate the missing ESM declaration file during build · New Generate the missing ESM declaration file during build · New Generate the missing ESM declaration file during build · New
What changed in this PR
Merges the v4.14.0 release updates from master into develop.
Changes:
- Updates package versions, exports, and changelogs.
- Adds package and type validation.
- Aligns CLI output and workspace build configuration.
| File | Description |
|---|---|
test/wdio/package.json |
Updates test package version. |
test/wdio/CHANGELOG.md |
Adds v4.14.0 entry. |
test/axe-core/package.json |
Updates test package version. |
test/axe-core/CHANGELOG.md |
Adds v4.14.0 entry. |
pnpm-workspace.yaml |
Allows required package builds. |
packages/webdriverjs/package.json |
Updates exports and package checks. |
packages/webdriverjs/CHANGELOG.md |
Adds release notes. |
packages/webdriverio/package.json |
Updates exports and package checks. |
packages/webdriverio/CHANGELOG.md |
Adds release notes. |
packages/reporter-earl/package.json |
Updates exports, files, and package checks. |
packages/reporter-earl/CHANGELOG.md |
Adds release notes. |
packages/react/package.json |
Updates exports, declarations, and package checks. |
packages/react/CHANGELOG.md |
Adds release notes. |
packages/puppeteer/package.json |
Updates exports and package checks. |
packages/puppeteer/CHANGELOG.md |
Adds release notes. |
packages/playwright/package.json |
Updates exports and package checks. |
packages/playwright/CHANGELOG.md |
Adds release notes. |
packages/cli/tsconfig.json |
Aligns build output paths. |
packages/cli/package.json |
Updates version and package checks. |
packages/cli/CHANGELOG.md |
Adds release notes. |
package.json |
Adds package validation tooling. |
lerna.json |
Updates repository version. |
CHANGELOG.md |
Adds aggregate v4.14.0 notes. |
.github/workflows/tests.yml |
Runs package and type validation. |
🧠 Review effort: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| "coverage": "nyc pnpm run test", | ||
| "lint:package": "pnpm run pack:lint && publint --strict ../../node_modules/.cache/package-lint/cli.tgz", | ||
| "lint:types": "pnpm run pack:lint && attw ../../node_modules/.cache/package-lint/cli.tgz --entrypoints .", | ||
| "pack:lint": "pnpm pack --config.ignore-scripts=true --out ../../node_modules/.cache/package-lint/cli.tgz" |
| "import": "./dist/index.mjs", | ||
| "require": "./dist/index.js" | ||
| "import": { | ||
| "types": "./dist/index.d.mts", |
| "prepare": "pnpm exec playwright install && pnpm run build", | ||
| "lint:package": "pnpm run pack:lint && publint --strict ../../node_modules/.cache/package-lint/playwright.tgz", | ||
| "lint:types": "pnpm run pack:lint && attw ../../node_modules/.cache/package-lint/playwright.tgz", | ||
| "pack:lint": "pnpm pack --config.ignore-scripts=true --out ../../node_modules/.cache/package-lint/playwright.tgz" |
| "import": "./dist/index.mjs", | ||
| "require": "./dist/index.js" | ||
| "import": { | ||
| "types": "./dist/index.d.mts", |
| "import": "./dist/index.mjs", | ||
| "require": "./dist/index.js" | ||
| "import": { | ||
| "types": "./dist/index.d.mts", |
| "import": "./dist/axeReporterEarl.mjs", | ||
| "require": "./dist/axeReporterEarl.js" | ||
| "import": { | ||
| "types": "./dist/axeReporterEarl.d.mts", |
| "import": "./dist/index.mjs", | ||
| "require": "./dist/index.js" | ||
| "import": { | ||
| "types": "./dist/index.d.mts", |
| "import": "./dist/index.mjs", | ||
| "require": "./dist/index.js" | ||
| "import": { | ||
| "types": "./dist/index.d.mts", |
scottmries
approved these changes
Oct 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Brings the v4.14.0 release from
masterback intodevelop.pnpm-lock.yamlconflicted between the two branches. Regenerating the lockfile for the merged result gives a file identical todevelop's, so this branch takesdevelop'spnpm-lock.yamlandpnpm-workspace.yaml(the@parcel/watcherallowBuildsentry the lockfile needs). The merge intodevelopis now clean, with no extra merge commit on the branch.No QA required