# Testing signals — chaijs/chai

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

# Testing signals — chaijs/chai

Scanned commit d86de2a9519bdd0d89aa64c9fbcc0e880513b153 (2026-09-29). 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; no passing result or measured coverage is asserted. The configured suites use Mocha for Node and Web Test Runner with Playwright for browsers. Inspected tests exercise interface behavior, error diagnostics, plugin installation, utility registration, configuration, subsets, and cross-realm exceptions. File-selection rules leave some tracked nested tests outside the default suites, and the inventory is bounded rather than exhaustive.
- The inspected scripts define npm test as Node plus browser suites with pretest lint; test-node uses c8 --99 --check-coverage and Mocha with test/bootstrap/index.js over test/*.js. These definitions were not executed. — [package.json#L38-L45](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/package.json#L38-L45) [test/bootstrap/index.js#L1-L30](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/bootstrap/index.js#L1-L30)
- globalErr executes a failure callback, optionally rejects Chai implementation stack frames when captureStackTrace is supported, and validates exact messages, regexes, or error-property subsets. — [test/bootstrap/index.js#L3-L9](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/bootstrap/index.js#L3-L9) [test/bootstrap/index.js#L30-L58](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/bootstrap/index.js#L30-L58)
- The three interface suites contain successful assertions and failure checks; expect additionally verifies literal template tags and invalid-property diagnostics, while should installs its prototype interface. — [test/assert.js#L4-L38](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/assert.js#L4-L38) [test/expect.js#L4-L20](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/expect.js#L4-L20) [test/expect.js#L64-L92](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/expect.js#L64-L92) [test/should.js#L4-L11](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/should.js#L4-L11)
- Plugin tests cover basic, repeated, nested, chained, and detached use calls; utility tests cover target reassignment, selective flag transfer, and addMethod/addProperty/addChainableMethod events. — [test/plugins.js#L15-L62](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/plugins.js#L15-L62) [test/utilities.js#L13-L58](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/utilities.js#L13-L58) [test/utilities.js#L1536-L1596](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/utilities.js#L1536-L1596)
- Configuration tests back up and restore config per test and inspect proxy enablement, excluded keys, and a custom deepEqual comparator that accepts nearby numbers. — [test/configuration.js#L10-L25](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/configuration.js#L10-L25) [test/configuration.js#L735-L803](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/configuration.js#L735-L803)
- Subset tests include nested objects, Date mismatch, circular actual objects with finite expected shapes, validator functions, and null/non-object inputs; those examples do not establish behavior for every cyclic expected graph. — [test/subset.js#L34-L95](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/subset.js#L34-L95) [test/subset.js#L97-L140](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/subset.js#L97-L140)
- Both default selectors target top-level test/*.js, excluding nested display/type-detect files; browsers additionally exclude virtual-machines.js. That Node-only test uses vm.runInContext to check exceptions from another realm. — [package.json#L40-L41](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/package.json#L40-L41) [web-test-runner.config.js#L8-L11](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/web-test-runner.config.js#L8-L11) [test/virtual-machines.js#L1-L34](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/virtual-machines.js#L1-L34) [test/type-detect/index.js#L1-L25](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/test/type-detect/index.js#L1-L25)
- Inspected CI definitions build/test Node 20, 25, and latest, lint on Node 24, and run Chromium/Firefox browser jobs; none of these workflow steps invokes the separate lint:types script. — [.github/workflows/node.js.yml#L21-L50](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/.github/workflows/node.js.yml#L21-L50) [.github/workflows/browsers.yml#L19-L34](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/.github/workflows/browsers.yml#L19-L34) [.github/workflows/npm-publish.yml#L19-L25](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/.github/workflows/npm-publish.yml#L19-L25) [package.json#L42-L45](https://github.com/chaijs/chai/blob/d86de2a9519bdd0d89aa64c9fbcc0e880513b153/package.json#L42-L45)

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)
