# Extension points — jestjs/jest

> Canonical page: https://codevetter.com/unpack/jest/extension-points

# Extension points — jestjs/jest

Scanned commit 61050e9323e742539dc2360236671110e37329e6 (2026-10-02). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Jest exposes extension seams at configuration, discovery, execution, module resolution, transformation, assertion, snapshot, and reporting boundaries. Most external implementations are loaded by configured module paths rather than a centralized plugin registry. Several seams carry distinct synchronous and asynchronous contracts. Runtime composition also preserves public dispatch callbacks for alternate runtime implementations.
- CLI options are declared in args.options and checked by args.check before validateCLIOptions; configuration normalization merges argv and presets, making flag additions a coordinated CLI/configuration change. — [packages/jest-cli/src/run.ts#L51-L67](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-cli/src/run.ts#L51-L67) [packages/jest-cli/src/args.ts#L22-L92](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-cli/src/args.ts#L22-L92) [packages/jest-config/src/normalize.ts#L567-L575](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-config/src/normalize.ts#L567-L575)
- Configured transformer modules may export a transformer or createTransformer factory; loadTransformers validates process/processAsync and stores implementations by pattern and module path. — [packages/jest-transform/src/ScriptTransformer.ts#L297-L328](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-transform/src/ScriptTransformer.ts#L297-L328)
- Custom resolver modules can be functions or objects with sync and async hooks, receiving basedir, conditions, extensions, paths, rootDir, and default resolver helpers; synchronous require(esm) rejects an async-only resolver. — [packages/jest-resolve/src/resolver.ts#L131-L165](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-resolve/src/resolver.ts#L131-L165) [packages/jest-resolve/src/resolver.ts#L174-L195](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-resolve/src/resolver.ts#L174-L195) [packages/jest-runtime/src/internals/EsmLoader.ts#L353-L373](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-runtime/src/internals/EsmLoader.ts#L353-L373)
- Configured runners are instantiated with globalConfig, change context, and runnerOptions; per-file environment, framework, and optional runtime modules are independently loaded by runTestInternal. — [packages/jest-core/src/TestScheduler.ts#L246-L263](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-core/src/TestScheduler.ts#L246-L263) [packages/jest-runner/src/runTest.ts#L105-L128](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-runner/src/runTest.ts#L105-L128)
- Custom testSequencer implementations supply sort and cacheResults, with shard required when sharding is requested; discovery filters expose optional async setup and return a filtered path array. — [packages/jest-core/src/runJest.ts#L247-L250](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-core/src/runJest.ts#L247-L250) [packages/jest-core/src/runJest.ts#L291-L306](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-core/src/runJest.ts#L291-L306) [packages/jest-core/src/runJest.ts#L434-L436](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-core/src/runJest.ts#L434-L436) [packages/jest-core/src/cli/index.ts#L190-L217](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-core/src/cli/index.ts#L190-L217)
- Watch plugins receive config/stdin/stdout, can apply hook subscriptions, and are checked for key conflicts; custom reporters receive globalConfig/options/context, while testResultsProcessor can asynchronously replace aggregate results. — [packages/jest-core/src/watch.ts#L188-L217](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-core/src/watch.ts#L188-L217) [packages/jest-core/src/TestScheduler.ts#L433-L443](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-core/src/TestScheduler.ts#L433-L443) [packages/jest-core/src/runJest.ts#L192-L195](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-core/src/runJest.ts#L192-L195)
- Assertion extensions use expect.extend and addEqualityTesters; snapshot serializers prepend to the plugin list, and custom snapshot resolvers must implement both path transforms plus a round-trip consistency example. — [packages/expect/src/index.ts#L397-L401](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/expect/src/index.ts#L397-L401) [packages/jest-snapshot/src/plugins.ts#L24-L39](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-snapshot/src/plugins.ts#L24-L39) [packages/jest-snapshot/src/SnapshotResolver.ts#L82-L109](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-snapshot/src/SnapshotResolver.ts#L82-L109) [packages/jest-snapshot/src/SnapshotResolver.ts#L120-L130](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-snapshot/src/SnapshotResolver.ts#L120-L130)
- Runtime supplies public-method callbacks to RequireBuilder, EsmLoader, and JestGlobals rather than directly binding all internal loaders; repository guidance explicitly identifies requireModule and related methods as subclass override seams. — [packages/jest-runtime/src/index.ts#L181-L215](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-runtime/src/index.ts#L181-L215) [packages/jest-runtime/src/index.ts#L218-L233](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/packages/jest-runtime/src/index.ts#L218-L233) [.github/copilot-instructions.md#L191-L195](https://github.com/jestjs/jest/blob/61050e9323e742539dc2360236671110e37329e6/.github/copilot-instructions.md#L191-L195)

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)
