# Extension points — jasmine/jasmine

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

# Extension points — jasmine/jasmine

Scanned commit 390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf (2026-08-19). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

Extension primarily happens through public customization APIs and explicit factory registries. Runnable-scoped tables control inheritance and teardown of custom matchers, equality testers, formatters, and spy strategies. Reporters and external runners are separate integration seams with cloning and process-boundary constraints.
- A new built-in matcher must expose a getJasmineRequireObj factory and join the synchronous or asynchronous availableMatchers list, which instantiates registered factories. — [src/core/matchers/requireMatchers.js#L4-L47](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/matchers/requireMatchers.js#L4-L47) [src/core/matchers/requireAsyncMatchers.js#L4-L19](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/matchers/requireAsyncMatchers.js#L4-L19)
- Env.addMatchers/addAsyncMatchers populate current-runnable tables; Expectation and AsyncExpectation install instance methods using those custom factories. — [src/core/Env.js#L132-L137](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/Env.js#L132-L137) [src/core/RunableResources.js#L96-L121](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/RunableResources.js#L96-L121) [src/core/Expectation.js#L8-L17](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/Expectation.js#L8-L17) [src/core/Expectation.js#L84-L93](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/Expectation.js#L84-L93)
- Custom equality testers join a scoped ordered list; MatchersUtil.eq_ consults asymmetric matchers first, then accepts the first custom tester result that is not undefined. — [src/core/Env.js#L128-L130](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/Env.js#L128-L130) [src/core/matchers/matchersUtil.js#L172-L194](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/matchers/matchersUtil.js#L172-L194)
- Custom object formatters enter RunableResources and are passed into the pretty printer; makeMatchersUtil combines that printer with the current equality testers. — [src/core/Env.js#L140-L142](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/Env.js#L140-L142) [src/core/RunableResources.js#L124-L143](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/RunableResources.js#L124-L143) [src/core/PrettyPrinter.js#L14-L20](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/PrettyPrinter.js#L14-L20)
- addSpyStrategy and setDefaultSpyStrategy customize scoped SpyFactory behavior; custom strategy factories must return a function and cannot replace an existing SpyStrategy member. — [src/core/Env.js#L120-L125](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/Env.js#L120-L125) [src/core/RunableResources.js#L10-L19](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/RunableResources.js#L10-L19) [src/core/SpyStrategy.js#L22-L26](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/SpyStrategy.js#L22-L26) [src/core/SpyStrategy.js#L58-L67](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/SpyStrategy.js#L58-L67)
- Reporters implement any subset of six lifecycle events and register through Env.addReporter; dispatch supports returned promises or done callbacks, isolates event objects by cloning, and supports a fallback reporter. — [src/core/reporterEvents.js#L30-L94](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/reporterEvents.js#L30-L94) [src/core/Env.js#L441-L458](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/Env.js#L441-L458) [src/core/ReportDispatcher.js#L32-L75](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/ReportDispatcher.js#L32-L75)
- Configuration.specFilter is an execution-selection hook, and requireCore deliberately allows new Jasmine namespace properties while locking existing members except four timeout/pretty-print settings. — [src/core/Runner.js#L74-L82](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/Runner.js#L74-L82) [src/core/requireCore.js#L119-L141](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/requireCore.js#L119-L141)
- External parallel runners can use ParallelReportDispatcher and Env's parallel loading/reset methods; the dispatcher explicitly requires a process separate from running specs, and parallel Env mode restricts configuration, reporters, focus, and seeded/nonrandom execution. — [src/core/ParallelReportDispatcher.js#L4-L23](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/ParallelReportDispatcher.js#L4-L23) [src/core/Env.js#L378-L385](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/Env.js#L378-L385) [src/core/Env.js#L441-L444](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/Env.js#L441-L444) [src/core/Env.js#L593-L621](https://github.com/jasmine/jasmine/blob/390d31e48106dd0d0b6dbcf5cf9071650fb2b4bf/src/core/Env.js#L593-L621)

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)
