# Testing signals — changesets/changesets

> Canonical page: https://codevetter.com/unpack/changesets/testing-signals

# Testing signals — changesets/changesets

Scanned commit c73949ba7b3160a4aa5729223335c190de1528f8 (2026-09-22). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Tests and CI were inspected, not executed; this report contains no passing test result or measured coverage percentage. Vitest covers planner logic, filesystem application, config rules, and mocked publication behavior. A separate E2E workspace exercises real CLI/package-manager processes against test infrastructure. Inspection is bounded, and explicit TODOs and fixture constraints limit what test existence establishes.
- Root Vitest excludes scripts/e2e, clears/restores mocks, and defines slow-test timeouts; the separate E2E config has its own timeout and both configurations allow focused tests. — [vitest.config.ts#L3-23](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/vitest.config.ts#L3-L23) [scripts/e2e/vitest.config.ts#L3-10](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/scripts/e2e/vitest.config.ts#L3-L10)
- Planner tests use FakeFullState and assert basic releases, snapshot formats, maximum-bump merging, and transitive dependent updates; these assertions were read, not executed. — [packages/assemble-release-plan/src/index.test.ts#L1-50](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/assemble-release-plan/src/index.test.ts#L1-L50) [packages/assemble-release-plan/src/index.test.ts#L96-112](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/assemble-release-plan/src/index.test.ts#L96-L112) [packages/assemble-release-plan/src/index.test.ts#L183-204](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/assemble-release-plan/src/index.test.ts#L183-L204)
- apply-release-plan tests create filesystem fixtures, resolve built CLI generator paths, invoke applyReleasePlan, and assert exact manifest text preservation; duplicate-package-plan rejection remains an it.todo case. — [packages/apply-release-plan/src/index.test.ts#L24-31](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/apply-release-plan/src/index.test.ts#L24-L31) [packages/apply-release-plan/src/index.test.ts#L121-143](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/apply-release-plan/src/index.test.ts#L121-L143) [packages/apply-release-plan/src/index.test.ts#L153-179](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/apply-release-plan/src/index.test.ts#L153-L179) [packages/apply-release-plan/src/index.test.ts#L3140-3143](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/apply-release-plan/src/index.test.ts#L3140-L3143)
- Config tests assert duplicate fixed/linked-group errors and skipped-dependent validation with a private-package exception; schema tests compare generated JSON against tracked schema.json. — [packages/config/src/parse.test.ts#L626-662](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/config/src/parse.test.ts#L626-L662) [packages/config/src/parse.test.ts#L665-713](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/config/src/parse.test.ts#L665-L713) [packages/config/scripts/json-schema.test.ts#L4-11](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/config/scripts/json-schema.test.ts#L4-L11)
- Publish unit tests mock Git and tinyexec, assert dependency-first invocation/tag ordering, and simulate expired-OTP recovery back to bulk mode; they do not exercise real authentication in those cases. — [packages/cli/src/commands/publish/__tests__/index.test.ts#L22-31](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/publish/__tests__/index.test.ts#L22-L31) [packages/cli/src/commands/publish/__tests__/index.test.ts#L175-200](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/publish/__tests__/index.test.ts#L175-L200) [packages/cli/src/commands/publish/__tests__/index.test.ts#L526-599](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/publish/__tests__/index.test.ts#L526-L599)
- Pack E2E tests explicitly use precomputed plans to avoid registry dependence, assert tarball/metadata output, exercise lifecycle stdout, and require a failed lifecycle to leave no publish-plan.json. — [scripts/e2e/pack.test.ts#L37-105](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/scripts/e2e/pack.test.ts#L37-L105) [scripts/e2e/pack.test.ts#L108-165](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/scripts/e2e/pack.test.ts#L108-L165) [scripts/e2e/pack.test.ts#L168-224](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/scripts/e2e/pack.test.ts#L168-L224)
- The publish E2E OTP case runs a TTY CLI against a configured test registry, submits a fixture OTP, and checks failed/successful PUT requests; E2E dependencies include npm 10–12, pnpm 10–12, Yarn 4, and a PTY library. — [scripts/e2e/publish.test.ts#L2022-2048](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/scripts/e2e/publish.test.ts#L2022-L2048) [scripts/e2e/publish.test.ts#L2050-2101](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/scripts/e2e/publish.test.ts#L2050-L2101) [scripts/e2e/package.json#L15-29](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/scripts/e2e/package.json#L15-L29)
- Inspected CI builds before tests, runs Node 22/24/26 on Ubuntu and Node 24 on macOS/Windows, uploads Ubuntu/Node-24 coverage, and separately runs E2E/type/lint/format checks; root check-all does not include E2E or site builds. — [.github/workflows/ci.yml#L62-110](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/.github/workflows/ci.yml#L62-L110) [.github/workflows/ci.yml#L114-159](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/.github/workflows/ci.yml#L114-L159) [package.json#L31-35](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/package.json#L31-L35)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
