CodeVetter
← All unpacks
CodeVetter · Repo Unpack evidence

jasmine/jasmine

Scanned commit 390d31e481 dated 2026-08-19 — last upstream commit. Generated by codevetter 1.15.0 on 2026-10-02.

github.com/jasmine/jasmine ↗ · 415 files · 2.0 MB

A JavaScript Testing Framework Jasmine is a Behavior Driven Development testing framework for JavaScript.

Deep analysis by cli:codex via the codex CLI on 2026-10-02 (422s) — every claim below links to its cited source files. Source inspection; upstream code and tests were not executed.

Overview

Jasmine is a JavaScript behavior-driven testing framework for developers writing browser and Node.js tests. This repository publishes jasmine-core 7.0.2: the test declaration APIs, execution engine, matchers, spies, mock clock, and browser HTML reporter. Its distinctive architecture combines environment-independent factories with browser-specific reporting, and tests source implementations using a separately loaded distributable copy of Jasmine.

System map

The package boundary is jasmine-core, with a CommonJS entrypoint and browser distributables generated from source. Core factories separate public Jasmine APIs from private execution machinery, while HTML factories add browser reporting. State belongs to an environment and its suites, specs, and runnable resources; filesystem activity occurs in packaging and development tooling.

Feature catalog

The primary user interface is a JavaScript API for declaring suites, executing specifications, and evaluating expectations. Testing tools include synchronous and asynchronous matchers, scoped customization, spies, and simulated time. Browser users receive result navigation, failure details, configuration controls, and duration summaries.

Data flow

Spec definitions become an in-memory suite tree, then configuration transforms that tree into an execution plan. Expectations and exceptions update runnable-owned execution state, which is converted into reporter events. Browser result state feeds DOM views, while rerun settings cross reloads through URL parameters.

Behavior traces

The inspected flows cover Node initialization/reset, browser startup/reruns, spec execution/assertions, and distribution creation. Their order is visible in the source, including branching for focus, exclusions, callback versus promise execution, and suite failures. These are static traces rather than observed execution results.

Testing signals

Tests and CI definitions were inspected, not executed; no passing result is asserted. Jasmine self-tests with a compiled runner and a separate source implementation, using both component specs and integration specs. The inspected inventory is bounded: configuration and sampled tests establish intended coverage, not exhaustive coverage or successful CI execution.

Risk map

The principal runtime boundaries are arbitrary test callbacks, global mutation, asynchronous completion, reporter cloning, and URL parsing. Development tooling additionally invokes shells, writes outside the checkout, and integrates with credential-bearing browser infrastructure. The observations below are source findings or labeled hypotheses, not confirmed vulnerabilities; inspection did not establish exhaustive security or test coverage.

Extension points

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.

Contributor handoff

Start with the source/distribution distinction and the two-copy self-test model before changing behavior. Preserve public API compatibility, browser independence in core, scoped cleanup, and reporter event contracts. Tests and CI were inspected, not executed; this handoff describes future verification options subject to authorization, and the inventory is bounded rather than exhaustive.

Languages

LanguageFilesShare of source
JavaScript28699%
Markdown101docs/config
YAML7docs/config
JSON4docs/config
Sass21%
CSS1docs/config

Start reading here

Probable source entrypoint: src/ — inferred from the directory tree and manifest, not the upstream docs.

Source roots

src/ (134 files) lib/ (13 files)

Source layout — src/

PathFiles
src/core/81

Repository structure

Top-level pathFiles
spec/145
src/134
release_notes/96
lib/13
scripts/8
.github/6
images/1
.circleci/1

Docs found: README.md

Package

package.json — jasmine-core v7.0.2, 15 declared dependencies.

@eslint/eslintrc@eslint/js@jasminejs/reportersarchivercss-url-embedejseslinteslint-plugin-compatglobglobalsjasminejasmine-browser-runner

CI & config entrypoints

Structural health signals

Average score 6.8/10 across 96 analyzed source files; 30 hotspots surfaced.

These are deterministic review leads — size, churn, and structural signals — not proof of a bug in this project.

Recent history