Full Code of mochajs/mocha for AI

main bb66555ea7e9 cached
611 files
1.6 MB
423.7k tokens
440 symbols
1 requests
Download .txt
Showing preview only (1,746K chars total). Download the full file or copy to clipboard to get everything.
Repository: mochajs/mocha
Branch: main
Commit: bb66555ea7e9
Files: 611
Total size: 1.6 MB

Directory structure:
gitextract_zvdgtjox/

├── .browserslistrc
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   ├── DEVELOPMENT.md
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── 01-bug.yml
│   │   ├── 02-documentation.yml
│   │   ├── 03-feature-request.yml
│   │   ├── 04-performance.yml
│   │   ├── 05-repository-tooling.yml
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   ├── release-please/
│   │   ├── config.json
│   │   └── manifest.json
│   └── workflows/
│       ├── mocha.yml
│       ├── nightly-site-deploy.yml
│       ├── npm-script.yml
│       ├── octoguide.yml
│       └── release-please.yml
├── .gitignore
├── .knip.jsonc
├── .lintstagedrc.json
├── .mailmap
├── .mocharc.yml
├── .npmrc
├── .nycrc
├── .prettierignore
├── .wallaby.js
├── AUTHORS
├── CHANGELOG.md
├── FUNDING.md
├── LICENSE
├── MAINTAINERS.md
├── PROJECT_CHARTER.md
├── README.md
├── SECURITY.md
├── bin/
│   ├── _mocha
│   └── mocha.js
├── browser-entry.js
├── docs/
│   ├── .gitignore
│   ├── .knip.jsonc
│   ├── .prettierrc.json
│   ├── README.md
│   ├── _data/
│   │   ├── blocklist.json
│   │   └── supporters.cjs
│   ├── _redirects
│   ├── astro.config.ts
│   ├── netlify.toml
│   ├── package.json
│   ├── public/
│   │   └── example/
│   │       ├── Array.js
│   │       └── tests.html
│   ├── src/
│   │   ├── components/
│   │   │   ├── Badges.astro
│   │   │   ├── ClientRedirects.astro
│   │   │   ├── FixtureWizard.astro
│   │   │   ├── Footer.astro
│   │   │   ├── Head.astro
│   │   │   ├── HomepagePageTitle.astro
│   │   │   ├── PageTitle.astro
│   │   │   └── Supporters.astro
│   │   ├── content/
│   │   │   ├── config.ts
│   │   │   ├── data/
│   │   │   │   └── sponsors.json
│   │   │   └── docs/
│   │   │       ├── declaring/
│   │   │       │   ├── dynamic-tests.mdx
│   │   │       │   ├── exclusive-tests.mdx
│   │   │       │   ├── inclusive-tests.mdx
│   │   │       │   ├── pending-tests.mdx
│   │   │       │   └── retrying-tests.mdx
│   │   │       ├── explainers/
│   │   │       │   ├── compilers-deprecation.mdx
│   │   │       │   ├── count-assertions.mdx
│   │   │       │   ├── detecting-multiple-calls-to-done.mdx
│   │   │       │   ├── environment-variables.mdx
│   │   │       │   ├── find-global-leaks.mdx
│   │   │       │   ├── global-variables.mdx
│   │   │       │   ├── nodejs-native-esm-support.mdx
│   │   │       │   ├── programmatic-usage.mdx
│   │   │       │   ├── related-tools.mdx
│   │   │       │   ├── run-cycle-overview.mdx
│   │   │       │   ├── security-vulnerability-reports.mdx
│   │   │       │   ├── shared-behaviours.mdx
│   │   │       │   ├── spies.mdx
│   │   │       │   ├── stub-stdout.mdx
│   │   │       │   ├── tagging.mdx
│   │   │       │   ├── test-duration.mdx
│   │   │       │   ├── test-fixture-decision-tree.mdx
│   │   │       │   ├── third-party-reporters.mdx
│   │   │       │   └── third-party-uis.mdx
│   │   │       ├── features/
│   │   │       │   ├── arrow-functions.mdx
│   │   │       │   ├── assertions.mdx
│   │   │       │   ├── asynchronous-code.mdx
│   │   │       │   ├── diffs.mdx
│   │   │       │   ├── error-codes.mdx
│   │   │       │   ├── global-fixtures.mdx
│   │   │       │   ├── hooks.mdx
│   │   │       │   ├── parallel-mode.mdx
│   │   │       │   ├── root-hook-plugins.mdx
│   │   │       │   └── timeouts.mdx
│   │   │       ├── getting-started.mdx
│   │   │       ├── index.mdx
│   │   │       ├── interfaces/
│   │   │       │   ├── about.mdx
│   │   │       │   ├── bdd.mdx
│   │   │       │   ├── exports.mdx
│   │   │       │   ├── qunit.mdx
│   │   │       │   ├── require.mdx
│   │   │       │   ├── tdd.mdx
│   │   │       │   └── third-party.mdx
│   │   │       ├── reporters/
│   │   │       │   ├── about.mdx
│   │   │       │   ├── doc.mdx
│   │   │       │   ├── dot.mdx
│   │   │       │   ├── html.mdx
│   │   │       │   ├── json-stream.mdx
│   │   │       │   ├── json.mdx
│   │   │       │   ├── landing.mdx
│   │   │       │   ├── list.mdx
│   │   │       │   ├── markdown.mdx
│   │   │       │   ├── min.mdx
│   │   │       │   ├── nyan.mdx
│   │   │       │   ├── progress.mdx
│   │   │       │   ├── spec.mdx
│   │   │       │   ├── tap.mdx
│   │   │       │   ├── third-party.mdx
│   │   │       │   └── xunit.mdx
│   │   │       └── running/
│   │   │           ├── browsers.mdx
│   │   │           ├── cli.mdx
│   │   │           ├── configuring.mdx
│   │   │           ├── editor-plugins.mdx
│   │   │           └── test-globs.mdx
│   │   ├── env.d.ts
│   │   └── style/
│   │       └── custom.css
│   └── tsconfig.json
├── eslint.config.js
├── example/
│   └── config/
│       ├── .mocharc.js
│       ├── .mocharc.json
│       ├── .mocharc.jsonc
│       ├── .mocharc.yml
│       └── README.md
├── index.js
├── karma.conf.js
├── lib/
│   ├── browser/
│   │   ├── highlight-tags.js
│   │   ├── parse-query.js
│   │   └── template.html
│   ├── cli/
│   │   ├── cli.js
│   │   ├── collect-files.js
│   │   ├── commands.js
│   │   ├── config.js
│   │   ├── index.js
│   │   ├── init.js
│   │   ├── lookup-files.js
│   │   ├── node-flags.js
│   │   ├── one-and-dones.js
│   │   ├── options.js
│   │   ├── run-helpers.js
│   │   ├── run-option-metadata.js
│   │   ├── run.js
│   │   └── watch-run.js
│   ├── context.js
│   ├── error-constants.js
│   ├── errors.js
│   ├── hook.js
│   ├── interfaces/
│   │   ├── bdd.js
│   │   ├── common.js
│   │   ├── exports.js
│   │   ├── index.js
│   │   ├── qunit.js
│   │   └── tdd.js
│   ├── mocha.js
│   ├── mocharc.json
│   ├── nodejs/
│   │   ├── buffered-worker-pool.js
│   │   ├── esm-utils.js
│   │   ├── file-unloader.js
│   │   ├── parallel-buffered-runner.js
│   │   ├── reporters/
│   │   │   └── parallel-buffered.js
│   │   ├── serializer.js
│   │   └── worker.js
│   ├── pending.js
│   ├── plugin-loader.js
│   ├── reporters/
│   │   ├── base.js
│   │   ├── doc.js
│   │   ├── dot.js
│   │   ├── html.js
│   │   ├── index.js
│   │   ├── json-stream.js
│   │   ├── json.js
│   │   ├── landing.js
│   │   ├── list.js
│   │   ├── markdown.js
│   │   ├── min.js
│   │   ├── nyan.js
│   │   ├── progress.js
│   │   ├── spec.js
│   │   ├── tap.js
│   │   └── xunit.js
│   ├── runnable.js
│   ├── runner.js
│   ├── stats-collector.js
│   ├── suite.js
│   ├── test.js
│   ├── types.d.ts
│   └── utils.js
├── mocha.css
├── mocha.mjs
├── netlify.toml
├── package.json
├── renovate.json
├── rollup.config.mjs
├── scripts/
│   ├── karma-rollup-plugin.js
│   ├── linkify-changelog.mjs
│   ├── pick-from-package-json.mjs
│   └── update-authors.js
├── test/
│   ├── README.md
│   ├── assertions.js
│   ├── browser-specific/
│   │   ├── esm.spec.mjs
│   │   ├── fixtures/
│   │   │   ├── esm.fixture.mjs
│   │   │   └── webpack/
│   │   │       ├── webpack.config.js
│   │   │       └── webpack.fixture.mjs
│   │   └── setup.js
│   ├── compiler/
│   │   ├── test.coffee
│   │   └── test.foo
│   ├── compiler-cjs/
│   │   ├── test.js
│   │   ├── test.js.compiled
│   │   ├── test.ts
│   │   └── test.ts.compiled
│   ├── compiler-esm/
│   │   ├── package.json
│   │   ├── test-tla.js
│   │   ├── test-tla.js.compiled
│   │   ├── test-tla.mjs
│   │   ├── test-tla.mjs.compiled
│   │   ├── test-tla.ts
│   │   ├── test-tla.ts.compiled
│   │   ├── test.js
│   │   ├── test.js.compiled
│   │   ├── test.mjs
│   │   ├── test.mjs.compiled
│   │   ├── test.ts
│   │   └── test.ts.compiled
│   ├── compiler-fixtures/
│   │   ├── esm-loader.fixture.mjs
│   │   ├── esm-only-loader/
│   │   │   ├── README.md
│   │   │   ├── esm-loader.fixture.mjs
│   │   │   ├── esm.fixture.js
│   │   │   └── package.json
│   │   ├── esm.fixture.js
│   │   ├── foo.fixture.js
│   │   ├── js.fixture.js
│   │   └── ts.fixture.js
│   ├── integration/
│   │   ├── README.md
│   │   ├── color.spec.js
│   │   ├── common-js-require.spec.js
│   │   ├── compiler-cjs.spec.js
│   │   ├── compiler-esm-only-loader.spec.js
│   │   ├── compiler-esm.spec.js
│   │   ├── compiler-globbing.spec.js
│   │   ├── config.spec.js
│   │   ├── deprecate.spec.js
│   │   ├── diffs.spec.js
│   │   ├── duplicate-arguments.spec.js
│   │   ├── esm.spec.js
│   │   ├── events.spec.js
│   │   ├── fifo.spec.js
│   │   ├── file-utils.spec.js
│   │   ├── fixtures/
│   │   │   ├── __default__.fixture.js
│   │   │   ├── cascade.fixture.js
│   │   │   ├── collect-files.fixture.mjs
│   │   │   ├── common-js-require.fixture.js
│   │   │   ├── config/
│   │   │   │   ├── mocha-config/
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── package.json
│   │   │   │   ├── mocharc.cjs
│   │   │   │   ├── mocharc.js
│   │   │   │   ├── mocharc.json
│   │   │   │   ├── mocharc.mjs
│   │   │   │   ├── mocharc.yaml
│   │   │   │   └── mocharcWithThrowError.js
│   │   │   ├── current-test-title.fixture.js
│   │   │   ├── deprecate.fixture.js
│   │   │   ├── diffs/
│   │   │   │   ├── diffs.css.in
│   │   │   │   ├── diffs.css.out
│   │   │   │   ├── diffs.fixture.js
│   │   │   │   └── output
│   │   │   ├── esm/
│   │   │   │   ├── add.mjs
│   │   │   │   ├── dir-cjs-require/
│   │   │   │   │   └── index.js
│   │   │   │   ├── esm-failure.fixture.mjs
│   │   │   │   ├── esm-success.fixture.mjs
│   │   │   │   ├── js-folder/
│   │   │   │   │   ├── add.js
│   │   │   │   │   ├── esm-in-js.fixture.js
│   │   │   │   │   └── package.json
│   │   │   │   ├── loader-with-module-not-found/
│   │   │   │   │   ├── loader-that-recognizes-ts.mjs
│   │   │   │   │   ├── test-that-imports-non-existing-module.fixture.mjs
│   │   │   │   │   └── test-that-imports-non-existing-module.fixture.ts
│   │   │   │   ├── syntax-error/
│   │   │   │   │   └── esm-syntax-error.fixture.mjs
│   │   │   │   ├── test-that-uses-dir-cjs-require.fixture.js/
│   │   │   │   │   └── index.js
│   │   │   │   └── type-module/
│   │   │   │       ├── package.json
│   │   │   │       └── test-that-imports-non-existing-module.fixture.js
│   │   │   ├── exit.fixture.js
│   │   │   ├── failing-sync.fixture.js
│   │   │   ├── failing.fixture.js
│   │   │   ├── glob/
│   │   │   │   ├── glob.spec.js
│   │   │   │   └── nested/
│   │   │   │       └── glob.spec.js
│   │   │   ├── hooks/
│   │   │   │   ├── after-each-hook-async-error.fixture.js
│   │   │   │   ├── after-each-hook-error.fixture.js
│   │   │   │   ├── after-each-this-test-error.fixture.js
│   │   │   │   ├── after-hook-async-error.fixture.js
│   │   │   │   ├── after-hook-deepnested-error.fixture.js
│   │   │   │   ├── after-hook-error.fixture.js
│   │   │   │   ├── after-hook-nested-error.fixture.js
│   │   │   │   ├── before-each-hook-async-error.fixture.js
│   │   │   │   ├── before-each-hook-error-with-fail-affected.fixture.js
│   │   │   │   ├── before-each-hook-error.fixture.js
│   │   │   │   ├── before-each-hook-throw-non-error.fixture.js
│   │   │   │   ├── before-hook-async-error-tip.fixture.js
│   │   │   │   ├── before-hook-async-error.fixture.js
│   │   │   │   ├── before-hook-deepnested-error.fixture.js
│   │   │   │   ├── before-hook-error-tip.fixture.js
│   │   │   │   ├── before-hook-error-with-fail-affected.fixture.js
│   │   │   │   ├── before-hook-error.fixture.js
│   │   │   │   ├── before-hook-nested-error.fixture.js
│   │   │   │   ├── before-hook-root-error.fixture.js
│   │   │   │   ├── before-hook-throw-non-error.fixture.js
│   │   │   │   ├── multiple-hook-async-error.fixture.js
│   │   │   │   └── multiple-hook-error.fixture.js
│   │   │   ├── multiple-done-async.fixture.js
│   │   │   ├── multiple-done-before-each.fixture.js
│   │   │   ├── multiple-done-before.fixture.js
│   │   │   ├── multiple-done-specs.fixture.js
│   │   │   ├── multiple-done-with-error.fixture.js
│   │   │   ├── multiple-done.fixture.js
│   │   │   ├── multiple-runs/
│   │   │   │   ├── clean-references.fixture.js
│   │   │   │   ├── dispose.fixture.js
│   │   │   │   ├── multiple-runs-with-different-output-suite.fixture.js
│   │   │   │   ├── multiple-runs-with-flaky-before-each-suite.fixture.js
│   │   │   │   ├── multiple-runs-with-flaky-before-each.fixture.js
│   │   │   │   ├── run-thrice-helper.js
│   │   │   │   ├── run-thrice.fixture.js
│   │   │   │   ├── start-second-run-if-previous-is-still-running-suite.fixture.js
│   │   │   │   └── start-second-run-if-previous-is-still-running.fixture.js
│   │   │   ├── no-diff.fixture.js
│   │   │   ├── options/
│   │   │   │   ├── allow-uncaught/
│   │   │   │   │   ├── propagate.fixture.js
│   │   │   │   │   └── this-skip-it.fixture.js
│   │   │   │   ├── async-only-async.fixture.js
│   │   │   │   ├── async-only-sync.fixture.js
│   │   │   │   ├── bail-async.fixture.js
│   │   │   │   ├── bail-with-after.fixture.js
│   │   │   │   ├── bail-with-afterEach.fixture.js
│   │   │   │   ├── bail-with-before.fixture.js
│   │   │   │   ├── bail-with-beforeEach.fixture.js
│   │   │   │   ├── bail-with-test.fixture.js
│   │   │   │   ├── bail.fixture.js
│   │   │   │   ├── delay-fail.fixture.js
│   │   │   │   ├── delay-only.fixture.js
│   │   │   │   ├── delay.fixture.js
│   │   │   │   ├── dry-run/
│   │   │   │   │   ├── dry-run.fixture.js
│   │   │   │   │   └── stack-size.fixture.js
│   │   │   │   ├── extension/
│   │   │   │   │   ├── test1.fixture.js
│   │   │   │   │   └── test2.fixture.coffee
│   │   │   │   ├── file-alpha.fixture.js
│   │   │   │   ├── file-beta.fixture.js
│   │   │   │   ├── file-theta.fixture.js
│   │   │   │   ├── forbid-only/
│   │   │   │   │   ├── only-before-each.fixture.js
│   │   │   │   │   ├── only-before.fixture.js
│   │   │   │   │   ├── only-empty-suite.fixture.js
│   │   │   │   │   ├── only-suite.fixture.js
│   │   │   │   │   ├── only.fixture.js
│   │   │   │   │   └── passed.fixture.js
│   │   │   │   ├── forbid-pending/
│   │   │   │   │   ├── before-this-skip.fixture.js
│   │   │   │   │   ├── beforeEach-this-skip.fixture.js
│   │   │   │   │   ├── passed.fixture.js
│   │   │   │   │   ├── pending.fixture.js
│   │   │   │   │   ├── skip-empty-suite.fixture.js
│   │   │   │   │   ├── skip-suite.fixture.js
│   │   │   │   │   ├── skip.fixture.js
│   │   │   │   │   └── this-skip.fixture.js
│   │   │   │   ├── grep.fixture.js
│   │   │   │   ├── ignore/
│   │   │   │   │   ├── fail.fixture.js
│   │   │   │   │   ├── nested/
│   │   │   │   │   │   ├── fail.fixture.js
│   │   │   │   │   │   └── pass.fixture.js
│   │   │   │   │   └── pass.fixture.js
│   │   │   │   ├── jobs/
│   │   │   │   │   └── fail-in-parallel.fixture.js
│   │   │   │   ├── only/
│   │   │   │   │   ├── bdd.fixture.js
│   │   │   │   │   ├── qunit.fixture.js
│   │   │   │   │   └── tdd.fixture.js
│   │   │   │   ├── parallel/
│   │   │   │   │   ├── bail.fixture.js
│   │   │   │   │   ├── exclusive-test-a.fixture.js
│   │   │   │   │   ├── exclusive-test-b.fixture.js
│   │   │   │   │   ├── retries-a.fixture.js
│   │   │   │   │   ├── retries-b.fixture.js
│   │   │   │   │   ├── syntax-err.fixture.js
│   │   │   │   │   ├── test-a.fixture.js
│   │   │   │   │   ├── test-b.fixture.js
│   │   │   │   │   ├── test-c.fixture.js
│   │   │   │   │   ├── test-d.fixture.js
│   │   │   │   │   └── uncaught.fixture.js
│   │   │   │   ├── reporter-esm.fixture.mjs
│   │   │   │   ├── reporter-with-options.fixture.js
│   │   │   │   ├── retries.fixture.js
│   │   │   │   ├── slow-test.fixture.js
│   │   │   │   ├── sort-alpha.fixture.js
│   │   │   │   ├── sort-beta.fixture.js
│   │   │   │   ├── timeout-unref.fixture.js
│   │   │   │   └── watch/
│   │   │   │       ├── dependency.fixture.js
│   │   │   │       ├── hook.fixture.js
│   │   │   │       ├── test-file-change.fixture.js
│   │   │   │       └── test-with-dependency.fixture.js
│   │   │   ├── parallel/
│   │   │   │   ├── circular-error-array.mjs
│   │   │   │   ├── circular-error-object.mjs
│   │   │   │   ├── getter-error-object.mjs
│   │   │   │   ├── non-circular-error.mjs
│   │   │   │   ├── test1.mjs
│   │   │   │   ├── test2.mjs
│   │   │   │   ├── test3.mjs
│   │   │   │   ├── testworkerid1.mjs
│   │   │   │   ├── testworkerid2.mjs
│   │   │   │   └── testworkerid3.mjs
│   │   │   ├── passing-async.fixture.js
│   │   │   ├── passing-sync.fixture.js
│   │   │   ├── passing.fixture.js
│   │   │   ├── pending/
│   │   │   │   ├── programmatic.fixture.js
│   │   │   │   ├── skip-async-before-hooks.fixture.js
│   │   │   │   ├── skip-async-before-nested.fixture.js
│   │   │   │   ├── skip-async-before.fixture.js
│   │   │   │   ├── skip-async-beforeEach.fixture.js
│   │   │   │   ├── skip-async-spec.fixture.js
│   │   │   │   ├── skip-hierarchy.fixture.js
│   │   │   │   ├── skip-shorthand.fixture.js
│   │   │   │   ├── skip-sync-after.fixture.js
│   │   │   │   ├── skip-sync-before-hooks.fixture.js
│   │   │   │   ├── skip-sync-before-inner.fixture.js
│   │   │   │   ├── skip-sync-before-nested.fixture.js
│   │   │   │   ├── skip-sync-before.fixture.js
│   │   │   │   ├── skip-sync-beforeEach-cond.fixture.js
│   │   │   │   ├── skip-sync-beforeEach.fixture.js
│   │   │   │   ├── skip-sync-spec.fixture.js
│   │   │   │   └── spec.fixture.js
│   │   │   ├── plugins/
│   │   │   │   ├── global-fixtures/
│   │   │   │   │   ├── global-setup-teardown-multiple.fixture.js
│   │   │   │   │   ├── global-setup-teardown.fixture.js
│   │   │   │   │   ├── global-setup.fixture.js
│   │   │   │   │   └── global-teardown.fixture.js
│   │   │   │   └── root-hooks/
│   │   │   │       ├── esm/
│   │   │   │       │   ├── package.json
│   │   │   │       │   └── root-hook-defs-esm.fixture.js
│   │   │   │       ├── root-hook-defs-a.fixture.js
│   │   │   │       ├── root-hook-defs-b.fixture.js
│   │   │   │       ├── root-hook-defs-c.fixture.js
│   │   │   │       ├── root-hook-defs-d.fixture.js
│   │   │   │       ├── root-hook-defs-esm-broken.fixture.js
│   │   │   │       ├── root-hook-defs-esm.fixture.mjs
│   │   │   │       ├── root-hook-test-2.fixture.js
│   │   │   │       └── root-hook-test.fixture.js
│   │   │   ├── regression/
│   │   │   │   ├── issue-1991.fixture.js
│   │   │   │   ├── issue-2315.fixture.js
│   │   │   │   ├── issue-2406.fixture.js
│   │   │   │   └── issue-2417.fixture.js
│   │   │   ├── reporters.fixture.js
│   │   │   ├── retries/
│   │   │   │   ├── async.fixture.js
│   │   │   │   ├── early-pass.fixture.js
│   │   │   │   ├── hooks.fixture.js
│   │   │   │   └── nested.fixture.js
│   │   │   ├── runner/
│   │   │   │   ├── events-bail-retries.fixture.js
│   │   │   │   ├── events-bail.fixture.js
│   │   │   │   ├── events-basic.fixture.js
│   │   │   │   ├── events-delay.fixture.js
│   │   │   │   └── events-retries.fixture.js
│   │   │   ├── signals-sigabrt.fixture.js
│   │   │   ├── signals-sigterm-numeric.fixture.js
│   │   │   ├── signals-sigterm.fixture.js
│   │   │   ├── simple-reporter.js
│   │   │   ├── simple-ui.fixture.js
│   │   │   ├── simple-ui.fixture.mjs
│   │   │   ├── suite/
│   │   │   │   ├── suite-no-callback.fixture.js
│   │   │   │   ├── suite-returning-value.fixture.js
│   │   │   │   ├── suite-skipped-callback.fixture.js
│   │   │   │   └── suite-skipped-no-callback.fixture.js
│   │   │   ├── test-for-simple-ui.fixture.js
│   │   │   ├── timeout-chained-call.fixture.js
│   │   │   ├── timeout-override.fixture.js
│   │   │   ├── timeout.fixture.js
│   │   │   └── uncaught/
│   │   │       ├── after-runner.fixture.js
│   │   │       ├── double.fixture.js
│   │   │       ├── fatal.fixture.js
│   │   │       ├── hook.fixture.js
│   │   │       ├── issue-1327.fixture.js
│   │   │       ├── issue-1417.fixture.js
│   │   │       ├── listeners.fixture.js
│   │   │       ├── pending.fixture.js
│   │   │       ├── recover.fixture.js
│   │   │       └── unhandled.fixture.js
│   │   ├── glob.spec.js
│   │   ├── helpers.js
│   │   ├── hook-err.spec.js
│   │   ├── hooks.spec.js
│   │   ├── init.spec.js
│   │   ├── invalid-arguments.spec.js
│   │   ├── multiple-done.spec.js
│   │   ├── multiple-runs.spec.js
│   │   ├── no-diff.spec.js
│   │   ├── only.spec.js
│   │   ├── options/
│   │   │   ├── allowUncaught.spec.js
│   │   │   ├── asyncOnly.spec.js
│   │   │   ├── bail.spec.js
│   │   │   ├── delay.spec.js
│   │   │   ├── dryRun.spec.js
│   │   │   ├── exit.spec.js
│   │   │   ├── extension.spec.js
│   │   │   ├── failZero.spec.js
│   │   │   ├── file.spec.js
│   │   │   ├── forbidOnly.spec.js
│   │   │   ├── forbidPending.spec.js
│   │   │   ├── grep.spec.js
│   │   │   ├── ignore.spec.js
│   │   │   ├── invert.spec.js
│   │   │   ├── jobs.spec.js
│   │   │   ├── listInterfaces.spec.js
│   │   │   ├── listReporters.spec.js
│   │   │   ├── node-flags.spec.js
│   │   │   ├── parallel.spec.js
│   │   │   ├── passOnFailingTestSuite.spec.js
│   │   │   ├── posixExitCodes.spec.js
│   │   │   ├── reporter-option.spec.js
│   │   │   ├── reporter.spec.js
│   │   │   ├── retries.spec.js
│   │   │   ├── sort.spec.js
│   │   │   ├── timeout.spec.js
│   │   │   ├── ui.spec.js
│   │   │   └── watch.spec.js
│   │   ├── parallel.spec.js
│   │   ├── pending.spec.js
│   │   ├── plugins/
│   │   │   ├── global-fixtures.spec.js
│   │   │   └── root-hooks.spec.js
│   │   ├── regression.spec.js
│   │   ├── reporters.spec.js
│   │   ├── retries.spec.js
│   │   ├── suite.spec.js
│   │   ├── timeout.spec.js
│   │   └── uncaught.spec.js
│   ├── interfaces/
│   │   ├── bdd.spec.js
│   │   ├── exports.spec.js
│   │   ├── qunit.spec.js
│   │   └── tdd.spec.js
│   ├── jsapi/
│   │   └── index.js
│   ├── node-unit/
│   │   ├── buffered-worker-pool.spec.js
│   │   ├── cli/
│   │   │   ├── config.spec.js
│   │   │   ├── fixtures/
│   │   │   │   ├── bad-module.fixture.js
│   │   │   │   └── bad-require.fixture.js
│   │   │   ├── mocha-flags.spec.js
│   │   │   ├── node-flags.spec.js
│   │   │   ├── options.spec.js
│   │   │   ├── run-helpers.spec.js
│   │   │   └── run.spec.js
│   │   ├── esm-utils.spec.js
│   │   ├── fixtures/
│   │   │   ├── broken-default-import.mjs
│   │   │   ├── broken-syntax.ts
│   │   │   ├── dumb-module.fixture.js
│   │   │   ├── dumber-module.fixture.js
│   │   │   ├── mock-mocha-forbidden-exclusivity-err.ts
│   │   │   ├── mock-ts-node-compile-err.ts
│   │   │   ├── module-without-default-export.mjs
│   │   │   └── wonky-reporter.fixture.js
│   │   ├── mocha.spec.js
│   │   ├── parallel-buffered-runner.spec.js
│   │   ├── reporters/
│   │   │   └── parallel-buffered.spec.js
│   │   ├── serializer.spec.js
│   │   ├── stack-trace-filter.spec.js
│   │   ├── utils.spec.js
│   │   └── worker.spec.js
│   ├── only/
│   │   ├── bdd-require.spec.js
│   │   └── global/
│   │       ├── bdd.spec.js
│   │       ├── qunit.spec.js
│   │       └── tdd.spec.js
│   ├── reporters/
│   │   ├── base.spec.js
│   │   ├── doc.spec.js
│   │   ├── dot.spec.js
│   │   ├── helpers.js
│   │   ├── json-stream.spec.js
│   │   ├── json.spec.js
│   │   ├── landing.spec.js
│   │   ├── list.spec.js
│   │   ├── markdown.spec.js
│   │   ├── min.spec.js
│   │   ├── nyan.spec.js
│   │   ├── progress.spec.js
│   │   ├── spec.spec.js
│   │   ├── tap.spec.js
│   │   └── xunit.spec.js
│   ├── require/
│   │   ├── a.js
│   │   ├── b.coffee
│   │   ├── c.js
│   │   ├── d.coffee
│   │   └── require.spec.js
│   ├── setup.js
│   ├── smoke/
│   │   └── smoke.spec.js
│   └── unit/
│       ├── context.spec.js
│       ├── duration.spec.js
│       ├── errors.spec.js
│       ├── globals.spec.js
│       ├── grep.spec.js
│       ├── hook-async.spec.js
│       ├── hook-sync-nested.spec.js
│       ├── hook-sync.spec.js
│       ├── hook-timeout.spec.js
│       ├── hook.spec.js
│       ├── mocha.spec.js
│       ├── overspecified-async.spec.js
│       ├── parse-query.spec.js
│       ├── plugin-loader.spec.js
│       ├── required-tokens.spec.js
│       ├── root.spec.js
│       ├── runnable.spec.js
│       ├── runner.spec.js
│       ├── suite.spec.js
│       ├── test.spec.js
│       ├── throw.spec.js
│       ├── timeout.spec.js
│       └── utils.spec.js
└── tsconfig.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .browserslistrc
================================================
node >= 14
last 2 Chrome versions
last 2 Edge versions
last 2 Firefox versions
last 2 Safari versions
last 2 Opera versions
unreleased Chrome versions
unreleased Edge versions
unreleased Firefox versions
unreleased Safari versions
unreleased Opera versions


================================================
FILE: .editorconfig
================================================
# This file is for unifying the coding style for different editors and IDEs
# editorconfig.org

root = true

[*]
end_of_line = lf
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = space
indent_size = 2


================================================
FILE: .gitattributes
================================================
* text=auto eol=lf


================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
# Mocha Code of Conduct

## Be friendly and patient

We understand that everyone has different levels of experience or knowledge in many diverse fields, be it technical or
non-technical in nature.
We also have areas of knowledge we are eager to expand; we want to be a community where people can not only contribute, but feel comfortable to ask questions as well and learn along the way.
If someone says something wrong, or says something accidentally offensive, respond with patience and try to keep it polite and civil.
Remember that we all were newbies at one point.

## Be welcoming

We strive to be a community that welcomes and supports people of all backgrounds and identities.
This includes, but is not limited to, members of any race, ethnicity, culture, national origin, color, immigration status, social and economic class, educational level, sex, sexual orientation, gender identity and expression, age, size, family status, political belief, religion, and mental and physical ability.

## Be considerate

Your work will be used by other people, and you in turn will depend on the work of others.
Any decision you make will affect users and colleagues, and you should take those consequences into account when making decisions.
Remember that we’re a world-wide community, so you might not be communicating in someone else’s primary language.

## Be respectful

Not all of us will agree all the time, but disagreement is no excuse for poor behavior and poor manners.
We might all experience some frustration now and then, but we cannot allow that frustration to turn into a personal attack.
It’s important to remember that a community where people feel uncomfortable or threatened is not a productive one.
Members of the OpenJS Foundation community should be respectful when dealing with other members as well as with people outside the OpenJS Foundation community.

## Be careful in the words that you choose

We are a community of professionals, and we conduct ourselves professionally.
Be kind to others.
Do not insult or put down other participants.
Harassment and other exclusionary behavior aren’t acceptable.
This includes, but is not limited to:

- Violent threats or language directed against another person.
- Discriminatory jokes and language.
- Posting sexually explicit or violent material.
- Posting (or threatening to post) other people’s personally identifying information (“doxing”).
- Personal insults, especially those using racist or sexist terms.
- Unwelcome sexual attention.
- Advocating for, or encouraging, any of the above behavior.
- Repeated harassment of others.
  In general, if someone asks you to stop, then stop.

## When we disagree, try to understand why

Disagreements, both social and technical, happen all the time and OpenJS Foundation projects are no exception.
It is important that we resolve disagreements and differing views constructively.
Remember that we’re different.
The strength of the OpenJS Foundation comes from its varied community, people from a wide range of backgrounds.
Different people have different perspectives on issues.
Being unable to understand why someone holds a viewpoint doesn’t mean that they’re wrong.
Don’t forget that it is human to err and blaming each other doesn’t get us anywhere.
Instead, focus on helping to resolve issues and learning from mistakes.

Original text courtesy of the Speak Up! project and Django Project.

## QUESTIONS?

If you have questions, please see the FAQ.
If that doesn’t answer your questions, feel free to email <report@lists.openjsf.org>.

# OpenJS Foundation Code of Conduct

The OpenJS Foundation and its member projects use the Contributor Covenant v1.4.1 as its Code of Conduct.
Refer to the following for the full text:

- [Contributor Covenant v1.4.1 in english](https://www.contributor-covenant.org/version/1/4/code-of-conduct)
- [Contributor Covenant v1.4.1 translations](https://www.contributor-covenant.org/translations)

Refer to the section on reporting and escalation in this document for the specific emails that can be used to report and escalate issues.

## Reporting

### Project Spaces

For reporting issues in spaces related to a member project please use the email provided by the project for reporting.
Projects handle CoC issues related to the spaces that they maintain.
Projects maintainers commit to:

- maintain the confidentiality with regard to the reporter of an incident
- to participate in the path for escalation as outlined in
  the section on Escalation when required.

### Foundation Spaces

For reporting issues in spaces managed by the OpenJS Foundation, for example, repositories within the OpenJS organization, use the email `report@lists.openjsf.org`.
The Cross Project Council (CPC) is responsible for managing these reports and commits to:

- maintain the confidentiality with regard to the reporter of an incident
- to participate in the path for escalation as outlined in
  the section on Escalation when required.

## Escalation

The OpenJS Foundation maintains a Code of Conduct Panel (CoCP).
This is a foundation-wide team established to manage escalation when a reporter believes that a report to a member project or the CPC has not been properly handled.
In order to escalate to the CoCP send an email to `"coc-escalation@lists.openjsf.org`.

For more information, refer to the full
[Code of Conduct governance document](https://github.com/openjs-foundation/cross-project-council/tree/main/proposals/approved/CODE_OF_CONDUCT).


================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributing to Mocha

> Please read these guidelines before submitting an issue, filing a feature request, or contributing code.

## ❓ Got a Question?

If you have a question about using Mocha, please use [StackOverflow](https://stackoverflow.com) or ask the friendly people in [our Discord](https://discord.gg/KeDn2uXhER).

## ✏️ Filing Issues

Before adding anything to the issue tracker, **please [search issues](https://github.com/mochajs/mocha/issues) to see if it's already been reported**.
Make sure to check closed and/or older issues as well.

With the exception of minor documentation typos, all changes to Mocha should be discussed in the issue tracker first.
This includes bugs, feature requests, and improvements to documentation.

### 🐛 I Found a Bug

Sorry!
It happens to the best of us.

Please [file an issue using the bug report template](https://github.com/mochajs/mocha/issues/new?assignees=&labels=type%3A+bug&projects=&template=01-bug.yml&title=%F0%9F%90%9B+Bug%3A+%3Cshort+description+of+the+bug%3E) with _as much detail as possible_ to help us reproduce and diagnose the bug.
Most importantly:

- Let us know _how_ you're running Mocha (options, flags, environment, browser or Node.js, etc.).
- Include your test code or file(s).
  If large, please provide a link to a repository or [gist](https://gist.github.com).

If we need more information from you, we'll let you know.
If you don't within a few weeks, your issue will be closed for inactivity.

### ❗️ Propose a Change

Please [file an issue using the feature request template](https://github.com/mochajs/mocha/issues/new?assignees=&labels=type%3A+feature&projects=&template=03-feature-request.yml&title=%F0%9F%9A%80+Feature%3A+%3Cshort+description+of+the+feature%3E).
Most importantly:

- Let us know _what_ the proposed change is, in as much detail as you can
- Explain _why_ you want the change
- Include your test code or file(s).
  If large, please provide a link to a repository or [gist](https://gist.github.com).

We'll discuss your proposed changes and how they relate to the overarching goals of Mocha, detailed below in [⚽️ About Project Goals](#%EF%B8%8F-about-project-goals).

## ⚽️ About Project Goals

Mocha is a test framework.
Developers use it against anything from legacy spaghetti in barely-supported browsers to stage-0 TC39 features in Electron.
Mocha is committed to providing support for maintained (LTS) versions of Node.js and popular browsers.

Mocha adheres strictly to [semantic versioning](https://semver.org).
We are _extremely cautious_ with changes that have the potential to break; given the size of Mocha's user base, it's _highly unlikely_ a breaking change will slide by.

Mocha's usage far outweighs its resources.
If a proposed feature would incur a maintenance penalty, it could be a hard sell.

We ask you please keep these goals in mind when making or proposing changes.

## 😇 I Just Want To Help

_Excellent._ Here's how:

- **Handy with JavaScript?** Please check out the issues labeled [`status: accepting prs`](https://github.com/mochajs/mocha/issues?q=is%3Aissue+is%3Aopen+label%3A%22status%3A+accepting+prs%22) or [`good first issue`](https://github.com/mochajs/mocha/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22+).
  Try `npx good-first-issue mocha`!
- **Can you write ~~good~~ well?** The [documentation](https://mochajs.org) almost always needs some love.
  See the [doc-related issues](https://github.com/mochajs/mocha/issues?q=is%3Aopen+is%3Aissue+label%3A%22area%3A+documentation%22).
- **Design your thing?** [Our site](https://mochajs.org) needs your magic touch.
- **Familiar with Mocha's codebase?** We could use your help triaging issues and/or reviewing pull requests.
  Please contact an [org member](https://github.com/orgs/mochajs/people), and we'll chat.
- **Want to build our community?** Mocha has a _lot_ of users.
  We could use your help bringing everyone together in peace and harmony.
  Please contact an [org member](https://github.com/orgs/mochajs/people).
- **Do you write unit tests for _fun_?** A PR which increases coverage is unlikely to be turned down.
- **Are you experienced?** 🎸 If you're a seasoned Mocha user, why not help answer some questions in [our Discord's `#help` channel](https://discord.gg/KeDn2uXhER)?

## 🙋 Frequently Asked Questions

### Can I work on this issue?

Anyone can work on any issue marked `status: accepting prs` 🙂 Please check if there is already a PR for this issue, and if it's still being worked on. If it hasn't been updated for over a week, you're welcome to open your own PR and we'll review it when we can!

## 👞 Contributing Code: Step-by-Step

First follow the steps in [DEVELOPMENT.md](./DEVELOPMENT.md) to get Mocha's repository installed locally.
Then:

### 🎋 Initial Creation

1. Make sure the issue is labeled with [`status: accepting prs`](https://github.com/mochajs/mocha/issues?q=is%3Aissue+is%3Aopen+label%3A%22status%3A+accepting+prs%22)
1. Create a new branch in your working copy.
1. Make your changes and add them via `git add`.
   - Your changes will likely be somewhere in `lib/`, `bin/`, or (if your changes are browser-specific) `browser-entry.js`.
   - Unit and/or integration **tests are required** for any code change.
     These live in `test/`.
   - **Do not modify** the root `mocha.js` file directly; it is automatically generated.
   - Keep your PR focused.
     Don't fix two things at once; don't upgrade dependencies unless necessary.
1. Before committing, run `npm test`.
   - This will run both Node.js-based and browser-based tests.
   - Ultimately, your pull request will be built on our continuous integration servers ([GitHub Actions](https://github.com/mochajs/mocha/actions?query=workflow%3A%22Tests%22)).
     The first step to ensuring these checks pass is to test on your own machine.
   - When tests are run in CI, a coverage check is sent to [Codecov](https://app.codecov.io/gh/mochajs/mocha). You'll need to [add the Codecov GitHub app](https://app.codecov.io/login) to upload these results from your fork. This is recommended but not necessary to open a PR.
     **A drop in code coverage % is considered a failed check**.
1. Commit your changes.
   - Use a brief message on the first line, referencing a relevant issue (e.g. `closes #12345`).
   - Add detail in subsequent lines.
   - A pre-commit hook will run which automatically formats your staged changes (and fixes any problems it can) with ESLint and Prettier.
     If ESLint fails to fix an issue, your commit will fail and you will need to manually correct the problem.
1. <a name="up-to-date"/> (Optional) Ensure you are up-to-date with Mocha's `main` branch:
   - You can add an "upstream" remote repo using `git remote add upstream https://github.com/mochajs/mocha.git && git fetch upstream`.
   - Navigate to your `main` branch using `git checkout main`.
   - Pull changes from `upstream` using `git pull upstream main`.
   - If any changes were pulled in, update your branch from `main` by switching back to your branch (`git checkout <your-branch>`) then merging using `git merge main`.
1. Push your changes to your fork; `git push origin`.
1. In your browser, navigate to [mochajs/mocha](https://github.com/mochajs/mocha).
   You should see a notification about your recent changes in your fork's branch, with a (green?) button to create a pull request.
   Click it.
1. Describe your changes in detail here, following the template.
   Once you're satisfied, submit the form.

At that point, hooray! 🎉
You should see a pull request on github.com/mochajs/mocha/pulls.

### 🤖 AI-Generated Code

We recognize that AI tools like GitHub Copilot, Claude, and others can be valuable aids in software development.
However, **all code contributions, whether written by humans or generated by AI, must meet the same quality standards**.

If you use AI to help generate code for a pull request:

- **All automated tests must pass**: Your code must pass linting, unit tests, integration tests, and any other automated checks.
- **Manual review is required**: AI-generated code must undergo the same thorough manual inspection as any other contribution. This includes checking for correctness, security vulnerabilities, adherence to project conventions, and overall code quality.
- **You are responsible**: As the submitter of the pull request, you are fully responsible for understanding and maintaining the code, regardless of how it was generated.

These requirements apply to all contributions and are not unique to AI-generated code—they simply reinforce our existing standards.

### 🏭 PR Process

Now that the pull request exists, some tasks will be run on it:

1. If you have not signed our [Contributor License Agreement](docs.linuxfoundation.org/lfx/easycla/v2-current/contributors), a friendly robot will prompt you to do so.
   A [CLA](https://cla.js.foundation/mochajs/mocha) (electronic) signature is **required** for all contributions of code to Mocha.
1. Continuous integration checks will run against your changes.
   The result of these checks will be displayed on your PR.
   - If the checks fail, you must address those before the PR is accepted.
1. Be patient while your PR is reviewed.
   This can take a while.
   We may request changes, but don't be afraid to question them.
1. Your PR might become conflicted with the code in `main`.
   If this is the case, you will need to [update your PR](#up-to-date) and resolve your conflicts.
1. You don't need to make a new PR to any needed changes.
   Instead, commit on top of your changes, and push these to your fork's branch.
   The PR will be updated, and CI will re-run.
1. Once you've addressed all the feedback you can, [re-request review on GitHub](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews#re-requesting-a-review).

Join us in [our Discord](https://discord.gg/KeDn2uXhER)!

## 🌐 External Services

Mocha uses several external services for project infrastructure:

- **[Codecov](https://app.codecov.io/gh/mochajs/mocha)**: Code coverage tracking. PRs must not decrease coverage. Contributors should add the Codecov GitHub app to upload coverage from forks.

- **[Discord](https://discord.gg/KeDn2uXhER)**: Official community chat for support, discussions, and connecting with maintainers and users.

- **[EasyCLA](https://cla.js.foundation/mochajs/mocha)**: Contributor License Agreement system via Linux Foundation. All code contributions require a signed CLA. A bot prompts contributors on their first PR.

- **Netlify**: Hosts the documentation website at mochajs.org. Provides automatic deploy previews for documentation PRs and nightly scheduled deploys to update supporter information.

- **[npm registry](https://www.npmjs.com/package/mocha)**: Package distribution. Mocha is also available via GitHub Releases.

- **[Open Collective](https://opencollective.com/mochajs)**: Transparent donations to Mocha and expenses from maintainers.

- **[OpenJS Foundation](https://openjsf.org)**: Mocha is part of the OpenJS Foundation which provides governance and infrastructure support. See [PROJECT_CHARTER.md](../PROJECT_CHARTER.md) for governance details.


================================================
FILE: .github/DEVELOPMENT.md
================================================
# Development

Follow these steps to get going in local development.
If you are having trouble, don't be afraid to [ask for help](./CONTRIBUTING.md#❓-got-a-question).

## Prerequisites

- [Install Node.js 14 LTS or newer with npm@7+](https://nodejs.org/en/download).
  - If you're new to installing Node, a tool like [nvm](https://github.com/nvm-sh/nvm#install-script) can help you manage multiple version installations.
- You will need [Google Chrome](https://www.google.com/chrome) to run browser-based tests locally.

## Setup

1. Follow [Github's documentation](https://help.github.com/articles/fork-a-repo) on setting up Git, forking, and cloning.
1. Execute `npm install` to install the development dependencies.
   - Do not use `yarn install` or `pnpm install`.
   - Some optional dependencies may fail; you can safely ignore these unless you are trying to build the documentation.
   - If you're sick of seeing the failures, run `npm install --ignore-scripts`.

## Developing Mocha

When you contribute to Mocha, you will probably want to try to run your changes on the test suite of another project. You can (and should) run the test suite of Mocha itself before committing, but also confirming that your changes give the expected result on another project.

For example, [WebSocket.io](https://github.com/LearnBoost/websocket.io/):

    $ git clone https://github.com/LearnBoost/websocket.io.git

Retrieve websocket.io's dependencies, which will include the stable version of Mocha:

    $ cd websocket.io/
    $ npm install

Replace the Mocha dependency by the current git repository:

    $ cd node_modules/
    $ mv mocha/ mocha.save
    $ git clone https://github.com/mochajs/mocha.git

Install Mocha's dependencies for the development version:

    $ cd mocha
    $ npm install

Run websocket.io's test suite using the development version you just installed:

    $ cd ../..
    $ ./node_modules/.bin/mocha


================================================
FILE: .github/FUNDING.yml
================================================
open_collective: mochajs


================================================
FILE: .github/ISSUE_TEMPLATE/01-bug.yml
================================================
body:
  - attributes:
      description: If any of these required steps are not taken, we may not be able to review your issue. Help us to help you!
      label: Bug Report Checklist
      options:
        - label: This is NOT a [security, `npm audit`, or GitHub Advisory issue](https://mochajs.org/explainers/security-vulnerability-reports).
          required: true
        - label: I have read and agree to Mocha's [Code of Conduct](https://github.com/mochajs/mocha/blob/main/.github/CODE_OF_CONDUCT.md) and [Contributing Guidelines](https://github.com/mochajs/mocha/blob/main/.github/CONTRIBUTING.md)
          required: true
        - label: I have searched for [related issues](https://github.com/mochajs/mocha/issues?q=is%3Aissue) and [issues with the `faq` label](https://github.com/mochajs/mocha/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Afaq%20), but none matched my issue.
          required: true
        - label: I have 'smoke tested' the code to be tested by running it outside the real test suite to get a better sense of whether the problem is in the code under test, my usage of Mocha, or Mocha itself.
          required: true
        - label: I want to provide a PR to resolve this
    type: checkboxes
  - attributes:
      description: What did you expect to happen?
      label: Expected
    type: textarea
    validations:
      required: true
  - attributes:
      description: What happened instead?
      label: Actual
    type: textarea
    validations:
      required: true
  - attributes:
      description: Detail the steps necessary to reproduce the problem. To get the fastest support, create an [MCVE](https://stackoverflow.com/help/mcve) and upload it to GitHub.
      label: Minimal, Complete and Verifiable Example
    type: textarea
    validations:
      required: true
  - attributes:
      description: What do `mocha --version`, `node_modules/.bin/mocha --version`, and `node --version` output? What name and version of browser/environment, shell, and any other related modules such as transpilers are you using?
      label: Versions
    type: textarea
    validations:
      required: true
  - attributes:
      description: Any additional info you'd like to provide.
      label: Additional Info
    type: textarea
description: Report a bug trying to use Mocha
labels:
  - "status: in triage"
  - "type: bug"
name: 🐛 Bug
title: "🐛 Bug: <short description of the bug>"


================================================
FILE: .github/ISSUE_TEMPLATE/02-documentation.yml
================================================
body:
  - attributes:
      description: If any of these required steps are not taken, we may not be able to review your issue. Help us to help you!
      label: Documentation Request Checklist
      options:
        - label: I have read and agree to Mocha's [Code of Conduct](https://github.com/mochajs/mocha/blob/main/.github/CODE_OF_CONDUCT.md) and [Contributing Guidelines](https://github.com/mochajs/mocha/blob/main/.github/CONTRIBUTING.md)
          required: true
        - label: I have searched for [related issues](https://github.com/mochajs/mocha/issues?q=is%3Aissue) and [issues with the `faq` label](https://github.com/mochajs/mocha/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Afaq%20), but none matched my issue.
          required: true
        - label: I want to provide a PR to resolve this
    type: checkboxes
  - attributes:
      description: What would you like to report?
      label: Overview
    type: textarea
    validations:
      required: true
  - attributes:
      description: Any additional info you'd like to provide.
      label: Additional Info
    type: textarea
description: Report a typo or missing area of documentation
labels:
  - "area: documentation"
  - "status: in triage"
name: 📝 Docs
title: "📝 Docs: <short description of the request>"


================================================
FILE: .github/ISSUE_TEMPLATE/03-feature-request.yml
================================================
body:
  - attributes:
      description: If any of these required steps are not taken, we may not be able to review your issue. Help us to help you!
      label: Feature Request Checklist
      options:
        - label: I have read and agree to Mocha's [Code of Conduct](https://github.com/mochajs/mocha/blob/main/.github/CODE_OF_CONDUCT.md) and [Contributing Guidelines](https://github.com/mochajs/mocha/blob/main/.github/CONTRIBUTING.md)
          required: true
        - label: I have searched for [related issues](https://github.com/mochajs/mocha/issues?q=is%3Aissue) and [issues with the `faq` label](https://github.com/mochajs/mocha/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Afaq%20), but none matched my issue.
          required: true
        - label: I want to provide a PR to resolve this
    type: checkboxes
  - attributes:
      description: What is the feature gap or problem you'd like to address?
      label: Overview
    type: textarea
    validations:
      required: true
  - attributes:
      description: How would you like to solve this need?
      label: Suggested Solution
    type: textarea
    validations:
      required: true
  - attributes:
      description: What other features or solutions have you also considered?
      label: Alternatives
    type: textarea
    validations:
      required: true
  - attributes:
      description: Any additional info you'd like to provide.
      label: Additional Info
    type: textarea
description: Request that a new feature be added or an existing feature improved
labels:
  - "status: in triage"
  - "type: feature"
name: 🚀 Feature
title: "🚀 Feature: <short description of the feature>"


================================================
FILE: .github/ISSUE_TEMPLATE/04-performance.yml
================================================
body:
  - type: markdown
    attributes:
      value: |
        Thanks for taking the time to suggest a performance improvement to Mocha! Please note that Mocha is a widely used library with many millions of weekly downloads, many thousands of dependents, and many years of longstanding behavior. Every change to it is inherently risky and may break user edge cases that we have no way to learn of otherwise.

        So, to accept a performance improvement, we'd need to see _measurable, non-negligible improvement_ in Mocha's real-world usage. That requires providing at least:

        - Exhaustive comparison with other alternatives that proves this is the winning approach
          - Disclosure of any personal affiliation with the proposed solution and alternatives
        - For runtime performance: some kind of reproducible benchmark to demonstrate exactly what's different
        - For dependency cleanups:
          - The specific change to the dependency tree of a project with Mocha and no other dependencies
          - The specific change to the dependency tree of a project with Mocha and other common dependencies, such as `chai`, `express`, and `sinon`

        You can always suggest a performance improvement without those validations, but we are unlikely to accept it without them.
        For more information, see [mochajs/mocha#5377 🛠️ Repo: Add issue template for performance improvements](https://github.com/mochajs/mocha/issues/5377).
  - attributes:
      description: If any of these required steps are not taken, we may not be able to review your issue. Help us to help you!
      label: Performance Suggestion Checklist
      options:
        - label: I am using the latest version of Mocha.
          required: true
        - label: I have read and understood the nuances around performance reports.
          required: true
        - label: I have read and agree to Mocha's [Code of Conduct](https://github.com/mochajs/mocha/blob/main/.github/CODE_OF_CONDUCT.md) and [Contributing Guidelines](https://github.com/mochajs/mocha/blob/main/.github/CONTRIBUTING.md)
          required: true
        - label: I have searched for [related issues](https://github.com/mochajs/mocha/issues?q=is%3Aissue) and [issues with the `faq` label](https://github.com/mochajs/mocha/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Afaq%20), but none matched my issue.
          required: true
        - label: I want to provide a PR to resolve this
    type: checkboxes
  - attributes:
      description: What is your suggestion?
      label: Overview
    type: textarea
    validations:
      required: true
  - attributes:
      description: If you have a suggested implementation, please explain why you believe it's the best one here.
      label: Validations
    type: textarea
  - attributes:
      description: Any additional info you'd like to provide.
      label: Additional Info
    type: textarea
description: Suggest a way to make Mocha faster, more memory- and/or space-efficient, or otherwise improve performance
labels:
  - "area: performance"
  - "status: in triage"
name: ⚡️ Performance
title: "⚡️ Performance: <short description of the change>"


================================================
FILE: .github/ISSUE_TEMPLATE/05-repository-tooling.yml
================================================
body:
  - attributes:
      description: If any of these required steps are not taken, we may not be able to review your issue. Help us to help you!
      label: Tooling Suggestion Checklist
      options:
        - label: I have tried restarting my IDE and the issue persists.
          required: true
        - label: I have pulled the latest `main` branch of the repository.
          required: true
        - label: I have read and agree to Mocha's [Code of Conduct](https://github.com/mochajs/mocha/blob/main/.github/CODE_OF_CONDUCT.md) and [Contributing Guidelines](https://github.com/mochajs/mocha/blob/main/.github/CONTRIBUTING.md)
          required: true
        - label: I have searched for [related issues](https://github.com/mochajs/mocha/issues?q=is%3Aissue) and [issues with the `faq` label](https://github.com/mochajs/mocha/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Afaq%20), but none matched my issue.
          required: true
        - label: I want to provide a PR to resolve this
    type: checkboxes
  - attributes:
      description: What changes would you like, and how do they help contributors?
      label: Overview
    type: textarea
    validations:
      required: true
  - attributes:
      description: Any additional info you'd like to provide.
      label: Additional Info
    type: textarea
description: Report a bug or request an enhancement in the Mocha repository's internal tooling
labels:
  - "area: repository tooling"
  - "status: in triage"
name: 🛠️ Repository Tooling
title: "🛠️ Repo: <short description of the change>"


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: true
contact_links:
  - name: Documentation Website
    about: Please read our documentation website before filing new issues.
    url: https://mochajs.org
  - name: Documentation Website > APIs
    about: If you're using Mocha's API, see also the website's API docs.
    url: https://mochajs.org/api
  - name: Discord
    about: Our Discord is the right place for quick informal questions.
    url: https://discord.gg/KeDn2uXhER
  - name: StackOverflow
    about: For more questions, see the `mocha` tag on StackOverflow.
    url: https://stackoverflow.com/questions/tagged/mocha


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!-- 👋 Hi, thanks for sending a PR to mocha! 💖.
Please fill out all fields below and make sure each item is true and [x] checked.
Otherwise we may not be able to review your PR. -->

## PR Checklist

- [ ] Addresses an existing open issue: fixes #000
- [ ] That issue was marked as [`status: accepting prs`](https://github.com/mochajs/mocha/issues?q=is%3Aopen+is%3Aissue+label%3A%22status%3A+accepting+prs%22)
- [ ] Steps in [CONTRIBUTING.md](https://github.com/mochajs/mocha/blob/main/.github/CONTRIBUTING.md) were taken

## Overview

<!-- Description of what is changed and how the code change does that. -->


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"
    groups:
      github-actions:
        patterns:
          - "*"


================================================
FILE: .github/release-please/config.json
================================================
{
  "$schema": "https://raw.githubusercontent.com/googleapis/release-please/v17.1.3/schemas/config.json",
  "release-type": "node",
  "include-component-in-tag": false,

  "prerelease": true,
  "versioning": "prerelease",

  "changelog-sections": [
    { "type": "feat", "section": "🌟 Features", "hidden": false },
    { "type": "fix", "section": "🩹 Fixes", "hidden": false },
    { "type": "docs", "section": "📚 Documentation", "hidden": false },

    { "type": "chore", "section": "🧹 Chores", "hidden": false },
    { "type": "perf", "section": "🧹 Chores", "hidden": false },
    { "type": "refactor", "section": "🧹 Chores", "hidden": false },
    { "type": "test", "section": "🧹 Chores", "hidden": false },

    { "type": "build", "section": "🤖 Automation", "hidden": false },
    { "type": "ci", "section": "🤖 Automation", "hidden": true }
  ],
  "packages": {
    ".": {}
  }
}


================================================
FILE: .github/release-please/manifest.json
================================================
{".":"12.0.0-beta.10"}


================================================
FILE: .github/workflows/mocha.yml
================================================
name: Tests

on:
  push:
    branches:
      - main
    paths-ignore:
      ["*.md", "docs/**", ".github/**", ".prettierignore", "AUTHORS", "LICENSE"]
  pull_request:
    branches:
      - main
    paths-ignore:
      ["*.md", "docs/**", ".github/**", ".prettierignore", "AUTHORS", "LICENSE"]
    types: [opened, synchronize, reopened, edited]
  workflow_dispatch:

permissions:
  contents: read
  id-token: write # for Codecov OIDC

jobs:
  format:
    uses: ./.github/workflows/npm-script.yml
    with:
      npm-script: format:check

  lint:
    uses: ./.github/workflows/npm-script.yml
    with:
      npm-script: lint

  smoke:
    uses: ./.github/workflows/npm-script.yml
    with:
      node-versions: "20,22,24"
      npm-script: test-smoke

  test-node-lts:
    # TODO: Restore "mocha-github-actions-reporter" style reporting without relying on third party module
    # https://github.com/mochajs/mocha/issues/5183
    uses: ./.github/workflows/npm-script.yml
    needs: smoke
    strategy:
      fail-fast: false
      matrix:
        test-part:
          - interfaces
          - unit
          - integration
          - jsapi
          - requires
          - reporters
          - only
    with:
      npm-script: test-node:${{ matrix.test-part }}

  test-node-all:
    name: Test ${{ matrix.test-part }} in all environments
    permissions:
      id-token: write # for Codecov OIDC
      contents: read # for Codecov OIDC
    # TODO: Restore "mocha-github-actions-reporter" style reporting without relying on third party module
    # https://github.com/mochajs/mocha/issues/5183
    uses: ./.github/workflows/npm-script.yml
    needs: test-node-lts
    strategy:
      fail-fast: false
      matrix:
        coverage: [true]
        test-part:
          - interfaces
          - unit
          - integration
          - requires
          - reporters
          - only
        include:
          - test-part: jsapi
            coverage: false
    with:
      os: "ubuntu-latest,windows-latest"
      # We pin exact versions here per https://github.com/mochajs/mocha/issues/5052
      # Ref https://nodejs.org/en/about/previous-releases
      node-versions: "20.19.4,22.18.0,24.6.0"
      npm-script: test-node:${{ matrix.test-part }}
      coverage: ${{ matrix.coverage }}

  test-browser-local:
    uses: ./.github/workflows/npm-script.yml
    with:
      browsers: ChromeHeadless
      npm-script: test-browser

  tsc:
    uses: ./.github/workflows/npm-script.yml
    with:
      npm-script: tsc


================================================
FILE: .github/workflows/nightly-site-deploy.yml
================================================
# Deploy `mochajs.org` branch nightly by hitting a netlify build URL.
# This updates the list of supporters
# It uses commands from netlify.toml at root of repo

name: Nightly mochajs.org Deploy

on:
  schedule:
    - cron: "0 0 * * *"
  workflow_dispatch:

permissions:
  contents: read

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Webhook Action
        uses: joelwmale/webhook-action@6cebc9d7dc8435b684e1e1945c0013d9023b76a4
        env:
          data: ""
          WEBHOOK_URL: ${{ secrets.NETLIFY_NIGHTLY_DEPLOY_URL }}


================================================
FILE: .github/workflows/npm-script.yml
================================================
name: Reusable npm script runner

on:
  workflow_call:
    inputs:
      npm-script:
        description: "npm script"
        required: true
        type: string
      browsers:
        description: "A comma separated list of browser names to test with."
        required: false
        type: string
      node-versions:
        description: "A comma separated list of Node versions to test with."
        required: false
        type: string
      os:
        description: "A comma separated list of operating systems to test on."
        required: false
        type: string
      coverage:
        description: "Whether to set up coverage reporting or not"
        required: false
        type: boolean

permissions:
  contents: read
  id-token: write

jobs:
  resolve-inputs:
    runs-on: ubuntu-latest
    outputs:
      browsers: ${{ steps.split-browsers.outputs.splitted }}
      nodeVersions: ${{ steps.split-node-versions.outputs.splitted }}
      os: ${{ steps.split-os.outputs.splitted }}
    steps:
      - id: split-browsers
        if: inputs.browsers
        run: echo "splitted=$(echo '${{ inputs.browsers }}' | jq -R -c 'split(",")')" >> $GITHUB_OUTPUT
      - id: split-node-versions
        if: inputs.node-versions
        run: echo "splitted=$(echo '${{ inputs.node-versions }}' | jq -R -c 'split(",")')" >> $GITHUB_OUTPUT
      - id: split-os
        if: inputs.os
        run: echo "splitted=$(echo '${{ inputs.os }}' | jq -R -c 'split(",")')" >> $GITHUB_OUTPUT

  script:
    name: ${{ inputs.npm-script }}${{ needs.resolve-inputs.outputs.browsers && format('[{0}]', matrix.browser) }}${{ needs.resolve-inputs.outputs.nodeVersions && format(' with node.js {0}', matrix.node_version) }}${{ needs.resolve-inputs.outputs.os && format(' on {0}', matrix.os) }}
    runs-on: ${{ matrix.os }}
    timeout-minutes: 20
    needs:
      - resolve-inputs
    strategy:
      fail-fast: false
      matrix:
        node_version: ${{ fromJson(needs.resolve-inputs.outputs.nodeVersions || '["22"]') }}
        os: ${{ fromJson(needs.resolve-inputs.outputs.os || '["ubuntu-latest"]') }}
        browser: ${{ fromJson(needs.resolve-inputs.outputs.browsers || '[""]') }}
    steps:
      - uses: actions/checkout@v6
        with:
          persist-credentials: false
      - uses: actions/setup-node@v6
        with:
          node-version: ${{ matrix.node_version }}
          cache: "npm"
      - run: npm ci --ignore-scripts
      - run: npm run ${{ inputs.npm-script }}
        env:
          BROWSER: ${{ matrix.browser }}
          COVERAGE: ${{ inputs.coverage && '1'}}
          NODE_OPTIONS: "--trace-warnings"
      # Generate and upload coverage, even if tests fail
      - name: Generate coverage report
        if: always() && inputs.coverage
        run: npm run test-coverage-generate
      # https://github.com/marketplace/actions/codecov
      # https://app.codecov.io/gh/mochajs/mocha
      - name: Upload coverage reports
        if: always() && inputs.coverage
        uses: codecov/codecov-action@v5
        with:
          fail_ci_if_error: true
          use_oidc: true


================================================
FILE: .github/workflows/octoguide.yml
================================================
jobs:
  octoguide:
    if: ${{ !endsWith(github.actor, '[bot]') }}
    runs-on: ubuntu-latest
    steps:
      - uses: OctoGuide/bot@0.21.10
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}

name: OctoGuide

on:
  discussion:
    types: [created, edited]
  discussion_comment:
    types: [created, deleted, edited]
  issue_comment:
    types: [created, deleted, edited]
  issues:
    types: [edited, opened]
  pull_request_review_comment:
    types: [created, deleted, edited]
  pull_request_target:
    types: [edited, opened]

permissions:
  discussions: write
  issues: write
  pull-requests: write


================================================
FILE: .github/workflows/release-please.yml
================================================
name: Release Please

on:
  push:
    branches:
      - main
  workflow_dispatch:

permissions:
  contents: read
  id-token: write

jobs:
  release_please:
    name: release-please
    runs-on: ubuntu-latest
    outputs:
      releaseCreated: ${{ steps.release.outputs.release_created }}
    permissions:
      contents: write
      pull-requests: write
    steps:
      - uses: googleapis/release-please-action@v4
        id: release
        with:
          config-file: .github/release-please/config.json
          manifest-file: .github/release-please/manifest.json

  npm_publish:
    name: Publish to npm
    runs-on: ubuntu-latest
    environment: npm
    needs: release_please
    if: needs.release_please.outputs.releaseCreated
    steps:
      - uses: actions/checkout@v6
        with:
          show-progress: false
      - uses: actions/setup-node@v6
        with:
          node-version: "22"
          registry-url: "https://registry.npmjs.org"

      - name: Upgrade npm for OIDC support
        run: npm install -g npm@latest

      - name: Install dependencies
        run: npm ci --ignore-scripts --force --no-fund --no-audit

      - run: npm publish --provenance --access public --tag=next
        env:
          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}


================================================
FILE: .gitignore
================================================
# Mocha-specific
docs/images/supporters
mocha.js
mocha.js.map
.karma/
!bin/mocha.js
!lib/mocha.js

# Bundle debugging
stats.html

#########################################
# NON-MOCHA STUFF GOES BELOW THIS THING #
#########################################

# Git mergetool
# Use `git config mergetool.keepBackup false` to stop generating these files
*.orig

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# nyc/istanbul
coverage
.nyc_output

# Dependencies
node_modules/

# npm
.npm
*.tgz

# Optional eslint cache
.eslintcache

# Optional REPL history
.node_repl_history

# dotenv environment variables file
.env
.env.test

# Yarn
yarn.lock
.yarn-integrity

# Various temporary files
*~

# Emacs
\#*\#
/.emacs.desktop
/.emacs.desktop.lock
*.elc
auto-save-list
tramp
.\#*

# Vim
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
Session.vim
[._]*.un~

# Diff
*.patch
*.diff

# VSCode
.vscode/

# JetBrains' IDEs
.idea/
*.iws
out/
.idea_modules/
atlassian-ide-plugin.xml

# SourceTree
*_BACKUP_*
*_BASE_*
*_LOCAL_*
*_REMOTE_*

# SublimeText
*.tmlanguage.cache
*.tmPreferences.cache
*.stTheme.cache
*.sublime-workspace
*.sublime-project
sftp-config.json
Package Control.last-run
Package Control.ca-list
Package Control.ca-bundle
Package Control.system-ca-bundle
Package Control.cache/
Package Control.ca-certs/
Package Control.merged-ca-bundle
Package Control.user-ca-bundle
oscrypto-ca-bundle.crt
bh_unicode_properties.cache
GitHub.sublime-settings

# direnv
.envrc

# Linux
.fuse_hidden*
.directory
.Trash-*
.nfs*

# Windows
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
*.stackdump
[Dd]esktop.ini
$RECYCLE.BIN/
*.cab
*.msi
*.msix
*.msm
*.msp
*.lnk

# macOS
.DS_Store
.AppleDouble
.LSOverride
._*
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

# Local Netlify folder
.netlify


================================================
FILE: .knip.jsonc
================================================
{
  "$schema": "https://unpkg.com/knip@5/schema-jsonc.json",
  "entry": [
    "bin/mocha.js!",
    "bin/_mocha!",
    "browser-entry.js!",
    "docs/_data/supporters.cjs",
    "index.js!",
    "lib/cli/index.js!",
  ],
  "project": ["{bin,lib,scripts,test}/**/*.{js,ts,mjs,cjs}"],
  "ignore": [
    "test/integration/fixtures/esm/type-module/test-that-imports-non-existing-module.fixture.js",
    "test/integration/fixtures/options/watch/test-with-dependency.fixture.js",
  ],
  "ignoreDependencies": [
    "@test/esm-only-loader",
    "coffeescript",
    "fake",
    "non-existent-package",
  ],
  "mocha": {
    "entry": ["test/**/*.{js,ts,mjs,cjs}"],
  },
  "webpack": {
    "config": "test/browser-specific/fixtures/webpack/webpack.config.js",
  },
  "rules": {
    "exports": "off",
  },
}


================================================
FILE: .lintstagedrc.json
================================================
{
  "@(**/*.js|bin/*)": ["eslint --fix"],
  "!(package*).json": ["prettier --write"],
  "*.{yml,md,html}": ["prettier --write"]
}


================================================
FILE: .mailmap
================================================
# see https://www.git-scm.com/docs/git-check-mailmap for formatting info
TJ Holowaychuk <tj@vision-media.ca>
Travis Jeffery <tj@travisjeffery.com> <travisjeffery@gmail.com>
Travis Jeffery <tj@travisjeffery.com> Dr. Travis Jeffery <tj@travisjeffery.com>
Christopher Hiller <boneskull@boneskull.com> <chiller@badwing.com>
David da Silva Contín <dasilvacontin@gmail.com> David da Silva <daviddasilvacontin@me.com>
David da Silva Contín <dasilvacontin@gmail.com> David da Silva <dasilvacontin@gmail.com>
David da Silva Contín <dasilvacontin@gmail.com> <daviddasilvacontin@gmail.com>
Ariel Mashraki <ariel@mashraki.co.il> <ariel@codeoasis.com>
Ariel Mashraki <ariel@mashraki.co.il> <ariel.mashraki@ironsrc.com>
Forbes Lindesay <forbes@lindesay.co.uk> <fpfl2@cam.ac.uk>
Ben Bradley <ben@bradleyit.com> <[ben.bradley@cigna.com|mailto:ben.bradley@cigna.com]>
Glen Mailer <glenjamin@gmail.com> <glen.mailer@bskyb.com>
38elements <mh19820223@gmail.com> <38elements@users.noreply.github.com>
Andreas Lind Petersen <andreas@one.com> Andreas Lind <andreas@one.com>
Ben Harris <benhdev@gmail.com> <bdharris08@gmail.com>
Can Oztokmak <can@zeplin.io> <coztokmak@gmail.com>
Will Langstroth <will@langstroth.com> <william.langstroth@gmail.com>
Sulabh Bista <sul4bh@gmail.com> <sulabh.bista@makethunder.com>
Rustem Mustafin <mustafin.rustem@gmail.com> <mustafin@kt-labs.com>
Rico Sta. Cruz <rstacruz@users.noreply.github.com> <hi@ricostacruz.com>
Pete Hawkins <pete@petes-imac.frontinternal.net> <pete@phawk.co.uk>
Raynos <raynos2@gmail.com> <=>
Raynos <raynos2@gmail.com> Raynos (Jake Verbaten) <raynos2@gmail.com>
Markus Tacker <m@coderbyheart.com> <markus@resourceful-humans.com>
Long Ho <longlho@users.noreply.github.com> <longho@yahoo-inc.com>
László Bácsi <lackac@lackac.hu> Laszlo Bacsi <lackac@lackac.hu>
Eli Skeggs <skeggse@users.noreply.github.com> <skeggse@gmail.com>
Domenic Denicola <domenic@domenicdenicola.com> domenic <domenic@domenicdenicola.com>
Michael Schoonmaker <michael.r.schoonmaker@gmail.com> <michael.schoonmaker@redrobotlabs.com>


================================================
FILE: .mocharc.yml
================================================
require: "test/setup"
ui: "bdd"
global:
  - "okGlobalA,okGlobalB"
  - "okGlobalC"
  - "callback*"
timeout: 1000
watch-ignore:
  - ".*"
  - "docs/_site/**"
  - "node_modules"
  - "coverage"
  - "cache"


================================================
FILE: .npmrc
================================================
  message=Release v%s

================================================
FILE: .nycrc
================================================
{
  "reporter": ["json", "text-summary"],
  "all": true,
  "exclude": [
    "coverage/**",
    "docs/**",
    "packages/*/test{,s}/**",
    "**/*.d.ts",
    "test{,s}/**",
    "test{,-*}.{js,cjs,mjs,ts}",
    "**/*{.,-}test.{js,cjs,mjs,ts}",
    "**/__tests__/**",
    "**/{karma,rollup,webpack}.config.js",
    "**/{babel.config,.eslintrc,.mocharc}.{js,cjs}",
    "lib/browser/**",
    "package-scripts.js",
    "package-lock.json",
    "**/package-lock.json",
    "node_modules/**",
    "scripts/**"
  ]
}


================================================
FILE: .prettierignore
================================================
/.karma/
/.nyc_output
/CHANGELOG.md
/coverage
/pnpm-lock.yaml
/test/*/fixtures/**

# release-please generate a compact manifest.json by default
/.github/release-please/manifest.json


================================================
FILE: .wallaby.js
================================================
"use strict";

module.exports = () => {
  return {
    files: [
      "index.js",
      "lib/**/*.{js,json}",
      "test/setup.js",
      "test/assertions.js",
      {
        pattern: "test/node-unit/**/*.fixture.js",
        instrument: false,
      },
      {
        pattern: "test/unit/**/*.fixture.js",
        instrument: false,
      },
      "package.json",
      "mocharc.yml",
      "!lib/browser/growl.js",
    ],
    filesWithNoCoverageCalculated: [
      "test/**/*.fixture.js",
      "test/setup.js",
      "test/assertions.js",
      "lib/browser/**/*.js",
    ],
    tests: ["test/unit/**/*.spec.js", "test/node-unit/**/*.spec.js"],
    env: {
      type: "node",
      runner: "node",
    },
    workers: { recycle: true },
    testFramework: { type: "mocha", path: __dirname },
    setup(wallaby) {
      // running mocha instance is not the same as mocha under test,
      // running mocha is the project's source code mocha, mocha under test is instrumented version of the source code
      const runningMocha = wallaby.testFramework;
      runningMocha.timeout(1000);
      // to expose it/describe etc. on the mocha under test
      const MochaUnderTest = require("./");
      const mochaUnderTest = new MochaUnderTest();
      mochaUnderTest.suite.emit(
        MochaUnderTest.Suite.constants.EVENT_FILE_PRE_REQUIRE,
        global,
        "",
        mochaUnderTest,
      );
      require("./test/setup");
    },
    debug: true,
    runMode: "onsave",
  };
};


================================================
FILE: AUTHORS
================================================
# Authors ordered by first contribution.

TJ Holowaychuk <tj@vision-media.ca>
James Carr <james.r.carr@gmail.com>
Fredrik Lindin <fredriklindin@gmail.com>
Konstantin Käfer <github@kkaefer.com>
David Henderson <david.henderson@triggeredmessaging.com>
Harry Brundage <harry.brundage@gmail.com>
Quang Van <quangvvv@gmail.com>
hokaccha <k.hokamura@gmail.com>
Guillermo Rauch <rauchg@gmail.com>
FARKAS Máté <mate.farkas@virtual-call-center.eu>
Ben Lindsey <ben.lindsey@vungle.com>
Steve Mason <stevem@brandwatch.com>
Ryunosuke SATO <tricknotes.rs@gmail.com>
Nathan Rajlich <nathan@tootallnate.net>
Raynos <raynos2@gmail.com>
Yuest Wang <yuestwang@gmail.com>
Maciej Małecki <maciej.malecki@notimplemented.org>
Joshua Krall <joshuakrall@pobox.com>
Fedor Indutny <fedor.indutny@gmail.com>
Will Langstroth <will@langstroth.com>
Attila Domokos <adomokos@gmail.com>
Jussi Virtanen <jussi.k.virtanen@gmail.com>
Phil Sung <psung@dnanexus.com>
vlad <iamvlad@gmail.com>
Paul Miller <paul@paulmillr.com>
Bjørge Næss <bjoerge@origo.no>
Jeff Kunkle <jeff.kunkle@nearinfinity.com>
Fabio M. Costa <fabiomcosta@gmail.com>
Michael Riley <michael.riley@autodesk.com>
Ian Young <ian.greenleaf@gmail.com>
Jakub Nešetřil <jakub@apiary.io>
Tyson Tate <tyson@tysontate.com>
Jo Liss <joliss42@gmail.com>
Arian Stolwijk <arian@aryweb.nl>
Brendan Nee <brendan.nee@gmail.com>
Xavier Antoviaque <xavier@antoviaque.org>
Domenic Denicola <domenic@domenicdenicola.com>
Brian Beck <exogen@gmail.com>
Dave McKenna <davemckenna01@gmail.com>
Richard Dingwall <rdingwall@gmail.com>
Cory Thomas <cory.thomas@bazaarvoice.com>
R56 <rviskus@gmail.com>
Ian Storm Taylor <ian@ianstormtaylor.com>
Andreas Brekken <andreas@opuno.com>
abrkn <a@abrkn.com>
Nathan Bowser <nathan.bowser@spiderstrategies.com>
László Bácsi <lackac@lackac.hu>
Atsuya Takagi <asoftonight@gmail.com>
Gavin Mogan <GavinM@airg.com>
fengmk2 <fengmk2@gmail.com>
Seiya Konno <nulltask@gmail.com>
Jan Lehnardt <jan@apache.org>
Matt Robenolt <matt@ydekproductions.com>
Jonas Westerlund <jonas.westerlund@me.com>
Koen Punt <koen@koenpunt.nl>
Jason Barry <jay@jcbarry.com>
Austin Birch <mraustinbirch@gmail.com>
Adam Crabtree <adam.crabtree@redrobotlabs.com>
Casey Foster <casey@caseywebdev.com>
Jonathan Creamer <matrixhasyou2k4@gmail.com>
Brian Moore <guardbionic-github@yahoo.com>
traleig1 <darkphoenix739@gmail.com>
John Firebaugh <john.firebaugh@gmail.com>
airportyh <airportyh@gmail.com>
Aaron Heckmann <aaron.heckmann+github@gmail.com>
Russ Bradberry <devdazed@me.com>
Ivan <ivan@kinvey.com>
Corey Butler <corey@coreybutler.com>
Paul Armstrong <paul@paularmstrongdesigns.com>
Herman Junge <herman@geekli.st>
Michael Schoonmaker <michael.r.schoonmaker@gmail.com>
Wil Moore III <wil.moore@wilmoore.com>
Pete Hawkins <pete@petes-imac.frontinternal.net>
tgautier@yahoo.com <tgautier@gmail.com>
yuitest <yuitest@cjhat.net>
Matt Smith <matthewgarysmith@gmail.com>
Katie Gengler <katiegengler@gmail.com>
Bryan Donovan <bdondo@gmail.com>
Nathan Alderson <nathan.alderson@adtran.com>
Shawn Krisman <telaviv@github>
Merrick Christensen <merrick.christensen@gmail.com>
Timo Tijhof <krinklemail@gmail.com>
Simon Gaeremynck <gaeremyncks@gmail.com>
Jaakko Salonen <jaakko.salonen@iki.fi>
Jonathan Rajavuori <jrajav@gmail.com>
Forbes Lindesay <forbes@lindesay.co.uk>
Standa Opichal <opichals@gmail.com>
Matthew Shanley <matthewshanley@littlesecretsrecords.com>
James Lal <james@lightsofapollo.com>
Greg Perkins <gregperkins@alum.mit.edu>
Gareth Murphy <gareth.cpm@gmail.com>
Juzer Ali <er.juzerali@gmail.com>
Sasha Koss <koss@nocorp.me>
Justin DuJardin <justin.dujardin@sococo.com>
Frederico Silva <frederico.silva@gmail.com>
Jesse Dailey <jesse.dailey@gmail.com>
Yanis Wang <yanis.wang@gmail.com>
fcrisci <fabio.crisci@amadeus.com>
Javier Aranda <javierav@javierav.com>
Florian Margaine <florian@margaine.com>
fool2fish <fool2fish@gmail.com>
James Bowes <jbowes@repl.ca>
Valentin Agachi <github-com@agachi.name>
Mathieu Desvé <mathieudesve@MacBook-Pro-de-Mathieu.local>
Glen Huang <curvedmark@gmail.com>
Simon Goumaz <simon@attentif.ch>
Alexander Early <alexander.early@gmail.com>
Jimmy Cuadra <jimmy@jimmycuadra.com>
Russell Munson <rmunson@github.com>
lodr <salva@unoyunodiez.com>
Liam Newman <bitwiseman@gmail.com>
Dmitry Shirokov <deadrunk@gmail.com>
Fredrik Enestad <fredrik@devloop.se>
Kirill Korolyov <kirill.korolyov@gmail.com>
grasGendarme <me@grasgendar.me>
Mike Pennisi <mike@mikepennisi.com>
Victor Costan <costan@gmail.com>
Tim Ehat <timehat@gmail.com>
Jeremy Martin <jmar777@gmail.com>
Mal Graty <mal.graty@googlemail.com>
Di Wu <dwu@palantir.com>
badunk <baduncaduncan@gmail.com>
Marc Kuo <kuomarc2@gmail.com>
Sindre Sorhus <sindresorhus@gmail.com>
Salehen Shovon Rahman <salehen.rahman@gmail.com>
eiji.ienaga <eiji.ienaga@gmail.com>
Oscar Godson <oscargodson@outlook.com>
Daniel Stockman <daniel.stockman@gmail.com>
Stephen Mathieson <smath23@gmail.com>
Travis Jeffery <tj@travisjeffery.com>
Andreas Lind Petersen <andreas@one.com>
Romain Prieto <romain.prieto@gmail.com>
JP Bochi <jpbochi@gmail.com>
Teddy Zeenny <teddyzeenny@gmail.com>
Roman Neuhauser <rneuhauser@suse.cz>
XhmikosR <xhmikosr@users.sourceforge.net>
Brian Lalor <blalor@bravo5.org>
Refael Ackermann <refael@empeeric.com>
ChrisWren <cthewren@gmail.com>
Andrew Nesbitt <andrewnez@gmail.com>
berni <berni@extensa.pl>
Andrey Popp <8mayday@gmail.com>
Brian M. Carlson <brian.m.carlson@gmail.com>
Michael Olson <mwolson@member.fsf.org>
Arnaud Brousseau <arnaud.brousseau@gmail.com>
Peter Rust <peter@cornerstonenw.com>
Vadim Nikitin <vnikiti@ncsu.edu>
Roman Shtylman <shtylman@gmail.com>
Tapiwa Kelvin <tapiwa@munzwa.tk>
Rustem Mustafin <mustafin.rustem@gmail.com>
Glen Mailer <glenjamin@gmail.com>
Nathan Black <nathan@nathanblack.org>
sebv <seb.vincent@gmail.com>
andy matthews <andy@commadelimited.com>
Benjie Gillam <benjie@jemjie.com>
Noshir Patel <nosh@blackpiano.com>
Ben Noordhuis <info@bnoordhuis.nl>
Jacob Wejendorp <jacob@wejendorp.dk>
claudyus <claudyus@HEX.(none)>
Denis Bardadym <bardadymchik@gmail.com>
Connor Dunn <connorhd@gmail.com>
Jonathan Ong <jonathanrichardong@gmail.com>
Harish <hyeluri@gmail.com>
Michal Charemza <michalcharemza@gmail.com>
startswithaj <jake.mc@icloud.com>
Gareth Aye <gaye@mozilla.com>
Nick Fitzgerald <fitzgen@gmail.com>
Jan Kopriva <jan.kopriva@gooddata.com>
kavun <kevin.a.reed@gmail.com>
Christoffer Hallas <christoffer.hallas@gmail.com>
Jonathan Park <jpark@daptiv.com>
Devin Weaver <suki@tritarget.org>
John Doty <jrhdoty@gmail.com>
Shaine Hatch <shaine@squidtree.com>
Ben Bradley <ben@bradleyit.com>
qiuzuhui <qiuzuhui@users.noreply.github.com>
Jean Ponchon <gelule@gmail.com>
Linus Unnebäck <linus@folkdatorn.se>
Mattias Tidlund <mattias.tidlund@learningwell.se>
Matija Marohnić <matija.marohnic@gmail.com>
Michael Jackson <mjijackson@gmail.com>
Joel Kemp <mrjoelkemp@gmail.com>
Zsolt Takács <zsolt@takacs.cc>
jsdevel <js.developer.undefined@gmail.com>
lakmeer <lakmeerkravid@gmail.com>
Joshua Appelman <jappelman@xebia.com>
Christopher Hiller <boneskull@boneskull.com>
Michael Demmer <demmer@jut.io>
Giovanni Bassi <giggio@giggio.net>
Panu Horsmalahti <panu.horsmalahti@iki.fi>
nishigori <Takuya_Nishigori@voyagegroup.com>
Nicolo Taddei <taddei.uk@gmail.com>
Diogo Monteiro <diogo.gmt@gmail.com>
mrShturman <mrshturman@gmail.com>
PoppinL <poppinlp@gmail.com>
samuel goldszmidt <samuel.goldszmidt@gmail.com>
Rob Wu <rob@robwu.nl>
Kent C. Dodds <kent+github@doddsfamily.us>
Kevin Conway <kevinjacobconway@gmail.com>
Dominique Quatravaux <dominique@quatravaux.org>
zhiyelee <zhiyelee@gmail.com>
Quanlong He <kyan.ql.he@gmail.com>
omardelarosa <thedelarosa@gmail.com>
Ariel Mashraki <ariel@mashraki.co.il>
Sean Lang <slang800@gmail.com>
David da Silva Contín <dasilvacontin@gmail.com>
C. Scott Ananian <cscott@cscott.net>
Douglas Christopher Wilson <doug@somethingdoug.com>
Richard Knop <RichardKnop@users.noreply.github.com>
Buck Doyle <b@chromatin.ca>
Jonas Dohse <jonas@mbr-targeting.com>
oveddan <stangogh@gmail.com>
monowerker <monowerker@gmail.com>
Marcello Bastea-Forte <marcello@cellosoft.com>
Benoît Zugmeyer <bzugmeyer@gmail.com>
Vlad Magdalin <vlad@webflow.com>
Moshe Kolodny <mkolodny@integralads.com>
Tom Coquereau <tom@thau.me>
Timothy Gu <timothygu99@gmail.com>
Ian Zamojc <ian@thesecretlocation.net>
Martin Marko <marcus@gratex.com>
Chris Buckley <chris@cmbuckley.co.uk>
Jake Craige <james.craige@gmail.com>
Fede Ramirez <i@2fd.me>
Parker Moore <parkrmoore@gmail.com>
Todd Agulnick <tagulnick@onjack.com>
Daniel St. Jules <danielst.jules@gmail.com>
Rico Sta. Cruz <rstacruz@users.noreply.github.com>
Anis Safine <anis.safine.ext@francetv.fr>
Adam Gruber <talknmime@gmail.com>
Sam Mussell <smussell@gmail.com>
klaemo <klaemo@fastmail.fm>
Stewart Taylor <stewart.taylor1@gmail.com>
Jordan Sexton <jordan@jordansexton.com>
Keith Cirkel <github@keithcirkel.co.uk>
Andrii Shumada <eagleeyes91@gmail.com>
Dominic Barnes <dominic@dbarnes.info>
Maximilian Antoni <mail@maxantoni.de>
Sune Simonsen <sune@we-knowhow.dk>
Kyle Mitchell <kyle@kemitchell.com>
James Nylen <jnylen@gmail.com>
Jonathan Delgado <jdelgado@rewip.com>
Jake Marsh <jakemmarsh@gmail.com>
slyg <syl.faucherand@gmail.com>
Tomer Eskenazi <tomer.eskenazi@ironsrc.com>
Jeff Schilling <jeff.schilling@q2ebanking.com>
Ryan Hubbard <ryanmhubbard@gmail.com>
amsul <reach@amsul.ca>
Kevin Kirsche <Kev.Kirsche+GitHub@gmail.com>
Gabriel Silk <gabesilk@gmail.com>
Johnathon Sanders <outdooricon@gmail.com>
Max Goodman <c@chromakode.com>
Nathan Houle <nathan@nathanhoule.com>
Ben Vinegar <ben@benv.ca>
Duncan Beevers <duncan@dweebd.com>
Tingan Ho <tingan87@gmail.com>
Guy Arye <arye.guy@gmail.com>
Nik Nyby <nnyby@columbia.edu>
Artem Govorov <artem.govorov@gmail.com>
Ajay Kodali <ajay.kodali@citrix.com>
Ryan Tablada <ryan.tablada@gmail.com>
Pavel Zubkou <pavel.zubkou@gmail.com>
gigadude <gigadude@users.noreply.github.com>
Outsider <outsideris@gmail.com>
Jason Lai <jason@getpebble.com>
Aaron Krause <aaronjkrause@gmail.com>
wsw <wsw0108@gmail.com>
Kevin Burke <kev@inburke.com>
Berker Peksag <berker.peksag@gmail.com>
nexdrew <andrew.goode@nextraq.com>
Hugo Giraudel <hugo.giraudel@gmail.com>
Rich Trott <rtrott@gmail.com>
Matt Giles <matt.giles@cerner.com>
Joey Cozza <joey@grow.com>
Kris Rasmussen <kristopher.rasmussen@gmail.com>
James G. Kim <jgkim@jayg.org>
Sorin Iclanzan <sorin@iclanzan.com>
Rob Raux <rraux@peachworks.com>
Sergey Simonchik <sergey.simonchik@jetbrains.com>
Ian W. Remmel <design@ianwremmel.com>
tmont <tommy.mont@gmail.com>
John Reeves <github@jonnyreeves.co.uk>
Fagner Brack <github3@fagnermartins.com>
Mark Banner <standard8@mozilla.com>
Michiel de Jong <michiel@unhosted.org>
Benoit Larroque <zeta.ben@gmail.com>
Charles Lowell <cowboyd@frontside.io>
Joao Moreno <mail@joaomoreno.com>
Long Ho <longlho@users.noreply.github.com>
Robert Rossmann <rr.rossmann@me.com>
Aaron Hamid <aaron.hamid@gmail.com>
Stone <baoshi.li@adleida.com>
Tom Hughes <tom@compton.nu>
Soel <shachar.soel@sap.com>
Mislav Marohnić <mislav.marohnic@gmail.com>
Prayag Verma <prayag.verma@gmail.com>
Frank Leon Rose <frankleonrose@gmail.com>
Ryan Shaw <ryan.shaw@min.vc>
Thedark1337 <thedark1337@thedark1337.com>
Gyandeep Singh <gyandeeps@gmail.com>
ryym <ryym.64@gmail.com>
Josh Lory <josh.lory@code.org>
Jonathan Kim <jkimbo@gmail.com>
Al Scott <al.scott@atomicobject.com>
Tobias Bieniek <tobias.bieniek@gmail.com>
Benjamin Eidelman <beneidel@gmail.com>
Julien Wajsberg <felash@gmail.com>
sarehag <joakim.sarehag@gmail.com>
Alexander Shepelin <Brightcor@gmail.com>
OlegTsyba <oleg.tsyba.ua@gmail.com>
Xavier Damman <xdamman@gmail.com>
Mick Brooks <mick.brooks@sinking.in>
Erik Eng <mail@ptz0n.se>
Kelong Wang <buaawkl@gmail.com>
Jérémie Astori <jeremie@astori.fr>
ScottFreeCode <ScottFreeCode@users.noreply.github.com>
Sergio Santoro <santoro.srg@gmail.com>
Adrian Ludwig <me@adrianludwig.pl>
Anders Olsen Sandvik <Andersos@users.noreply.github.com>
Thomas Grainger <tagrain@gmail.com>
jimenglish81 <jimenglish81@gmail.com>
Avi Vahl <avi.vahl@wix.com>
Jason Leyba <jmleyba@gmail.com>
silentcloud <rjmuqiang@gmail.com>
Dmitriy Simushev <simushevds@gmail.com>
simov <simeonvelichkov@gmail.com>
Ross Warren <rosswarren4@gmail.com>
Benson Trent <bensontrent@gmail.com>
rmacklin <richard.github@nrm.com>
Rob Loach <robloach@gmail.com>
Shinnosuke Watanabe <snnskwtnb@gmail.com>
Callum Macrae <callum@macr.ae>
ELLIOTTCABLE <me@ell.io>
Anton <anton.redfox@gmail.com>
Peter Müller <munter@fumle.dk>
APerson <danielhglus@gmail.com>
not-an-aardvark <not-an-aardvark@users.noreply.github.com>
Alhadis <gardnerjohng@gmail.com>
Slobodan Mišković <slobodan@miskovic.ca>
Philip M. White <philip@mailworks.org>
Christian <me@rndm.de>
anton <anton.valickij@gmail.com>
Dmitry Sorin <info@staypositive.ru>
Vivek Ganesan <caliberoviv@gmail.com>
Josh Eversmann <josh.eversmann@gmail.com>
inxorable <inxorable@codewren.ch>
Ben Harris <benhdev@gmail.com>
Aaron Petcoff <hello@aaronpetcoff.me>
Matt Bierner <mattbierner@gmail.com>
Ville Saukkonen <villesau@users.noreply.github.com>
Ben Hutchison <ben@aldaviva.com>
Volker Buzek <volker.buzek@sap.com>
Scott Kao <Scottkao85@users.noreply.github.com>
Sulabh Bista <sul4bh@gmail.com>
rotemdan <rotemdan@gmail.com>
Fumiaki MATSUSHIMA <mtsmfm@gmail.com>
Markus Tacker <m@coderbyheart.com>
Christoph Neuroth <christoph.neuroth@gmail.com>
Enric Pallerols <enric@pallerols.cat>
Craig Taub <craigtaub@gmail.com>
Yoshiya Hinosawa <hinosawa@waku-2.com>
Sebastian Van Sande <sebastian@vansande.org>
Chris Lamb <chris@chris-lamb.co.uk>
Igwe Kalu <igwe.kalu@live.com>
Kevin Wang <kevin@fossa.io>
Laurence Rowe <lrowe@netflix.com>
Jakob Krigovsky <jakob@krigovsky.com>
Chris <chrisleck@users.noreply.github.com>
Kunal Nagpal <kunagpal@users.noreply.github.com>
elergy <elergy@yandex-team.ru>
Jupp Müller <jupp0r@gmail.com>
Poprádi Árpád <popradi.arpad11@gmail.com>
Charlie Rudolph <charles.w.rudolph@gmail.com>
Angelica Valenta <angelicavalenta@gmail.com>
Jan Krems <jan.krems@groupon.com>
Josh Soref <jsoref@users.noreply.github.com>
solodynamo <bittuf3@gmail.com>
Eli Skeggs <skeggse@users.noreply.github.com>
Nikolaos Georgiou <Nikolaos.Georgiou@gmail.com>
olsonpm <olsonpm@users.noreply.github.com>
David Neubauer <davidneub@gmail.com>
Darryl Pogue <dvpdiner2@gmail.com>
38elements <mh19820223@gmail.com>
Guangcong Luo <guangcongluo@gmail.com>
David M. Lee <leedm777@yahoo.com>
tripu <t@tripu.info>
Pat Finnigan <patrick.k.finnigan@gmail.com>
Eugene Tiutiunnyk <eugene.tiutiunnyk@lookout.com>
Aaron Brady <aaron@mori.com>
Charles Merriam <charles.merriam@gmail.com>
Kevin Partington <platinum.azure@kernelpanicstudios.com>
Lane Kelly <lanekelly16@gmail.com>
Cube <maty21@gmail.com>
yehiyam <yehiyam@users.noreply.github.com>
Jon Surrell <jon.surrell@automattic.com>
现充 <qixiang.cqx@alibaba-inc.com>
Ahmad Bamieh <ahmadbamieh@gmail.com>
Capacitor Set <CapacitorSet@users.noreply.github.com>
Anthony <keppi@o2.pl>
Can Oztokmak <can@zeplin.io>
ImgBot <31427850+ImgBotApp@users.noreply.github.com>
Thomas Broadley <buriedunderbooks@hotmail.com>
FND <FND@users.noreply.github.com>
Dina Berry <dfberry@users.noreply.github.com>
Marais Rossouw <me@maraisr.com>
Andrew Krawchyk <903716+akrawchyk@users.noreply.github.com>
Ted Yavuzkurt <hello@TedY.io>
Daniel Ruf <daniel@daniel-ruf.de>
Harry Wolff <hswolff@users.noreply.github.com>
Valeri Karpov <val@karpov.io>
Silvio Massari <silvio.massari@auth0.com>
Joseph Lin <josephlin55555@gmail.com>
Honza Javorek <mail@honzajavorek.cz>
Harry Sarson <harry.sarson@hotmail.co.uk>
Anish Karandikar <anishkny@gmail.com>
Victor <victor@turo.com>
Emanuele <my.burning@gmail.com>
Thomas Vantuycom <thomasvantuycom@protonmail.com>
Alex Bainter <metalex9@users.noreply.github.com>
Jerry Muzsik <jerrymuzsik@icloud.com>
Nicolas Girault <nic.girault@gmail.com>
dfberry <dinaberry@outlook.com>
DavNej <davnej.dev@gmail.com>
Paul Roebuck <plroebuck@users.noreply.github.com>
Tim Harshman <goteamtim+git@gmail.com>
Charles Samborski <demurgos@demurgos.net>
Tobias Mollstam <tobias@mollstam.com>
Ben Glassman <benglass@users.noreply.github.com>
Mark Owsiak <mark.owsiak@gmail.com>
fargies <fargies@users.noreply.github.com>
Marc Udoff <mlucool@gmail.com>
gizemkeser <44727928+gizemkeser@users.noreply.github.com>
Fin Chen <finfin@gmail.com>
Brittany Moore <moore.brittanyann@gmail.com>
Fábio Santos <fabiosantosart@gmail.com>
Jayasankar <jayasankar.m@gmail.com>
Juerg B <44573692+juergba@users.noreply.github.com>
Svetlana <39729453+Lana-Light@users.noreply.github.com>
Martijn Cuppens <martijn.cuppens@intracto.com>
Anna Henningsen <github@addaleax.net>
Andreas Lind <andreaslindpetersen@gmail.com>
Chen Yangjian <252317+cyjake@users.noreply.github.com>
Corey Farrell <git@cfware.com>
Wanseob Lim <email@wanseob.com>
Szauka <33459309+Szauka@users.noreply.github.com>
Brian Tomlin <tendonstrength@gmail.com>
Sylvain <sstephant+github@gmail.com>
Adam Ginzberg <aginzberg@gmail.com>
XhmikosR <xhmikosr@gmail.com>
Gastón I. Silva <givanse@gmail.com>
Andrew Bradley <cspotcode@gmail.com>
Andrew Bradley <abradley@brightcove.com>
DavidLi119 <han.david.li@gmail.com>
James D. Rogers <jd2rogers2@gmail.com>
Carl-Erik Kopseng <carlerik@gmail.com>
juergba <filodron@gmail.com>
Sylvester Keil <sylvester@keil.or.at>
Bjorn Stromberg <bjorn@bjornstar.com>
Stephen Hess <trescube@users.noreply.github.com>
toyjhlee <toyjhlee@gmail.com>
Piotr Kuczynski <piotr.kuczynski@gmail.com>
Thomas Scholtes <thomas-scholtes@gmx.de>
Brian Lagerman <49239617+brian-lagerman@users.noreply.github.com>
Pascal <pascal@pascal.com>
Gabe Gorelick <gabegorelick@gmail.com>
Daniel Ruf <827205+DanielRuf@users.noreply.github.com>
Mario Díaz Ceñera <46492068+MarioDiaz98@users.noreply.github.com>
Oliver Salzburg <oliver.salzburg@gmail.com>
Sona Lee <mojosoeun@gmail.com>
Park Seong-beom <parkgds@gmail.com>
EunChan Park <pec9399@naver.com>
Mia <miajeongdev@gmail.com>
Lindsay-Needs-Sleep <51773923+Lindsay-Needs-Sleep@users.noreply.github.com>
Soobin Bak <qls014738@gmail.com>
Peter Schmidt <peter@peterjs.com>
SheetJSDev <dev@sheetjs.com>
HyunSangHan <gustkd3@gmail.com>
Jan-Philip Gehrcke <jgehrcke@googlemail.com>
Robert Kieffer <robert@broofa.com>
Saerom Bang <saerombang11@gmail.com>
Kyle Fuller <kyle@fuller.li>
Rens Groothuijsen <l.groothuijsen@alumni.maastrichtuniversity.nl>
Hugo Kim <k7120792@gmail.com>
KyoungWan <kyngwan@gmail.com>
Zirak <zirakertan@gmail.com>
Christian Holm <christian@peakon.com>
Kai Cataldo <kai@kaicataldo.com>
Gil Tayar <gil.tayar@applitools.com>
Ulises Gascón <UlisesGascon@users.noreply.github.com>
kundol <jhc9639@naver.com>
Arvid Ottenberg <arvid.ottenberg@gmx.de>
Daniel0113 <Daniel.febles97@gmail.com>
Nico Jansen <jansennico@gmail.com>
JacobLey <37151850+JacobLey@users.noreply.github.com>
Gil Tayar <gil@tayar.org>
Martin Oppitz <github@martinoppitz.com>
Benjamin E. Coe <bencoe@google.com>
Michael Brade <brade@kde.org>
Gopishankar Haridas <gopi.shanky@gmail.com>
devjeel <jeelhp02@gmail.com>
Martin Oppitz <martinoppitz@users.noreply.github.com>
indieisaconcept <me@indieisaconcept.com>
Sri Harsha <sri_harsha509@hotmail.com>
irrationnelle <drakkarverenis@gmail.com>
Donghoon Song <32301380+Donghoon759@users.noreply.github.com>
Sujin Park <psujin831@gmail.com>
KIM HYO RIN <wwhurin0515@gmail.com>
Chuf <42591821+GChuf@users.noreply.github.com>
Donghoon Song <thdehdgns@gmail.com>
Evaline Ju <evalineju@gmail.com>
Park Juhyung <jh@majecty.com>
François Hodierne <francois@hodierne.net>
Evaline Ju <69598118+evaline-ju@users.noreply.github.com>
Valeria <valeria.viana.gusmao@gmail.com>
Jordan Stephens <jordan@stephens.io>
Adam Keating <1427265+akeating@users.noreply.github.com>
Hazem <devhazemhassanin@gmail.com>
José Jesús Sinohui Fernández <josejesinohui@gmail.com>
Maxwell Gerber <mgerber@berkeley.edu>
Sebastian Noack <sebastian.noack@gmail.com>
Christian Bromann <github@christian-bromann.com>
Alexander Fenster <github@fenster.name>
MoonSupport <jiwon3346@naver.com>
Dayzen <syeuty@naver.com>
Alexander Fenster <fenster@google.com>
kirill-golovan <57108967+kirill-golovan@users.noreply.github.com>
Michal Dorner <dorner.michal@gmail.com>
Curtis Man <curtism@microsoft.com>
华 <1395348685z@gmail.com>
Andrei Rusu <beatfactor@users.noreply.github.com>
Quentin Barbe <forty@everteam.org>
Mattias Norlander <mattias.norlander@gmail.com>
CommanderRoot <CommanderRoot@users.noreply.github.com>
Elihu Cruz <elihuacruz@gmail.com>
Sukka <isukkaw@gmail.com>
Darius Dzien <ddzien2@gmail.com>
Yeting Li <liyt@ios.ac.cn>
Greggman <github@greggman.com>
Josh Goldberg <git@joshuakgoldberg.com>
Kleis Auke Wolthuizen <github@kleisauke.nl>
Paulo Gonçalves <github@paulog.dev>
Anton Usmansky <anton.usmansky@gmail.com>
jb2311 <32516995+jb2311@users.noreply.github.com>
Aras Abbasi <aras.abbasi@googlemail.com>
Spencer <16455389+Spencer-Doak@users.noreply.github.com>
Feng Yu <F3n67u@outlook.com>
Pelle Wessman <pelle@kodfabrik.se>
Orgad Shaneh <orgads@gmail.com>
Lucas Lopes <lucasaferrlopes@gmail.com>
Bryan Mishkin <698306+bmish@users.noreply.github.com>
Ville Lahdenvuo <tuhoojabotti@gmail.com>
Nathan Phillip Brink <ohnobinki@ohnopublishing.net>
Ståle Tomten <stale.tomten@finn.no>
dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sleepy Flower <wuhao64@gmail.com>
StevenMia <166844090+StevenMia@users.noreply.github.com>
Simon Hanna <33220646+simhnna@users.noreply.github.com>
Ilia Choly <ilia.choly@gmail.com>
Marjorie Saito <marjorieysaito@gmail.com>
Khoa Huynh <58313491+khoaHyh@users.noreply.github.com>
Sam Adams <107990625+sam-super@users.noreply.github.com>
Marc Durdin <marc@durdin.net>
Ilya Goncharov <ilgonmic@gmail.com>
github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Mark Wiemer <7833360+mark-wiemer@users.noreply.github.com>
Danny Lin <danny0838@gmail.com>
Kristján Oddsson <hi@koddsson.com>
David Huggins-Daines <dhd@ecolingui.ca>
Joy Dey <joydey@gmail.com>
Julian Grinblat <julian@dotcore.co.il>
Linda_pp <rhysd@users.noreply.github.com>
Eric Cornelissen <ericornelissen@gmail.com>
Kelechi Ebiri <56020538+TG199@users.noreply.github.com>
Dinika <dinika@greyllama.cc>
Kevin Locke <kevin@kevinlocke.name>
Phillip Barta <barta.phillip@gmail.com>
Grzegorz Godlewski <gg@gitgis.com>
Darren DeRidder <73rhodes@users.noreply.github.com>
Chengzhong Wu <legendecas@gmail.com>
Marcelo Shima <marceloshima@gmail.com>
Chengzhong Wu <cwu631@bloomberg.net>
Samuel Henrique <samosaara@gmail.com>
Mark Wiemer <markwiemer@outlook.com>
Martin Slota <46676886+martinslota@users.noreply.github.com>

# Generated by scripts/update-authors.js


================================================
FILE: CHANGELOG.md
================================================
# Changelog

## [12.0.0-beta-10](https://github.com/mochajs/mocha/compare/v12.0.0-beta-9...v12.0.0-beta-10) (2026-02-21)


### 🌟 Features

* remove Sauce Labs ([#5700](https://github.com/mochajs/mocha/issues/5700)) ([625c34e](https://github.com/mochajs/mocha/commit/625c34e8469562dbde8440c2b4d64e820f7019fa))


### 🩹 Fixes

* change Pending to properly extend Error ([#5679](https://github.com/mochajs/mocha/issues/5679)) ([158effd](https://github.com/mochajs/mocha/commit/158effd7de677c21b3a4ccd79ce0879fe0f97f8b))
* **deps:** update dependency chokidar to v5 ([#5734](https://github.com/mochajs/mocha/issues/5734)) ([ff2f17f](https://github.com/mochajs/mocha/commit/ff2f17fb25e5001420d48035f81f5b19a5f0974f))
* **deps:** update dependency minimatch to v10 ([#5743](https://github.com/mochajs/mocha/issues/5743)) ([3f3e449](https://github.com/mochajs/mocha/commit/3f3e449f889cb2ddcf950e7bf2268091000b9f7c))
* **deps:** update dependency starlight-package-managers to ^0.12.0 ([#5717](https://github.com/mochajs/mocha/issues/5717)) ([aa4ba48](https://github.com/mochajs/mocha/commit/aa4ba483a4a25f5dfc36334439caf2b8935874d2))


### 📚 Documentation

* fix client redirects ([#5697](https://github.com/mochajs/mocha/issues/5697)) ([dd9145d](https://github.com/mochajs/mocha/commit/dd9145dd9c5a684aa918ca5ed10155293df2bb91)), closes [#5696](https://github.com/mochajs/mocha/issues/5696)


### 🧹 Chores

* Configure Renovate ([#5678](https://github.com/mochajs/mocha/issues/5678)) ([a9c9b90](https://github.com/mochajs/mocha/commit/a9c9b90098a831d82e69d82bfc7ce8c7aa749911))
* **deps:** update dependency @rollup/plugin-alias to v6 ([#5718](https://github.com/mochajs/mocha/issues/5718)) ([267d751](https://github.com/mochajs/mocha/commit/267d751dd05270de4e18e0348584fbb12d90ce04))
* **deps:** update dependency @rollup/plugin-commonjs to v29 ([#5719](https://github.com/mochajs/mocha/issues/5719)) ([9ed4ee5](https://github.com/mochajs/mocha/commit/9ed4ee55d975281ea54f237d23666d7b0307a596))
* **deps:** update dependency astro to v5.17.1 ([#5703](https://github.com/mochajs/mocha/issues/5703)) ([ec3d1fa](https://github.com/mochajs/mocha/commit/ec3d1fa02e285a4430942942c11c376e63d395ca))
* **deps:** update dependency chai to v4.5.0 ([#5705](https://github.com/mochajs/mocha/issues/5705)) ([870f9f8](https://github.com/mochajs/mocha/commit/870f9f8df7d1f9cace40bfc29a9b5b79a26ccb4e))
* **deps:** update dependency cross-env to v10 ([#5721](https://github.com/mochajs/mocha/issues/5721)) ([20b7476](https://github.com/mochajs/mocha/commit/20b7476904592b356a48c3f89817e930c78f15cb))
* **deps:** update dependency knip to v5.83.1 ([#5708](https://github.com/mochajs/mocha/issues/5708)) ([d833413](https://github.com/mochajs/mocha/commit/d833413622807c91cc2dea243c2be3518e2fe10b))
* **deps:** update dependency npm-run-all2 to v8 ([#5727](https://github.com/mochajs/mocha/issues/5727)) ([e38e0ec](https://github.com/mochajs/mocha/commit/e38e0ec3dd91be11b2b999959e6245ec721168e3))
* **deps:** update dependency prettier to v3.8.1 ([#5709](https://github.com/mochajs/mocha/issues/5709)) ([2f98cfd](https://github.com/mochajs/mocha/commit/2f98cfd1e3e9fce8a3c1a645f99a6b4b3b69ea6c))
* **deps:** update dependency rimraf to v6 ([#5728](https://github.com/mochajs/mocha/issues/5728)) ([ba124e9](https://github.com/mochajs/mocha/commit/ba124e9161e5efd052df77dda50925c5666ccd6d))
* **deps:** update dependency rollup to v4.57.1 ([#5710](https://github.com/mochajs/mocha/issues/5710)) ([178749d](https://github.com/mochajs/mocha/commit/178749da1bee978b5ef109a253337ae88206365c))
* **deps:** update dependency unexpected-map to v3 ([#5736](https://github.com/mochajs/mocha/issues/5736)) ([c1f3379](https://github.com/mochajs/mocha/commit/c1f33798ab925c76c5f9a69dcb8c1ce71da2fbc9))
* **deps:** update dependency unist-util-visit to v5.1.0 ([#5711](https://github.com/mochajs/mocha/issues/5711)) ([7ede894](https://github.com/mochajs/mocha/commit/7ede8943ff8f7925b51d4e4a226ee76b0a77619d))
* **deps:** update dependency webdriverio to v9 ([#5739](https://github.com/mochajs/mocha/issues/5739)) ([ff334df](https://github.com/mochajs/mocha/commit/ff334df744c93f27c7cce08ced320833ee69cb2f))
* **deps:** update dependency webpack-cli to v6 ([#5741](https://github.com/mochajs/mocha/issues/5741)) ([95c9d75](https://github.com/mochajs/mocha/commit/95c9d75120078e4c1fbb87d23f4fd7ec1f8a5405))
* **deps:** update dependency workerpool to v9.3.4 ([#5715](https://github.com/mochajs/mocha/issues/5715)) ([c030a3b](https://github.com/mochajs/mocha/commit/c030a3bd4774db679ac8dc7d56e705975f1a1b6e))
* **deps:** update remark ([#5745](https://github.com/mochajs/mocha/issues/5745)) ([37a25f1](https://github.com/mochajs/mocha/commit/37a25f174e6f3f16cae34923b86ab7d2504985ce))
* fix timeout issue with some XUnit tests ([53cc467](https://github.com/mochajs/mocha/commit/53cc46755571ed53e32254fb7d896f599a1a7d1f))
* switch Suite from util.inherits to ES2015 classes ([#5179](https://github.com/mochajs/mocha/issues/5179)) ([1ce690e](https://github.com/mochajs/mocha/commit/1ce690e590ca7bff7f47b108d3a5cc61dde6aa1b))


### 🤖 Automation

* **deps:** bump OctoGuide/bot in the github-actions group ([#5724](https://github.com/mochajs/mocha/issues/5724)) ([87224d8](https://github.com/mochajs/mocha/commit/87224d8400fa3b074f77a8ba1baadf7e0b99d864))
* run `npm audit fix` ([#5695](https://github.com/mochajs/mocha/issues/5695)) ([c7b00b0](https://github.com/mochajs/mocha/commit/c7b00b0e4f03583c4dcc407f28a5453df436f32b))

## [12.0.0-beta-9](https://github.com/mochajs/mocha/compare/v12.0.0-beta-8...v12.0.0-beta-9) (2026-02-13)


### 🌟 Features

* remove `log-symbols` dependency ([#5469](https://github.com/mochajs/mocha/issues/5469)) ([b92168f](https://github.com/mochajs/mocha/commit/b92168f5625be7343fb94d458d8a055cca8ff0a4))

## [12.0.0-beta-8](https://github.com/mochajs/mocha/compare/v12.0.0-beta-7...v12.0.0-beta-8) (2026-02-06)


### 🧹 Chores

* use OIDC to publish to npm ([#5681](https://github.com/mochajs/mocha/issues/5681)) ([5567aed](https://github.com/mochajs/mocha/commit/5567aed50a00b63074d5c7703c6d8196dee92088))

## [12.0.0-beta-7](https://github.com/mochajs/mocha/compare/v12.0.0-beta-6...v12.0.0-beta-7) (2026-02-03)


### 🩹 Fixes

* bump diff dependency to ^8.0.3 ([#5674](https://github.com/mochajs/mocha/issues/5674)) ([15fb31a](https://github.com/mochajs/mocha/commit/15fb31a8b25a4d03242e5c5f901ff3800889263e))
* print helpful message when internal CLI error happens ([#5344](https://github.com/mochajs/mocha/issues/5344)) ([1e11836](https://github.com/mochajs/mocha/commit/1e118367dbb27f558edb7389985cca97d6d7da4b))


### 📚 Documentation

* update sponsor image to be larger ([#5659](https://github.com/mochajs/mocha/issues/5659)) ([bbe2bdb](https://github.com/mochajs/mocha/commit/bbe2bdbb69f7aa560645a5ab2cbd596dd0b43448))


### 🧹 Chores

* move nyc config changes from package.json into .nycrc ([#5668](https://github.com/mochajs/mocha/issues/5668)) ([e923e40](https://github.com/mochajs/mocha/commit/e923e4063f6a24dcaf7c6d7c7a3c8be998cb7980))
* remove extra newline ([bbe2bdb](https://github.com/mochajs/mocha/commit/bbe2bdbb69f7aa560645a5ab2cbd596dd0b43448))

## [12.0.0-beta-6](https://github.com/mochajs/mocha/compare/v12.0.0-beta-5...v12.0.0-beta-6) (2026-01-23)


### 🩹 Fixes

* allow chain call timeout to override nested items timeout ([#5612](https://github.com/mochajs/mocha/issues/5612)) ([5525da6](https://github.com/mochajs/mocha/commit/5525da60cf8d2596e14ff5441ea518d47bd732da))
* import() fallback prevention ([#5647](https://github.com/mochajs/mocha/issues/5647)) ([6a78fa3](https://github.com/mochajs/mocha/commit/6a78fa39576ffb42700811661a94c9ac996707f2))


### 🤖 Automation

* **deps:** bump OctoGuide/bot in the github-actions group ([#5653](https://github.com/mochajs/mocha/issues/5653)) ([e06cce7](https://github.com/mochajs/mocha/commit/e06cce7a49b79a163e33db166e9b078b0d7b4001))

## [12.0.0-beta-5](https://github.com/mochajs/mocha/compare/v12.0.0-beta-4...v12.0.0-beta-5) (2026-01-16)


### 🌟 Features

* add --fail-hook-affected-tests option to report skipped tests as failed ([#5519](https://github.com/mochajs/mocha/issues/5519)) ([0ed524a](https://github.com/mochajs/mocha/commit/0ed524af347b59200e03b972c2450d36f6818a45))


### 📚 Documentation

* add missing /next/* redirects ([#5627](https://github.com/mochajs/mocha/issues/5627)) ([8fa183d](https://github.com/mochajs/mocha/commit/8fa183d592b29346901b55e2fa479c8f598a1ec3))


### 🧹 Chores

* cleanup issue templates ([#5624](https://github.com/mochajs/mocha/issues/5624)) ([1972dd7](https://github.com/mochajs/mocha/commit/1972dd76ec66e8e11532bb6aca9157c4f8892d3c))
* remove unused assets folder ([#5638](https://github.com/mochajs/mocha/issues/5638)) ([ddf8644](https://github.com/mochajs/mocha/commit/ddf864482ff66b1ca46ef7f08e63ca923222e717))
* update spam filter ([#5645](https://github.com/mochajs/mocha/issues/5645)) ([cf945fb](https://github.com/mochajs/mocha/commit/cf945fb73b7c5a74f0856cabca5b5b1c8a6ff1c8))
* update tagline ([#5635](https://github.com/mochajs/mocha/issues/5635)) ([8ff0209](https://github.com/mochajs/mocha/commit/8ff0209db575c8231eea77e6ab23e6fe95620c92))


### 🤖 Automation

* **deps:** bump OctoGuide/bot in the github-actions group ([#5648](https://github.com/mochajs/mocha/issues/5648)) ([fed6bbd](https://github.com/mochajs/mocha/commit/fed6bbdb891c518e61e8ef4bbf07ed46b469f860))
* **docs/dev-deps:** use JS-native `fetch` to get supporters data instead of external `needle` ([#5643](https://github.com/mochajs/mocha/issues/5643)) ([e37e56f](https://github.com/mochajs/mocha/commit/e37e56fbe6a1072f1784ef87278d46f7ac48cdb8))
* initial file implementation for ocotoguide ([#5608](https://github.com/mochajs/mocha/issues/5608)) ([a5f5c64](https://github.com/mochajs/mocha/commit/a5f5c6442505069573a17798a515f267c24a38f3))

## [12.0.0-beta-4](https://github.com/mochajs/mocha/compare/v12.0.0-beta-3...v12.0.0-beta-4) (2026-01-04)


### 🌟 Features

* ESM configuration file ([#5397](https://github.com/mochajs/mocha/issues/5397)) ([dff9d78](https://github.com/mochajs/mocha/commit/dff9d7873f2d47a799e0adef338a7d6045ba0731))
* migrate Markdown lint to `@eslint/markdown` ([#5593](https://github.com/mochajs/mocha/issues/5593)) ([d9e1f0a](https://github.com/mochajs/mocha/commit/d9e1f0aa7e39caa11edb81581c14cd02b3f40b3f))


### 🩹 Fixes

* remove `run` and use globalThis `setup` ([#5592](https://github.com/mochajs/mocha/issues/5592)) ([1544c39](https://github.com/mochajs/mocha/commit/1544c39dcd76916cca23a111c88eee8cbb781c24))


### 📚 Documentation

* fix v3_older changelog duplicate headings ([#5602](https://github.com/mochajs/mocha/issues/5602)) ([a750518](https://github.com/mochajs/mocha/commit/a7505180b64541ac71639ec3d1193f26e73527d9))


### 🧹 Chores

* **ci:** use OIDC token for trusted publishing to `npm` ([#5610](https://github.com/mochajs/mocha/issues/5610)) ([dc0fdb7](https://github.com/mochajs/mocha/commit/dc0fdb767fe46b885f7a0ccfb67acfb453156a3b))
* create exclusions for nyc ([#5609](https://github.com/mochajs/mocha/issues/5609)) ([702473a](https://github.com/mochajs/mocha/commit/702473a54d9348948a63b4600171afa6956ccb0b))
* **main:** release 12.0.0-beta-4 ([#5598](https://github.com/mochajs/mocha/issues/5598)) ([424516e](https://github.com/mochajs/mocha/commit/424516ed3c34c6716afbf554425cf5df439cd86c))
* prevent unwanted Prettier rewrites ([#5591](https://github.com/mochajs/mocha/issues/5591)) ([3ea1578](https://github.com/mochajs/mocha/commit/3ea15789ddb4b77c591d9da36d2476ac359de00d))
* remove broken browser-test.yml ([#5615](https://github.com/mochajs/mocha/issues/5615)) ([33ce345](https://github.com/mochajs/mocha/commit/33ce345f9ab4f47573a4994c5c01de6eda2af45d))
* remove legacy `docs/` ([#5583](https://github.com/mochajs/mocha/issues/5583)) ([d8c310e](https://github.com/mochajs/mocha/commit/d8c310e3eddd235be55ad1891cde84c3be6f56f3))
* revert "chore(main): release 12.0.0-beta-4 ([#5598](https://github.com/mochajs/mocha/issues/5598))" ([#5619](https://github.com/mochajs/mocha/issues/5619)) ([dba8091](https://github.com/mochajs/mocha/commit/dba809196541df415fac2681822f5cd35cf20442))


### 🤖 Automation

* **dep:** update `diff` from v7 to v8 ([#5605](https://github.com/mochajs/mocha/issues/5605)) ([8ca311c](https://github.com/mochajs/mocha/commit/8ca311c6c9b0d353b1c9d65b5751296d9baddd83))
* update npm command for format ([#5603](https://github.com/mochajs/mocha/issues/5603)) ([c6a29cc](https://github.com/mochajs/mocha/commit/c6a29ccb38f81d65100cb2a0e6d73ad4303f58fb))

## [12.0.0-beta-3](https://github.com/mochajs/mocha/compare/v12.0.0-beta-2...v12.0.0-beta-3) (2026-01-01)


### 🌟 Features

* add mocha.mjs export ([#5527](https://github.com/mochajs/mocha/issues/5527)) ([e1cf23c](https://github.com/mochajs/mocha/commit/e1cf23cbc2049a375ab9980337dbf2486450f7cb))
* bump serialize-javascript from 6.0.2 to 7.0.2 ([#5589](https://github.com/mochajs/mocha/issues/5589)) ([24fb1b6](https://github.com/mochajs/mocha/commit/24fb1b6f8a45b4ca93b4577838bc1d9a47c74ec1))
* bump strip-json-comments from 3 to 5 ([#5484](https://github.com/mochajs/mocha/issues/5484)) ([9b0db24](https://github.com/mochajs/mocha/commit/9b0db24740c65717dcd1838dcafccbfc1c538d3b))


### 🩹 Fixes

* allow importing ESM interface and reporters ([#5563](https://github.com/mochajs/mocha/issues/5563)) ([bc9fc84](https://github.com/mochajs/mocha/commit/bc9fc842213d00cf7ac4a4b0de898bf29e38bdad))
* **docs-next:** backer's logo is consistent regardless of size ([#5594](https://github.com/mochajs/mocha/issues/5594)) ([1a53a10](https://github.com/mochajs/mocha/commit/1a53a100a4f3b83a725ccf3c166dcbefebca8602))
* surface ts-node compile errors ([#5572](https://github.com/mochajs/mocha/issues/5572)) ([add4cf8](https://github.com/mochajs/mocha/commit/add4cf8166b330c9af4342def643c606459331d7))


### 📚 Documentation

* bumped docs-next Astro to ^5.16.6 ([#5574](https://github.com/mochajs/mocha/issues/5574)) ([806222b](https://github.com/mochajs/mocha/commit/806222b0998ffb4d09399090f4ec638e90974427))
* fix light mode Astro accent text color ([#5585](https://github.com/mochajs/mocha/issues/5585)) ([9cc3ada](https://github.com/mochajs/mocha/commit/9cc3ada85b4ab4a4f2a8c7dc1b9d9ff8f101ffc1))
* update Contributor License Agreement link in CONTRIBUTING.md ([#5567](https://github.com/mochajs/mocha/issues/5567)) ([410ce0d](https://github.com/mochajs/mocha/commit/410ce0d2a0f799aaca2c0bc627294d70c62dd3f4))


### 🧹 Chores

* normalized ESLint config to v9's recommended structure ([#5575](https://github.com/mochajs/mocha/issues/5575)) ([7f9ed1f](https://github.com/mochajs/mocha/commit/7f9ed1fb3480e0658c2c7d84c60a1b505c941ce5))
* update Rollup to v4 ([#5510](https://github.com/mochajs/mocha/issues/5510)) ([cafa782](https://github.com/mochajs/mocha/commit/cafa782f010021e7055f8482ede2c02c6503f0a0))


### 🤖 Automation

* **dev-deps:** upgrade `eslint` from v8 to v9 ([#5559](https://github.com/mochajs/mocha/issues/5559)) ([bb24ca8](https://github.com/mochajs/mocha/commit/bb24ca8fde15471ff68d5b01b74c2d7e6047d966))
* **dev-deps:** upgrade `markdownlint-cli` to latest v0.46.0  ([#5560](https://github.com/mochajs/mocha/issues/5560)) ([a124f1d](https://github.com/mochajs/mocha/commit/a124f1d3b7d0f8277962cae295cd43878294e183))
* **dev-deps:** upgrade `nyc` from 15 to 17 ([#5556](https://github.com/mochajs/mocha/issues/5556)) ([599ab01](https://github.com/mochajs/mocha/commit/599ab013f526e78b3888a092a928ea4bc67138c0))

## [12.0.0-beta-2](https://github.com/mochajs/mocha/compare/v12.0.0-beta-1...v12.0.0-beta-2) (2025-11-25)


### 🧹 Chores

* bump glob to version 13 ([#5546](https://github.com/mochajs/mocha/issues/5546)) ([f4d4ad2](https://github.com/mochajs/mocha/commit/f4d4ad23e9e994668c7d95c5a9bf59f581dccebf))

## [12.0.0-beta-1](https://github.com/mochajs/mocha/compare/v11.7.4...v12.0.0-beta-1) (2025-11-25)


### ⚠ BREAKING CHANGES

* cleanup references of --compilers ([#5403](https://github.com/mochajs/mocha/issues/5403))
* change the default of --forbid-only to check for process.env.CI ([#5496](https://github.com/mochajs/mocha/issues/5496))
* bump minimum Node.js version from 18.18.0 to 20.19.0 ([#5477](https://github.com/mochajs/mocha/issues/5477))

### 🌟 Features

* allow FIFOs as test files ([#5512](https://github.com/mochajs/mocha/issues/5512)) ([ca4af43](https://github.com/mochajs/mocha/commit/ca4af439d5766fdfb2b5a7d7e06db0280b1abb6e))
* bump minimum Node.js version from 18.18.0 to 20.19.0 ([#5477](https://github.com/mochajs/mocha/issues/5477)) ([1c34eef](https://github.com/mochajs/mocha/commit/1c34eef426f29e5e46ec348272ccaa869ae43922))
* change the default of --forbid-only to check for process.env.CI ([#5496](https://github.com/mochajs/mocha/issues/5496)) ([3d94dde](https://github.com/mochajs/mocha/commit/3d94ddea2f45d18473bf00e71db2b9766ab227fe))
* cleanup references of --compilers ([#5403](https://github.com/mochajs/mocha/issues/5403)) ([f75d150](https://github.com/mochajs/mocha/commit/f75d150cf6115334e7f14b8ee1fbbda04eb87087))


### 🩹 Fixes

* correct assertion import syntax in getting-started guide ([#5526](https://github.com/mochajs/mocha/issues/5526)) ([fb0215b](https://github.com/mochajs/mocha/commit/fb0215bd4fba44fde0cc7b8f9b91a4f07020a13b))
* handle empty null-prototyped objects ([#5506](https://github.com/mochajs/mocha/issues/5506)) ([2a0bce0](https://github.com/mochajs/mocha/commit/2a0bce02f6f696c74fb8fdcd9f72089e82935903))


### 📚 Documentation

* add maintainer expectations to MAINTAINERS.md ([#5514](https://github.com/mochajs/mocha/issues/5514)) ([76f95a1](https://github.com/mochajs/mocha/commit/76f95a1113ea0472800ff6b1781f2750836a6db7))
* migrate how-to wiki pages to main documentation ([#5463](https://github.com/mochajs/mocha/issues/5463)) ([b85aec6](https://github.com/mochajs/mocha/commit/b85aec6e4307903f31b2b8039dd749efc44ffcf5))
* migrate programmatic usage to docs, development content to DEVELOPMENT.md ([#5464](https://github.com/mochajs/mocha/issues/5464)) ([cb47925](https://github.com/mochajs/mocha/commit/cb47925f99b39bd66bdd09218395bf5e0a54802d))
* test/integration/README: remove ref to non-existent dir ([#5516](https://github.com/mochajs/mocha/issues/5516)) ([d2c2d40](https://github.com/mochajs/mocha/commit/d2c2d4026d0f6a09b96344f034e9cba9ee6277af))


### 🧹 Chores

* applied formatting to all files ([#5493](https://github.com/mochajs/mocha/issues/5493)) ([76d7194](https://github.com/mochajs/mocha/commit/76d719495d09dc4afb37d1179ede8911c52a011e))
* fix broken link in .github/CONTRIBUTING.md ([681e843](https://github.com/mochajs/mocha/commit/681e843800051a9d3ab66c1bfb7ad71428e34315))
* remove Node.js 18 from test-smoke in CI too ([d643105](https://github.com/mochajs/mocha/commit/d643105aa6f3fbac9d13e8a44f4c4c7302512193))
* switch from Coveralls to Codecov ([#5447](https://github.com/mochajs/mocha/issues/5447)) ([f4e7e54](https://github.com/mochajs/mocha/commit/f4e7e54eb285765d7c50bce9c501db2e1b1e22be))
* unpin node-version in release-please ([#5550](https://github.com/mochajs/mocha/issues/5550)) ([62c90cd](https://github.com/mochajs/mocha/commit/62c90cd2aea4c719d2014e7134b2a1d7c189fd7a))
* use `ps-list` instead of `pidtree` to remove wmic ([#5479](https://github.com/mochajs/mocha/issues/5479)) ([b2985b3](https://github.com/mochajs/mocha/commit/b2985b3428b4b88ca220a14a26e9eb7139e8d445))


### 🤖 Automation

* **deps:** bump actions/checkout in the github-actions group ([#5547](https://github.com/mochajs/mocha/issues/5547)) ([561eb03](https://github.com/mochajs/mocha/commit/561eb039f7cfc36563a9583b17c7d4cb7ec30652))
* **deps:** bump actions/setup-node in the github-actions group ([#5503](https://github.com/mochajs/mocha/issues/5503)) ([9a70533](https://github.com/mochajs/mocha/commit/9a7053349589344236b20301de965030eaabfea9))

## [11.7.4](https://github.com/mochajs/mocha/compare/v11.7.3...v11.7.4) (2025-10-01)


### 🩹 Fixes

* watch mode using chokidar v4 ([#5379](https://github.com/mochajs/mocha/issues/5379)) ([c2667c3](https://github.com/mochajs/mocha/commit/c2667c3b3fca33c21306f59a1cca55bb7e1dac1f))


### 📚 Documentation

* migrate remaining legacy wiki pages to main documentation ([#5465](https://github.com/mochajs/mocha/issues/5465)) ([bff9166](https://github.com/mochajs/mocha/commit/bff91660733b71b124aad939538dee7747cfbeb8))


### 🧹 Chores

* remove trailing spaces ([#5475](https://github.com/mochajs/mocha/issues/5475)) ([7f68e5c](https://github.com/mochajs/mocha/commit/7f68e5c1565606bcebeb715b8591c52973d00dff))

## [11.7.3](https://github.com/mochajs/mocha/compare/v11.7.2...v11.7.3) (2025-09-30)


### 🩹 Fixes

* use original require() error for TS files if ERR_UNKNOWN_FILE_EXTENSION ([#5408](https://github.com/mochajs/mocha/issues/5408)) ([ebdbc48](https://github.com/mochajs/mocha/commit/ebdbc487693254498de62068c59e3e43d078eff1))


### 📚 Documentation

* add security escalation policy ([#5466](https://github.com/mochajs/mocha/issues/5466)) ([4122c7d](https://github.com/mochajs/mocha/commit/4122c7d13d0941be451365397fbf43e1f3103027))
* fix duplicate global leak documentation ([#5461](https://github.com/mochajs/mocha/issues/5461)) ([1164b9d](https://github.com/mochajs/mocha/commit/1164b9da895e56cf745acda2792e634080018ff6))
* migrate third party UIs wiki page to docs ([#5434](https://github.com/mochajs/mocha/issues/5434)) ([6654704](https://github.com/mochajs/mocha/commit/66547045cb9bd2fa8209b34c36da2a5ef49d23fc))
* update maintainer release notes for release-please ([#5453](https://github.com/mochajs/mocha/issues/5453)) ([185ae1e](https://github.com/mochajs/mocha/commit/185ae1eabe5c1e92c758bdfb398f7f47b6ef9483))


### 🤖 Automation

* **deps:** bump actions/setup-node in the github-actions group ([#5459](https://github.com/mochajs/mocha/issues/5459)) ([48c6f40](https://github.com/mochajs/mocha/commit/48c6f4068b5d22ebc49220900f0b53f8ecdc2b74))

## [11.7.2](https://github.com/mochajs/mocha/compare/v11.7.1...v11.7.2) (2025-09-01)


### 🩹 Fixes

* fail with an informative error message on a file with a broken default import ([#5413](https://github.com/mochajs/mocha/issues/5413)) ([b0e6135](https://github.com/mochajs/mocha/commit/b0e61350594f2a044bf34ea153d1fab1e82e80cc))
* load mjs files correctly ([#5429](https://github.com/mochajs/mocha/issues/5429)) ([a947b9b](https://github.com/mochajs/mocha/commit/a947b9b95501a35efa73c18aa57a74dad555c03a))


### 📚 Documentation

* add banner from old site to new site, link from new to old ([#5414](https://github.com/mochajs/mocha/issues/5414)) ([dedef11](https://github.com/mochajs/mocha/commit/dedef110a2af2f8632fb6c1b864fa0a46ad6ca9c))
* add info on spies to legacy docs ([#5421](https://github.com/mochajs/mocha/issues/5421)) ([21f5544](https://github.com/mochajs/mocha/commit/21f554459c75f5a75b22556b6e2ac70d6ac0e9fc))
* explain node import swallowing error ([#5401](https://github.com/mochajs/mocha/issues/5401)) ([09f5b2c](https://github.com/mochajs/mocha/commit/09f5b2c9de67ef40d5bd1775c3fca3bdb138f371))
* fix links in new site ([#5416](https://github.com/mochajs/mocha/issues/5416)) ([b2bc769](https://github.com/mochajs/mocha/commit/b2bc769c6c8d87311ba0bdc9df8b9b588494eba5))
* migrate assertion libraries wiki link to main docs ([#5442](https://github.com/mochajs/mocha/issues/5442)) ([95f3ca8](https://github.com/mochajs/mocha/commit/95f3ca8bc3a6c6af2932f7fd59a404768c0c6693))
* migrate count assertions wiki page to docs ([#5438](https://github.com/mochajs/mocha/issues/5438)) ([02a306c](https://github.com/mochajs/mocha/commit/02a306c6cbf31f4eef7d4c9bf5e06c917d3efc11))
* migrate shared behaviours to docs-next ([#5432](https://github.com/mochajs/mocha/issues/5432)) ([1dc4aa9](https://github.com/mochajs/mocha/commit/1dc4aa98eb3793865fa2a4da3373534dafc1c9a7))
* migrate Spies wiki page to explainers ([#5420](https://github.com/mochajs/mocha/issues/5420)) ([cbcf007](https://github.com/mochajs/mocha/commit/cbcf007c5ae25f203863aac0b43eca1e8aefe093))
* Migrate tagging wiki page to docs ([#5435](https://github.com/mochajs/mocha/issues/5435)) ([876247a](https://github.com/mochajs/mocha/commit/876247a8a636cc7bb1c3bf31390e7771182a090a))
* migrate third party reporters wiki page to docs ([#5433](https://github.com/mochajs/mocha/issues/5433)) ([f70764c](https://github.com/mochajs/mocha/commit/f70764c9a56fcf12e316d5539788c7be0693b6a9))
* migrate to global leak wiki page to docs ([#5437](https://github.com/mochajs/mocha/issues/5437)) ([8a6fdca](https://github.com/mochajs/mocha/commit/8a6fdcafccd94c888fae5e8be47dd29a604241b6))
* update /next bug report link to be docs issue template ([#5424](https://github.com/mochajs/mocha/issues/5424)) ([668cb66](https://github.com/mochajs/mocha/commit/668cb66e1288051369ab144ccb50c840ebe34267))


### 🧹 Chores

* add issue form for ⚡️ Performance ([#5406](https://github.com/mochajs/mocha/issues/5406)) ([a908b3b](https://github.com/mochajs/mocha/commit/a908b3b86604d41d5751cccfaff505d7092c114f))
* add test for `-R import-only-loader` ([#5391](https://github.com/mochajs/mocha/issues/5391)) ([6ee5b48](https://github.com/mochajs/mocha/commit/6ee5b483b8c29e0593c7765ad7a5c7b7f7764fc3))
* also test Node.js 24 in CI ([#5405](https://github.com/mochajs/mocha/issues/5405)) ([15f5980](https://github.com/mochajs/mocha/commit/15f59805287f4c84ab8d057735a391a795be23f1))
* bump CI to use 20.19.4, 22.18.0, 24.6.0 ([#5430](https://github.com/mochajs/mocha/issues/5430)) ([ace5eb4](https://github.com/mochajs/mocha/commit/ace5eb47a7926fe9d56ebcd95fd659c557a5be4d))
* bump Knip to 5.61.2 ([#5394](https://github.com/mochajs/mocha/issues/5394)) ([f3d7430](https://github.com/mochajs/mocha/commit/f3d743061d6523f7077b21749089e6fb2f9c32e3))
* cleanup references of --opts ([#5402](https://github.com/mochajs/mocha/issues/5402)) ([1096b37](https://github.com/mochajs/mocha/commit/1096b376c3c3bb9d4256c643ad35a459ed750928))
* enabled ESLint's no-unused-vars ([#5399](https://github.com/mochajs/mocha/issues/5399)) ([d4168ae](https://github.com/mochajs/mocha/commit/d4168aef4c21f8fd119385da1cf1794a1ec5c2e1))
* move callback and object typedefs to a new types.d.ts ([#5351](https://github.com/mochajs/mocha/issues/5351)) ([3300d21](https://github.com/mochajs/mocha/commit/3300d2155a1b06059fbe89c98a1d8bf979539019))
* rewrite base path instead of copy-pasting ([#5431](https://github.com/mochajs/mocha/issues/5431)) ([c6c6740](https://github.com/mochajs/mocha/commit/c6c6740fb45da43510f86c1d22ea46ce9ee6a7ae))
* unify caught errors as err ([#5439](https://github.com/mochajs/mocha/issues/5439)) ([d4912e7](https://github.com/mochajs/mocha/commit/d4912e705cf9ae1c3aa274b6449a6a0ff6d408c5))
* Update experimental module detection test and pin exact Node versions ([#5417](https://github.com/mochajs/mocha/issues/5417)) ([2489090](https://github.com/mochajs/mocha/commit/2489090223f2629e4a380abe4cc6d46858ada922))


### 🤖 Automation

* **deps:** bump actions/checkout in the github-actions group ([#5419](https://github.com/mochajs/mocha/issues/5419)) ([03ac2d0](https://github.com/mochajs/mocha/commit/03ac2d0e6e75e95b3dc7fb08f2e1a1117d9718ca))

## [11.7.1](https://github.com/mochajs/mocha/compare/v11.7.0...v11.7.1) (2025-06-24)


### 🩹 Fixes

* always fallback to import() if require() fails ([#5384](https://github.com/mochajs/mocha/issues/5384)) ([295c168](https://github.com/mochajs/mocha/commit/295c168628c2583245fb67d371b640309ba243ba))


### 🧹 Chores

* add esm loader test ([#5383](https://github.com/mochajs/mocha/issues/5383)) ([f58e49f](https://github.com/mochajs/mocha/commit/f58e49f08df2066e27f87f93ad7ee9cd6f91d225))

## [11.7.0](https://github.com/mochajs/mocha/compare/v11.6.0...v11.7.0) (2025-06-18)


### 🌟 Features

* use require to load esm ([#5366](https://github.com/mochajs/mocha/issues/5366)) ([41e24a2](https://github.com/mochajs/mocha/commit/41e24a242944da0cfc9d4d6989dede85f648cb40))

## [11.6.0](https://github.com/mochajs/mocha/compare/v11.5.0...v11.6.0) (2025-06-09)


### 🌟 Features

* bump workerpool from ^6.5.1 to ^9.2.0 ([#5350](https://github.com/mochajs/mocha/issues/5350)) ([581a3c5](https://github.com/mochajs/mocha/commit/581a3c554489855ac02860689d3f4ae772c2ea79))

## [11.5.0](https://github.com/mochajs/mocha/compare/v11.4.0...v11.5.0) (2025-05-22)


### 🌟 Features

* bump mimimatch from ^5.1.6 to ^9.0.5 ([#5349](https://github.com/mochajs/mocha/issues/5349)) ([a3dea85](https://github.com/mochajs/mocha/commit/a3dea85b316e229ea95f51c715ad61708e9ab9a3))

## [11.4.0](https://github.com/mochajs/mocha/compare/v11.3.0...v11.4.0) (2025-05-19)


### 🌟 Features

* bump diff from ^5.2.0 to ^7.0.0 ([#5348](https://github.com/mochajs/mocha/issues/5348)) ([554d6bb](https://github.com/mochajs/mocha/commit/554d6bbec92c3c938af0a533109749b6f3b7bd2c))


### 📚 Documentation

* added CHANGELOG.md note around 11.1 yargs-parser update ([#5362](https://github.com/mochajs/mocha/issues/5362)) ([618415d](https://github.com/mochajs/mocha/commit/618415d9c6fa3ef4e959207c8dd404f4703de7a7))

## [11.3.0](https://github.com/mochajs/mocha/compare/v11.2.2...v11.3.0) (2025-05-16)


### 🌟 Features

* add option to use posix exit code upon fatal signal ([#4989](https://github.com/mochajs/mocha/issues/4989)) ([91bbf85](https://github.com/mochajs/mocha/commit/91bbf855012ee9b83700d3c563b517483de0831c))


### 📚 Documentation

* Deploy new site alongside old one ([#5360](https://github.com/mochajs/mocha/issues/5360)) ([6c96545](https://github.com/mochajs/mocha/commit/6c96545aee03efeee78c55feedcf70664426514c))
* mention explicit browser support range ([#5354](https://github.com/mochajs/mocha/issues/5354)) ([c514c0b](https://github.com/mochajs/mocha/commit/c514c0bfad044f8450a63b2f9c6c781b9ce6f164))
* update Node.js version requirements for 11.x ([#5329](https://github.com/mochajs/mocha/issues/5329)) ([abf3dd9](https://github.com/mochajs/mocha/commit/abf3dd921544b45c4c09eef8f7c9c3c4481a3d66))


### 🧹 Chores

* remove prerelease setting in release-please config ([#5363](https://github.com/mochajs/mocha/issues/5363)) ([8878f22](https://github.com/mochajs/mocha/commit/8878f222c418a0bf4fe170c17573c30b5ea2d567))

## [11.2.2](https://github.com/mochajs/mocha/compare/v11.2.1...v11.2.2) (2025-04-10)


### 🩹 Fixes

* **deps:** update chokidar to v4 ([#5256](https://github.com/mochajs/mocha/issues/5256)) ([8af0f1a](https://github.com/mochajs/mocha/commit/8af0f1a9005a948fbefeb19be618a64dd910d39f))


### 📚 Documentation

* add ClientRedirects.astro ([#5324](https://github.com/mochajs/mocha/issues/5324)) ([b88d441](https://github.com/mochajs/mocha/commit/b88d441cc7616253892572778150998627d746ec))
* add example/tests.html to docs-next ([#5325](https://github.com/mochajs/mocha/issues/5325)) ([6ec5762](https://github.com/mochajs/mocha/commit/6ec5762edd419578e9d3ce2fcc2b8dedcb0caf06))

## [11.2.1](https://github.com/mochajs/mocha/compare/v11.2.0...v11.2.1) (2025-04-10)


### 🩹 Fixes

* switch from ansi-colors to picocolors ([#5323](https://github.com/mochajs/mocha/issues/5323)) ([7c08d09](https://github.com/mochajs/mocha/commit/7c08d0944d2255084bc4415238430b13c90f0df5))


### 📚 Documentation

* fix new website typos, improve readability ([#5312](https://github.com/mochajs/mocha/issues/5312)) ([fbceb19](https://github.com/mochajs/mocha/commit/fbceb19bbdad121f0100ec3434258775bd87aeaf))


### 🧹 Chores

* "force" Netlify to use npm to build new site ([#5319](https://github.com/mochajs/mocha/issues/5319)) ([3a46855](https://github.com/mochajs/mocha/commit/3a46855294f82e58a5a414aed3525e394b82aced))
* Fix tests ([#5320](https://github.com/mochajs/mocha/issues/5320)) ([18699a0](https://github.com/mochajs/mocha/commit/18699a0d668ed2654dd15433f03b74348baf9559))

## [11.2.0](https://github.com/mochajs/mocha/compare/v11.1.0...v11.2.0) (2025-03-17)


### 🌟 Features

* enable reporters to show relative paths of tests ([#5292](https://github.com/mochajs/mocha/issues/5292)) ([81ea666](https://github.com/mochajs/mocha/commit/81ea6667e9286c55ffa67977448b776a23c6da2d))


### 📚 Documentation

* add instructions for API docs ([#5287](https://github.com/mochajs/mocha/issues/5287)) ([b720ec1](https://github.com/mochajs/mocha/commit/b720ec1b3ca630a90f80311da391b2a0cdfead4e))
* add new website using Astro Starlight ([#5246](https://github.com/mochajs/mocha/issues/5246)) ([b1f1cb7](https://github.com/mochajs/mocha/commit/b1f1cb78b655191b7a43dc962b513bf1b076890c))
* improve third-party reporter docs ([#5285](https://github.com/mochajs/mocha/issues/5285)) ([c5a0ef5](https://github.com/mochajs/mocha/commit/c5a0ef523d52d8cab50e4a9b226af3790f54e75f))


### 🧹 Chores

* enabled eslint-plugin-n ([#5280](https://github.com/mochajs/mocha/issues/5280)) ([945d6e3](https://github.com/mochajs/mocha/commit/945d6e3bf5a9de19c3aa26fbdac966a721006b58))
* pin node-lts tests to 22.11.0 ([#5279](https://github.com/mochajs/mocha/issues/5279)) ([664e1f4](https://github.com/mochajs/mocha/commit/664e1f49f7ae214a9666c90f388407e9fa100309))
* replace `fs-extra` with newer `fs` built-ins ([#5284](https://github.com/mochajs/mocha/issues/5284)) ([75dcf8c](https://github.com/mochajs/mocha/commit/75dcf8c6c40ed1ce134ae5e174b6f4c4ca4d8c42))

## [11.1.0](https://github.com/mochajs/mocha/compare/v11.0.2...v11.1.0) (2025-01-02)


### 🌟 Features

* bump yargs to 17 ([#5165](https://github.com/mochajs/mocha/issues/5165)) ([8f1c8d8](https://github.com/mochajs/mocha/commit/8f1c8d888b0104afcd95ca55a517320399755749))
  * Note that this also included a version bump of [`yargs-parser`](http://npmjs.com/package/yargs-parser) from `^20.2.9` to `^21.1.`, which fixed a bug that caused extra quotes in file paths to be removed.
    See [#5341](https://github.com/mochajs/mocha/issues/5341) for more information.
* replace `strip-ansi` with `util.stripVTControlCharacters` ([#5267](https://github.com/mochajs/mocha/issues/5267)) ([3c191c0](https://github.com/mochajs/mocha/commit/3c191c05d9db1e99aec9b600edac2ce10a6b6d71)), closes [#5265](https://github.com/mochajs/mocha/issues/5265)

## [11.0.2](https://github.com/mochajs/mocha/compare/v11.0.1...v11.0.2) (2024-12-09)


### 🩹 Fixes

* catch exceptions setting Error.stackTraceLimit ([#5254](https://github.com/mochajs/mocha/issues/5254)) ([259f8f8](https://github.com/mochajs/mocha/commit/259f8f8ba5709b5d84fa66e17cd10560a11f45c9))
* error handling for unexpected numeric arguments passed to cli ([#5263](https://github.com/mochajs/mocha/issues/5263)) ([210d658](https://github.com/mochajs/mocha/commit/210d658678a2ec3b6f85c59d4b300b4722671099))


### 📚 Documentation

* correct outdated `status: accepting prs` link ([#5268](https://github.com/mochajs/mocha/issues/5268)) ([f729cd0](https://github.com/mochajs/mocha/commit/f729cd09b61bb598409f19b3c76b9e9536812237))
* replace "New in" with "Since" in version annotations ([#5262](https://github.com/mochajs/mocha/issues/5262)) ([6f10d12](https://github.com/mochajs/mocha/commit/6f10d12c6c6dfa4df7d5221a3ce688f687aaf320))

## [11.0.1](https://github.com/mochajs/mocha/compare/v11.0.0...v11.0.1) (2024-12-02)


### 🌟 Features

* bumped glob dependency from 8 to 10 ([#5250](https://github.com/mochajs/mocha/issues/5250)) ([43c3157](https://github.com/mochajs/mocha/commit/43c3157c6ef4f2d4bfecf3ad3a42479fd64187b8))


### 📚 Documentation

* fix examples for `linkPartialObjects` methods ([#5255](https://github.com/mochajs/mocha/issues/5255)) ([34e0e52](https://github.com/mochajs/mocha/commit/34e0e52e047a9119aeae9cb5b660a8438656a1e0))

## [11.0.0](https://github.com/mochajs/mocha/compare/v10.8.2...v11.0.0) (2024-11-11)

### ⚠ BREAKING CHANGES

- adapt new engine range for Mocha 11 ([#5216](https://github.com/mochajs/mocha/issues/5216))

### 🌟 Features

- allow calling hook methods ([#5231](https://github.com/mochajs/mocha/issues/5231)) ([e3da641](https://github.com/mochajs/mocha/commit/e3da641b08bed20f12df524fc64cb9579f980c1e))

### 🩹 Fixes

- adapt new engine range for Mocha 11 ([#5216](https://github.com/mochajs/mocha/issues/5216)) ([80da25a](https://github.com/mochajs/mocha/commit/80da25a4132ca50d3ad35087cb62c9b0f8fc946a))

### 📚 Documentation

- downgrade example/tests chai to 4.5.0 ([#5245](https://github.com/mochajs/mocha/issues/5245)) ([eac87e1](https://github.com/mochajs/mocha/commit/eac87e10f49207a9b388f87d77d198583c6f889a))

## [10.8.2](https://github.com/mochajs/mocha/compare/v10.8.1...v10.8.2) (2024-10-30)

### 🩹 Fixes

- support errors with circular dependencies in object values with --parallel ([#5212](https://github.com/mochajs/mocha/issues/5212)) ([ba0fefe](https://github.com/mochajs/mocha/commit/ba0fefe10b08a689cf49edc3818026938aa3a240))
- test link in html reporter ([#5224](https://github.com/mochajs/mocha/issues/5224)) ([f054acc](https://github.com/mochajs/mocha/commit/f054acc1f60714bbe00ad1ab270fb4977836d045))

### 📚 Documentation

- indicate 'exports' interface does not work in browsers ([#5181](https://github.com/mochajs/mocha/issues/5181)) ([14e640e](https://github.com/mochajs/mocha/commit/14e640ee49718d587779a9594b18f3796c42cf2a))

### 🧹 Chores

- fix docs builds by re-adding eleventy and ignoring gitignore again ([#5240](https://github.com/mochajs/mocha/issues/5240)) ([881e3b0](https://github.com/mochajs/mocha/commit/881e3b0ca2e24284aab2a04f63639a0aa9e0ad1b))

### 🤖 Automation

- **deps:** bump the github-actions group with 1 update ([#5132](https://github.com/mochajs/mocha/issues/5132)) ([e536ab2](https://github.com/mochajs/mocha/commit/e536ab25b308774e3103006c044cb996a2e17c87))

## [10.8.1](https://github.com/mochajs/mocha/compare/v10.8.0...v10.8.1) (2024-10-29)

### 🩹 Fixes

- handle case of invalid package.json with no explicit config ([#5198](https://github.com/mochajs/mocha/issues/5198)) ([f72bc17](https://github.com/mochajs/mocha/commit/f72bc17cb44164bcfff7abc83d0d37d99a061104))
- Typos on mochajs.org ([#5237](https://github.com/mochajs/mocha/issues/5237)) ([d8ca270](https://github.com/mochajs/mocha/commit/d8ca270a960554c9d5c5fbf264e89d668d01ff0d))
- use accurate test links in HTML reporter ([#5228](https://github.com/mochajs/mocha/issues/5228)) ([68803b6](https://github.com/mochajs/mocha/commit/68803b685d55dcccc51fa6ccfd27701cda4e26ed))

## [10.8.0](https://github.com/mochajs/mocha/compare/v10.7.3...v10.8.0) (2024-10-29)

### 🌟 Features

- highlight browser failures ([#5222](https://github.com/mochajs/mocha/issues/5222)) ([8ff4845](https://github.com/mochajs/mocha/commit/8ff48453a8b12d9cacf56b0c0c544c8256af64c7))

### 🩹 Fixes

- remove `:is()` from `mocha.css` to support older browsers ([#5225](https://github.com/mochajs/mocha/issues/5225)) ([#5227](https://github.com/mochajs/mocha/issues/5227)) ([0a24b58](https://github.com/mochajs/mocha/commit/0a24b58477ea8ad146afc798930800b02c08790a))

### 📚 Documentation

- add `SECURITY.md` pointing to Tidelift ([#5210](https://github.com/mochajs/mocha/issues/5210)) ([bd7e63a](https://github.com/mochajs/mocha/commit/bd7e63a1f6d98535ce1ed1ecdb57b3e4db8a33c5))
- adopt Collective Funds Guidelines 0.1 ([#5199](https://github.com/mochajs/mocha/issues/5199)) ([2b03d86](https://github.com/mochajs/mocha/commit/2b03d865eec63d627ff229e07d777f25061260d4))
- update README, LICENSE and fix outdated ([#5197](https://github.com/mochajs/mocha/issues/5197)) ([1203e0e](https://github.com/mochajs/mocha/commit/1203e0ed739bbbf12166078738357fdb29a8c000))

### 🧹 Chores

- fix npm scripts on windows ([#5219](https://github.com/mochajs/mocha/issues/5219)) ([1173da0](https://github.com/mochajs/mocha/commit/1173da0bf614e8d2a826687802ee8cbe8671ccf1))
- remove trailing whitespace in SECURITY.md ([7563e59](https://github.com/mochajs/mocha/commit/7563e59ae3c78ada305d26eadb86998ab54342da))

## [10.7.3](https://github.com/mochajs/mocha/compare/v10.7.2...v10.7.3) (2024-08-09)

### 🩹 Fixes

- make release-please build work ([#5194](https://github.com/mochajs/mocha/issues/5194)) ([afd66ef](https://github.com/mochajs/mocha/commit/afd66ef3df20fab51ce38b97216c09108e5c2bfd))

## [10.7.2](https://github.com/mochajs/mocha/compare/v10.7.1...v10.7.2) (2024-08-06)

### 📚 Documentation

- improve filtering ([#5191](https://github.com/mochajs/mocha/issues/5191)) ([1ac5b55](https://github.com/mochajs/mocha/commit/1ac5b552e3f32694d349023cb7f6196ba92b180e))

### 🧹 Chores

- fix failing markdown linting ([#5193](https://github.com/mochajs/mocha/issues/5193)) ([7e7a2ec](https://github.com/mochajs/mocha/commit/7e7a2ecb9bf8daba7e885a880bd8314b7b6fe07d))

## [10.7.1](https://github.com/mochajs/mocha/compare/v10.7.0...v10.7.1) (2024-08-06)

### 🩹 Fixes

- crash with --parallel and --retries both enabled ([#5173](https://github.com/mochajs/mocha/issues/5173)) ([d7013dd](https://github.com/mochajs/mocha/commit/d7013ddb1099cfafe66a1af9640370998290e62c))

### 🧹 Chores

- add knip to validate included dependencies ([5c2989f](https://github.com/mochajs/mocha/commit/5c2989fcc7ae17618d9db16d7c99e23dfb1d38ee))
- more fully remove assetgraph-builder and canvas ([#5175](https://github.com/mochajs/mocha/issues/5175)) ([1883c41](https://github.com/mochajs/mocha/commit/1883c41a49fad009bd407efc1bece3a5c75fd10a))
- replace `nps` with npm scripts ([#5128](https://github.com/mochajs/mocha/issues/5128)) ([c44653a](https://github.com/mochajs/mocha/commit/c44653a3a04b8418ec24a942fa7513a4673f3667)), closes [#5126](https://github.com/mochajs/mocha/issues/5126)

## 10.7.0 / 2024-07-20

### :tada: Enhancements

- [#4771](https://github.com/mochajs/mocha/pull/4771) feat: add option to not fail on failing test suite ([**@ilgonmic**](https://github.com/ilgonmic))

## 10.6.1 / 2024-07-20

### :bug: Fixes

- [#3825](https://github.com/mochajs/mocha/pull/3825) fix: do not exit when only unref'd timer is present in test code ([**@boneskull**](https://github.com/boneskull))
- [#5040](https://github.com/mochajs/mocha/pull/5040) fix: support canonical module ([**@JacobLey**](https://github.com/JacobLey))

## 10.6.0 / 2024-07-02

### :tada: Enhancements

- [#5150](https://github.com/mochajs/mocha/pull/5150) feat: allow ^ versions for character encoding packages ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5151](https://github.com/mochajs/mocha/pull/5151) feat: allow ^ versions for file matching packages ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5152](https://github.com/mochajs/mocha/pull/5152) feat: allow ^ versions for yargs packages ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5153](https://github.com/mochajs/mocha/pull/5153) feat: allow ^ versions for data serialization packages ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5154](https://github.com/mochajs/mocha/pull/5154) feat: allow ^ versions for miscellaneous packages ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))

## 10.5.2 / 2024-06-25

### :bug: Fixes

- [#5032](https://github.com/mochajs/mocha/pull/5032) fix: better tracking of seen objects in error serialization ([**@sam-super**](https://github.com/sam-super))

## 10.5.1 / 2024-06-24

### :bug: Fixes

- [#5086](https://github.com/mochajs/mocha/pull/5086) fix: Add error handling for nonexistent file case with --file option ([**@khoaHyh**](https://github.com/khoaHyh))

## 10.5.0 / 2024-06-24

### :tada: Enhancements

- [#5015](https://github.com/mochajs/mocha/pull/5015) feat: use \<progress> and \<svg> for browser progress indicator instead of \<canvas> ([**@yourWaifu**](https://github.com/yourWaifu))
- [#5143](https://github.com/mochajs/mocha/pull/5143) feat: allow using any 3.x chokidar dependencies ([**@simhnna**](https://github.com/simhnna))
- [#4835](https://github.com/mochajs/mocha/pull/4835) feat: add MOCHA\_OPTIONS env variable ([**@icholy**](https://github.com/icholy))

### :bug: Fixes

- [#5107](https://github.com/mochajs/mocha/pull/5107) fix: include stack in browser uncaught error reporting ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))

### :nut\_and\_bolt: Other

- [#5110](https://github.com/mochajs/mocha/pull/5110) chore: switch two-column list styles to be opt-in ([**@marjys**](https://github.com/marjys))
- [#5135](https://github.com/mochajs/mocha/pull/5135) chore: fix some typos in comments ([**@StevenMia**](https://github.com/StevenMia))
- [#5130](https://github.com/mochajs/mocha/pull/5130) chore: rename 'master' to 'main' in docs and tooling ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))

## 10.4.0 / 2024-03-26

### :tada: Enhancements

- [#4829](https://github.com/mochajs/mocha/pull/4829) feat: include `.cause` stacks in the error stack traces ([**@voxpelli**](https://github.com/voxpelli))
- [#4985](https://github.com/mochajs/mocha/pull/4985) feat: add file path to xunit reporter ([**@bmish**](https://github.com/bmish))

### :bug: Fixes

- [#5074](https://github.com/mochajs/mocha/pull/5074) fix: harden error handling in `lib/cli/run.js` ([**@stalet**](https://github.com/stalet))

### :nut\_and\_bolt: Other

- [#5077](https://github.com/mochajs/mocha/pull/5077) chore: add mtfoley/pr-compliance-action ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5060](https://github.com/mochajs/mocha/pull/5060) chore: migrate ESLint config to flat config ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5095](https://github.com/mochajs/mocha/pull/5095) chore: revert [#5069](https://github.com/mochajs/mocha/pull/5069) to restore Netlify builds ([**@voxpelli**](https://github.com/voxpelli))
- [#5097](https://github.com/mochajs/mocha/pull/5097) docs: add sponsored to sponsorship link rels ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5093](https://github.com/mochajs/mocha/pull/5093) chore: add 'status: in triage' label to issue templates and docs ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5083](https://github.com/mochajs/mocha/pull/5083) docs: fix CHANGELOG.md headings to start with a root-level h1 ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5100](https://github.com/mochajs/mocha/pull/5100) chore: fix header generation and production build crashes  ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5104](https://github.com/mochajs/mocha/pull/5104) chore: bump ESLint ecmaVersion to 2020 ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5116](https://github.com/mochajs/mocha/pull/5116) fix: eleventy template builds crash with 'unexpected token at ": string, msg..."' ([**@LcsK**](https://github.com/LcsK))
- [#4869](https://github.com/mochajs/mocha/pull/4869) docs: fix documentation concerning glob expansion on UNIX ([**@binki**](https://github.com/binki))
- [#5122](https://github.com/mochajs/mocha/pull/5122) test: fix xunit integration test ([**@voxpelli**](https://github.com/voxpelli))
- [#5123](https://github.com/mochajs/mocha/pull/5123) chore: activate dependabot for workflows ([**@voxpelli**](https://github.com/voxpelli))
- [#5125](https://github.com/mochajs/mocha/pull/5125) build(deps): bump the github-actions group with 2 updates ([**@dependabot**](https://github.com/dependabot))

## 10.3.0 / 2024-02-08

This is a stable release equivalent to [10.30.0-prerelease](#1030-prerelease--2024-01-18).

## 10.3.0-prerelease / 2024-01-18

This is a prerelease version to test our ability to release.
Other than removing or updating dependencies, it contains no intended user-facing changes.

### :nut\_and\_bolt: Other

- [#5069](https://github.com/mochajs/mocha/pull/5069): chore: remove unnecessary canvas dependency ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5068](https://github.com/mochajs/mocha/pull/5068): fix: add alt text to Built with Netlify badge ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5056](https://github.com/mochajs/mocha/pull/5056): chore: inline nyan reporter's write function ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5050](https://github.com/mochajs/mocha/pull/5050): docs: touchups to labels and a template title post-revamp ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5038](https://github.com/mochajs/mocha/pull/5038): docs: overhaul contributing and maintenance docs for end-of-year 2023 ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5029](https://github.com/mochajs/mocha/pull/5029): chore: remove stale workflow ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#5024](https://github.com/mochajs/mocha/pull/5024): chore: remove nanoid as dependency ([**@Uzlopak**](https://github.com/Uzlopak))
- [#5023](https://github.com/mochajs/mocha/pull/5023): chore: remove touch as dev dependency ([**@Uzlopak**](https://github.com/Uzlopak))
- [#5022](https://github.com/mochajs/mocha/pull/5022): chore: remove uuid dev dependency ([**@Uzlopak**](https://github.com/Uzlopak))
- [#5021](https://github.com/mochajs/mocha/pull/5021): update can-i-use ([**@Uzlopak**](https://github.com/Uzlopak))
- [#5020](https://github.com/mochajs/mocha/pull/5020): chore: fix the ci ([**@Uzlopak**](https://github.com/Uzlopak))
- [#4974](https://github.com/mochajs/mocha/pull/4974): Add Node v19 to test matrix ([**@juergba**](https://github.com/juergba))
- [#4970](https://github.com/mochajs/mocha/pull/4970): fix [#4837](https://github.com/mochajs/mocha/issues/4837) Update glob due to vulnerability in dep ([**@jb2311**](https://github.com/jb2311))
- [#4962](https://github.com/mochajs/mocha/pull/4962): Fix deprecated warn gh actions ([**@outsideris**](https://github.com/outsideris))
- [#4927](https://github.com/mochajs/mocha/pull/4927): docs: use mocha.js instead of mocha in the example run ([**@nikolas**](https://github.com/nikolas))
- [#4918](https://github.com/mochajs/mocha/pull/4918): docs: fix fragment ID for yargs' "extends" documentation ([**@Spencer-Doak**](https://github.com/Spencer-Doak))
- [#4886](https://github.com/mochajs/mocha/pull/4886): docs: fix jsdoc return type of titlePath method ([**@F3n67u**](https://github.com/F3n67u))

## 10.2.0 / 2022-12-11

### :tada: Enhancements

- [#4945](https://github.com/mochajs/mocha/issues/4945): API: add possibility to decorate ESM name before import ([**@j0tunn**](https://github.com/j0tunn))

### :bug: Fixes

- [#4946](https://github.com/mochajs/mocha/issues/4946): Browser: color of failed test icon ([**@kleisauke**](https://github.com/kleisauke))

### :book: Documentation

- [#4944](https://github.com/mochajs/mocha/issues/4944): Remove duplicated header ([**@PauloGoncalvesBH**](https://github.com/PauloGoncalvesBH))

## 10.1.0 / 2022-10-16

### :tada: Enhancements

- [#4896](https://github.com/mochajs/mocha/issues/4896): Browser: add support for `prefers-color-scheme: dark` ([**@greggman**](https://github.com/greggman))

### :nut\_and\_bolt: Other

- [#4912](https://github.com/mochajs/mocha/issues/4912): Browser: increase contrast for replay buttons ([**@JoshuaKGoldberg**](https://github.com/JoshuaKGoldberg))
- [#4905](https://github.com/mochajs/mocha/issues/4905): Use standard `Promise.allSettled` instead of polyfill ([**@outsideris**](https://github.com/outsideris))
- [#4899](https://github.com/mochajs/mocha/issues/4899): Upgrade official GitHub actions to latest ([**@ddzz**](https://github.com/ddzz))
- [#4770](https://github.com/mochajs/mocha/issues/4770): Fix regex in function `clean`([**@yetingli**](https://github.com/yetingli))

## 10.0.0 / 2022-05-01

### :boom: Breaking Changes

- [#4845](https://github.com/mochajs/mocha/issues/4845): **Drop Node.js v12.x support** ([**@juergba**](https://github.com/juergba))

- [#4848](https://github.com/mochajs/mocha/issues/4848): Drop Internet-Explorer-11 support ([**@juergba**](https://github.com/juergba))

- [#4857](https://github.com/mochajs/mocha/issues/4857): Drop AMD/RequireJS support ([**@juergba**](https://github.com/juergba))

- [#4866](https://github.com/mochajs/mocha/issues/4866): Drop Growl notification support ([**@juergba**](https://github.com/juergba))

- [#4863](https://github.com/mochajs/mocha/issues/4863): Rename executable `bin/mocha` to `bin/mocha.js` ([**@juergba**](https://github.com/juergba))

- [#4865](https://github.com/mochajs/mocha/issues/4865): `--ignore` option in Windows: upgrade Minimatch ([**@juergba**](https://github.com/juergba))

- [#4861](https://github.com/mochajs/mocha/issues/4861): Remove deprecated `Runner` signature ([**@juergba**](https://github.com/juergba))

### :nut\_and\_bolt: Other

- [#4878](https://github.com/mochajs/mocha/issues/4878): Update production dependencies ([**@juergba**](https://github.com/juergba))

- [#4876](https://github.com/mochajs/mocha/issues/4876): Add Node.js v18 to CI test matrix ([**@outsideris**](https://github.com/outsideris))

- [#4852](https://github.com/mochajs/mocha/issues/4852): Replace deprecated `String.prototype.substr()` ([**@CommanderRoot**](https://github.com/CommanderRoot))

Also thanks to [**@ea2305**](https://github.com/ea2305) and [**@SukkaW**](https://github.com/SukkaW) for improvements to our documentation.

## 9.2.2 / 2022-03-11

### :bug: Fixes

- [#4842](https://github.com/mochajs/mocha/issues/4842): Loading of reporter throws wrong error ([**@juergba**](https://github.com/juergba))

- [#4839](https://github.com/mochajs/mocha/issues/4839): `dry-run`: prevent potential call-stack crash ([**@juergba**](https://github.com/juergba))

### :nut\_and\_bolt: Other

- [#4843](https://github.com/mochajs/mocha/issues/4843): Update production dependencies ([**@juergba**](https://github.com/juergba))

## 9.2.1 / 2022-02-19

### :bug: Fixes

- [#4832](https://github.com/mochajs/mocha/issues/4832): Loading of config files throws wrong error ([**@juergba**](https://github.com/juergba))

- [#4799](https://github.com/mochajs/mocha/issues/4799): Reporter: configurable `maxDiffSize` reporter-option ([**@norla**](https://github.com/norla))

## 9.2.0 / 2022-01-24

### :tada: Enhancements

- [#4813](https://github.com/mochajs/mocha/issues/4813): Parallel: assign each worker a worker-id ([**@forty**](https://github.com/forty))

### :nut\_and\_bolt: Other

- [#4818](https://github.com/mochajs/mocha/issues/4818): Update production dependencies ([**@juergba**](https://github.com/juergba))

## 9.1.4 / 2022-01-14

### :bug: Fixes

- [#4807](https://github.com/mochajs/mocha/issues/4807): `import` throws wrong error if loader is used ([**@giltayar**](https://github.com/giltayar))

### :nut\_and\_bolt: Other

- [#4777](https://github.com/mochajs/mocha/issues/4777): Add Node v17 to CI test matrix ([**@outsideris**](https://github.com/outsideris))

## 9.1.3 / 2021-10-15

### :bug: Fixes

- [#4769](https://github.com/mochajs/mocha/issues/4769): Browser: re-enable `bdd` ES6 style import ([**@juergba**](https://github.com/juergba))

### :nut\_and\_bolt: Other

- [#4764](https://github.com/mochajs/mocha/issues/4764): Revert deprecation of `EVENT_SUITE_ADD_*` events ([**@beatfactor**](https://github.com/beatfactor))

## 9.1.2 / 2021-09-25

### :bug: Fixes

- [#4746](https://github.com/mochajs/mocha/issues/4746): Browser: stop using all global vars in `browser-entry.js` ([**@PaperStrike**](https://github.com/PaperStrike))

### :nut\_and\_bolt: Other

- [#4754](https://github.com/mochajs/mocha/issues/4754): Remove dependency wide-align ([**@juergba**](https://github.com/juergba))
- [#4736](https://github.com/mochajs/mocha/issues/4736): ESM: remove code for Node versions <10 ([**@juergba**](https://github.com/juergba))

## 9.1.1 / 2021-08-28

### :bug: Fixes

- [#4623](https://github.com/mochajs/mocha/issues/4623): `XUNIT` and `JSON` reporter crash in `parallel` mode ([**@curtisman**](https://github.com/curtisman))

## 9.1.0 / 2021-08-20

### :tada: Enhancements

- [#4716](https://github.com/mochajs/mocha/issues/4716): Add new option `--fail-zero` ([**@juergba**](https://github.com/juergba))
- [#4691](https://github.com/mochajs/mocha/issues/4691): Add new option `--node-option` ([**@juergba**](https://github.com/juergba))
- [#4607](https://github.com/mochajs/mocha/issues/4607): Add output option to `JSON` reporter ([**@dorny**](https://github.com/dorny))

## 9.0.3 / 2021-07-25

### :bug: Fixes

- [#4702](https://github.com/mochajs/mocha/issues/4702): Error rethrow from cwd-relative path while loading `.mocharc.js` ([**@kirill-golovan**](https://github.com/kirill-golovan))

- [#4688](https://github.com/mochajs/mocha/issues/4688): Usage of custom interface in parallel mode ([**@juergba**](https://github.com/juergba))

- [#4687](https://github.com/mochajs/mocha/issues/4687): ESM: don't swallow `MODULE_NOT_FOUND` errors in case of `type:module` ([**@giltayar**](https://github.com/giltayar))

## 9.0.2 / 2021-07-03

### :bug: Fixes

- [#4668](https://github.com/mochajs/mocha/issues/4668): ESM: make `--require <dir>` work with new `import`-first loading ([**@giltayar**](https://github.com/giltayar))

### :nut\_and\_bolt: Other

- [#4674](https://github.com/mochajs/mocha/issues/4674): Update production dependencies ([**@juergba**](https://github.com/juergba))

## 9.0.1 / 2021-06-18

### :nut\_and\_bolt: Other

- [#4657](https://github.com/mochajs/mocha/issues/4657): Browser: add separate bundle for modern browsers ([**@juergba**](https://github.com/juergba))

We added a separate browser bundle `mocha-es2018.js` in javascript ES2018, as we skipped the transpilation down to ES5. This is an **experimental step towards freezing Mocha's support of IE11**.

- [#4653](https://github.com/mochajs/mocha/issues/4653): ESM: proper version check in `hasStableEsmImplementation` ([**@alexander-fenster**](https://github.com/alexander-fenster))

## 9.0.0 / 2021-06-07

### :boom: Breaking Changes

- [#4633](https://github.com/mochajs/mocha/issues/4633): **Drop Node.js v10.x support** ([**@juergba**](https://github.com/juergba))

- [#4635](https://github.com/mochajs/mocha/issues/4635): `import`-first loading of test files ([**@giltayar**](https://github.com/giltayar))

**Mocha is going ESM-first!** This means that it will now use ESM `import(test_file)` to load the test files, instead of the CommonJS `require(test_file)`. This is not a problem, as `import` can also load most files that `require` does. In the rare cases where this fails, it will fallback to `require(...)`. This ESM-first approach is the next step in Mocha's ESM migration, and allows ESM loaders to load and transform the test file.

- [#4636](https://github.com/mochajs/mocha/issues/4636): Remove deprecated `utils.lookupFiles()` ([**@juergba**](https://github.com/juergba))

- [#4638](https://github.com/mochajs/mocha/issues/4638): Limit the size of `actual`/`expected` for `diff` generation ([**@juergba**](https://github.com/juergba))

- [#4389](https://github.com/mochajs/mocha/issues/4389): Refactoring: Consuming log-symbols alternate to code for win32 in reporters/base ([**@MoonSupport**](https://github.com/MoonSupport))

### :tada: Enhancements

- [#4640](https://github.com/mochajs/mocha/issues/4640): Add new option `--dry-run` ([**@juergba**](https://github.com/juergba))

### :bug: Fixes

- [#4128](https://github.com/mochajs/mocha/issues/4128): Fix: control stringification of error message ([**@syeutyu**](https://github.com/syeutyu))

### :nut\_and\_bolt: Other

- [#4646](https://github.com/mochajs/mocha/issues/4646): Deprecate `Runner(suite: Suite, delay: boolean)` signature ([**@juergba**](https://github.com/juergba))
- [#4643](https://github.com/mochajs/mocha/issues/4643): Update production dependencies ([**@juergba**](https://github.com/juergba))

## 8.4.0 / 2021-05-07

### :tada: Enhancements

- [#4502](https://github.com/mochajs/mocha/issues/4502): CLI file parsing errors now have error codes ([**@evaline-ju**](https://github.com/evaline-ju))

### :bug: Fixes

- [#4614](https://github.com/mochajs/mocha/issues/4614): Watch: fix crash when reloading files ([**@outsideris**](https://github.com/outsideris))

### :book: Documentation

- [#4630](https://github.com/mochajs/mocha/issues/4630): Add `options.require` to Mocha constructor for `root hook` plugins on parallel runs ([**@juergba**](https://github.com/juergba))
- [#4617](https://github.com/mochajs/mocha/issues/4617): Dynamically generating tests with `top-level await` and ESM test files ([**@juergba**](https://github.com/juergba))
- [#4608](https://github.com/mochajs/mocha/issues/4608): Update default file extensions ([**@outsideris**](https://github.com/outsideris))

Also thanks to [**@outsideris**](https://github.com/outsideris) for various improvements on our GH actions workflows.

## 8.3.2 / 2021-03-12

### :bug: Fixes

- [#4599](https://github.com/mochajs/mocha/issues/4599): Fix regression in `require` interface ([**@alexander-fenster**](https://github.com/alexander-fenster))

### :book: Documentation

- [#4601](https://github.com/mochajs/mocha/issues/4601): Add build to GH actions run ([**@christian-bromann**](https://github.com/christian-bromann))
- [#4596](https://github.com/mochajs/mocha/issues/4596): Filter active sponsors/backers ([**@juergba**](https://github.com/juergba))
- [#4225](https://github.com/mochajs/mocha/issues/4225): Update config file examples ([**@pkuczynski**](https://github.com/pkuczynski))

## 8.3.1 / 2021-03-06

### :bug: Fixes

- [#4577](https://github.com/mochajs/mocha/issues/4577): Browser: fix `EvalError` caused by regenerator-runtime ([**@snoack**](https://github.com/snoack))
- [#4574](https://github.com/mochajs/mocha/issues/4574): ESM: allow `import` from mocha in parallel mode ([**@nicojs**](https://github.com/nicojs))

## 8.3.0 / 2021-02-11

### :tada: Enhancements

- [#4506](https://github.com/mochajs/mocha/issues/4506): Add error code for test timeout errors ([**@boneskull**](https://github.com/boneskull))
- [#4112](https://github.com/mochajs/mocha/issues/4112): Add BigInt support to stringify util function ([**@JosejeSinohui**](https://github.com/JosejeSinohui))

### :bug: Fixes

- [#4557](https://github.com/mochajs/mocha/issues/4557): Add file location when SyntaxError happens in ESM ([**@giltayar**](https://github.com/giltayar))
- [#4521](https://github.com/mochajs/mocha/issues/4521): Fix `require` error when bundling Mocha with Webpack ([**@devhazem**](https://github.com/devhazem))

### :book: Documentation

- [#4507](https://github.com/mochajs/mocha/issues/4507): Add support for typescript-style docstrings ([**@boneskull**](https://github.com/boneskull))
- [#4503](https://github.com/mochajs/mocha/issues/4503): Add GH Actions workflow status badge ([**@outsideris**](https://github.com/outsideris))
- [#4494](https://github.com/mochajs/mocha/issues/4494): Add example of generating tests dynamically with a closure ([**@maxwellgerber**](https://github.com/maxwellgerber))

### :nut\_and\_bolt: Other

- [#4556](https://github.com/mochajs/mocha/issues/4556): Upgrade all dependencies to latest stable ([**@AviVahl**](https://github.com/AviVahl))
- [#4543](https://github.com/mochajs/mocha/issues/4543): Update dependencies yargs and yargs-parser ([**@juergba**](https://github.com/juergba))

Also thanks to [**@outsideris**](https://github.com/outsideris) and [**@HyunSangHan**](https://github.com/HyunSangHan) for various fixes to our website and documentation.

## 8.2.1 / 2020-11-02

Fixed stuff.

### :bug: Fixes

- [#4489](https://github.com/mochajs/mocha/issues/4489): Fix problematic handling of otherwise-unhandled `Promise` rejections and erroneous "`done()` called twice" errors ([**@boneskull**](https://github.com/boneskull))
- [#4496](https://github.com/mochajs/mocha/issues/4496): Avoid `MaxListenersExceededWarning` in watch mode ([**@boneskull**](https://github.com/boneskull))

Also thanks to [**@akeating**](https://github.com/akeating) for a documentation fix!

## 8.2.0 / 2020-10-16

The major feature added in v8.2.0 is addition of support for [*global fixtures*](https://mochajs.org/#global-fixtures).

While Mocha has always had the ability to run setup and teardown via a hook (e.g., a `before()` at the top level of a test file) when running tests in serial, Mocha v8.0.0 added support for parallel runs. Parallel runs are *incompatible* with this strategy; e.g., a top-level `before()` would only run for the file in which it was defined.

With [global fixtures](https://mochajs.org/#global-fixtures), Mocha can now perform user-defined setup and teardown *regardless* of mode, and these fixtures are guaranteed to run *once and only once*. This holds for parallel mode, serial mode, and even "watch" mode (the teardown will run once you hit Ctrl-C, just before Mocha finally exits). Tasks such as starting and stopping servers are well-suited to global fixtures, but not sharing resources--global fixtures do *not* share context with your test files (but they do share context with each other).

Here's a short example of usage:

```js
// fixtures.js

// can be async or not
exports.mochaGlobalSetup = async function () {
  this.server = await startSomeServer({port: process.env.TEST_PORT});
  console.log(`server running on port ${this.server.port}`);
};

exports.mochaGlobalTeardown = async function () {
  // the context (`this`) is shared, but not with the test files
  await this.server.stop();
  console.log(`server on port ${this.server.port} stopped`);
};

// this file can contain root hook plugins as well!
// exports.mochaHooks = { ... }
```

Fixtures are loaded with `--require`, e.g., `mocha --require fixtures.js`.

For detailed information, please see the [documentation](https://mochajs.org/#global-fixtures) and this handy-dandy [flowchart](https://mochajs.org/#test-fixture-decision-tree-wizard-thing) to help understand the differences between hooks, root hook plugins, and global fixtures (and when you should use each).

### :tada: Enhancements

- [#4308](https://github.com/mochajs/mocha/issues/4308): Support run-once [global setup & teardown fixtures](https://mochajs.org/#global-fixtures) ([**@boneskull**](https://github.com/boneskull))
- [#4442](https://github.com/mochajs/mocha/issues/4442): Multi-part extensions (e.g., `test.js`) now usable with `--extension` option ([**@jordanstephens**](https://github.com/jordanstephens))
- [#4472](https://github.com/mochajs/mocha/issues/4472): Leading dots (e.g., `.js`, `.test.js`) now usable with `--extension` option ([**@boneskull**](https://github.com/boneskull))
- [#4434](https://github.com/mochajs/mocha/issues/4434): Output of `json` reporter now contains `speed` ("fast"/"medium"/"slow") property ([**@wwhurin**](https://github.com/wwhurin))
- [#4464](https://github.com/mochajs/mocha/issues/4464): Errors thrown by serializer in parallel mode now have error codes ([**@evaline-ju**](https://github.com/evaline-ju))

*For implementors of custom reporters:*

- [#4409](https://github.com/mochajs/mocha/issues/4409): Parallel mode and custom reporter improvements ([**@boneskull**](https://github.com/boneskull)):
  - Support custom worker-process-only reporters (`Runner.prototype.workerReporter()`); reporters should subclass `ParallelBufferedReporter` in `mocha/lib/nodejs/reporters/parallel-buffered`
  - Allow opt-in of object reference matching for "sufficiently advanced" custom reporters (`Runner.prototype.linkPartialObjects()`); use if strict object equality is needed when consuming `Runner` event data
  - Enable detection of parallel mode (`Runner.prototype.isParallelMode()`)

### :bug: Fixes

- [#4476](https://github.com/mochajs/mocha/issues/4476): Workaround for profoundly bizarre issue affecting `npm` v6.x causing some of Mocha's deps to be installed when `mocha` is present in a package's `devDependencies` and `npm install --production` is run the package's working copy ([**@boneskull**](https://github.com/boneskull))
- [#4465](https://github.com/mochajs/mocha/issues/4465): Worker processes guaranteed (as opposed to "very likely") to exit before Mocha does; fixes a problem when using `nyc` with Mocha in parallel mode ([**@boneskull**](https://github.com/boneskull))
- [#4419](https://github.com/mochajs/mocha/issues/4419): Restore `lookupFiles()` in `mocha/lib/utils`, which was broken/missing in Mocha v8.1.0; it now prints a deprecation warning (use `const {lookupFiles} = require('mocha/lib/cli')` instead) ([**@boneskull**](https://github.com/boneskull))

Thanks to [**@AviVahl**](https://github.com/AviVahl), [**@donghoon-song**](https://github.com/donghoon-song), [**@ValeriaVG**](https://github.com/ValeriaVG), [**@znarf**](https://github.com/znarf), [**@sujin-park**](https://github.com/sujin-park), and [**@majecty**](https://github.com/majecty) for other helpful contributions!

## 8.1.3 / 2020-08-28

### :bug: Fixes

- [#4425](https://github.com/mochajs/mocha/issues/4425): Restore `Mocha.utils.lookupFiles()` and Webpack compatibility (both broken since v8.1.0); `Mocha.utils.lookupFiles()` is now **deprecated** and will be removed in the next major revision of Mocha; use `require('mocha/lib/cli').lookupFiles` instead ([**@boneskull**](https://github.com/boneskull))

## 8.1.2 / 2020-08-25

### :bug: Fixes

- [#4418](https://github.com/mochajs/mocha/issues/4418): Fix command-line flag incompatibility in forthcoming Node.js v14.9.0 ([**@boneskull**](https://github.com/boneskull))
- [#4401](https://github.com/mochajs/mocha/issues/4401): Fix missing global variable in browser ([**@irrationnelle**](https://github.com/irrationnelle))

### :lock: Security Fixes

- [#4396](https://github.com/mochajs/mocha/issues/4396): Update many dependencies ([**@GChuf**](https://github.com/GChuf))

### :book: Documentation

- Various fixes by [**@sujin-park**](https://github.com/sujin-park), [**@wwhurin**](https://github.com/wwhurin) & [**@Donghoon759**](https://github.com/Donghoon759)

## 8.1.1 / 2020-08-04

### :bug: Fixes

- [#4394](https://github.com/mochajs/mocha/issues/4394): Fix regression wherein certain reporters did not correctly detect terminal width ([**@boneskull**](https://github.com/boneskull))

## 8.1.0 / 2020-07-30

In this release, Mocha now builds its browser bundle with Rollup and Babel, which will provide the project's codebase more flexibility and consistency.

While we've been diligent about backwards compatibility, it's *possible* consumers of the browser bundle will encounter differences (other than an increase in the bundle size). If you *do* encounter an issue with the build, please [report it here](https://github.com/mochajs/mocha/issues/new?labels=unconfirmed-bug\&template=bug_report.md\&title=).

This release **does not** drop support for IE11.

Other community contributions came from [**@Devjeel**](https://github.com/Devjeel), [**@Harsha509**](https://github.com/Harsha509) and [**@sharath2106**](https://github.com/sharath2106). *Thank you* to everyone who contributed to this release!

> Do you read Korean? See [this guide to running parallel tests in Mocha](https://blog.outsider.ne.kr/1489), translated by our maintainer, [**@outsideris**](https://github.com/outsideris).

### :tada: Enhancements

- [#4287](https://github.com/mochajs/mocha/issues/4287): Use background colors with inline diffs for better visual distinction ([**@michael-brade**](https://github.com/michael-brade))

### :bug: Fixes

- [#4328](https://github.com/mochajs/mocha/issues/4328): Fix "watch" mode when Mocha run in parallel ([**@boneskull**](https://github.com/boneskull))
- [#4382](https://github.com/mochajs/mocha/issues/4382): Fix root hook execution in "watch" mode ([**@indieisaconcept**](https://github.com/indieisaconcept))
- [#4383](https://github.com/mochajs/mocha/issues/4383): Consistent auto-generated hook titles ([**@cspotcode**](https://github.com/cspotcode))
- [#4359](https://github.com/mochajs/mocha/issues/4359): Better errors when running `mocha init` ([**@boneskull**](https://github.com/boneskull))
- [#4341](https://github.com/mochajs/mocha/issues/4341): Fix weirdness when using `delay` option in browser ([**@craigtaub**](https://github.com/craigtaub))

### :lock: Security Fixes

- [#4378](https://github.com/mochajs/mocha/issues/4378), [#4333](https://github.com/mochajs/mocha/issues/4333): Update [javascript-serialize](https://npm.im/javascript-serialize) ([**@martinoppitz**](https://github.com/martinoppitz), [**@wnghdcjfe**](https://github.com/wnghdcjfe))
- [#4354](https://github.com/mochajs/mocha/issues/4354): Update [yargs-unparser](https://npm.im/yargs-unparser) ([**@martinoppitz**](https://github.com/martinoppitz))

### :book: Documentation & Website

- [#4173](https://github.com/mochajs/mocha/issues/4173): Document how to use `--enable-source-maps` with Mocha ([**@bcoe**](https://github.com/bcoe))
- [#4343](https://github.com/mochajs/mocha/issues/4343): Clean up some API docs ([**@craigtaub**](https://github.com/craigtaub))
- [#4318](https://github.com/mochajs/mocha/issues/4318): Sponsor images are now self-hosted ([**@Munter**](https://github.com/Munter))

### :nut\_and\_bolt: Other

- [#4293](https://github.com/mochajs/mocha/issues/4293): Use Rollup and Babel in build pipeline; add source map to published files ([**@Munter**](https://github.com/Munter))

## 8.0.1 / 2020-06-10

The obligatory patch after a major.

### :bug: Fixes

- [#4328](https://github.com/mochajs/mocha/issues/4328): Fix `--parallel` when combined with `--watch` ([**@boneskull**](https://github.com/boneskull))

## 8.0.0 / 2020-06-10

In this major release, Mocha adds the ability to *run tests in parallel*. Better late than never! Please note the **breaking changes** detailed below.

Let's welcome [**@giltayar**](https://github.com/giltayar) and [**@nicojs**](https://github.com/nicojs) to the maintenance team!

### :boom: Breaking Changes

- [#4164](https://github.com/mochajs/mocha/issues/4164): **Mocha v8.0.0 now requires Node.js v10.12.0 or newer.** Mocha no longer supports the Node.js v8.x line ("Carbon"), which entered End-of-Life at the end of 2019 ([**@UlisesGascon**](https://github.com/UlisesGascon))

- [#4175](https://github.com/mochajs/mocha/issues/4175): Having been deprecated with a warning since v7.0.0, **`mocha.opts` is no longer supported** ([**@juergba**](https://github.com/juergba))

  :sparkles: **WORKAROUND:** Replace `mocha.opts` with a [configuration file](https://mochajs.org/#configuring-mocha-nodejs).

- [#4260](https://github.com/mochajs/mocha/issues/4260): Remove `enableTimeout()` (`this.enableTimeout()`) from the context object ([**@craigtaub**](https://github.com/craigtaub))

  :sparkles: **WORKAROUND:** Replace usage of `this.enableTimeout(false)` in your tests with `this.timeout(0)`.

- [#4315](https://github.com/mochajs/mocha/issues/4315): The `spec` option no longer supports a comma-delimited list of files ([**@juergba**](https://github.com/juergba))

  :sparkles: **WORKAROUND**: Use an array instead (e.g., `"spec": "foo.js,bar.js"` becomes `"spec": ["foo.js", "bar.js"]`).

- [#4309](https://github.com/mochajs/mocha/issues/4309): Drop support for Node.js v13.x line, which is now End-of-Life ([**@juergba**](https://github.com/juergba))

- [#4282](https://github.com/mochajs/mocha/issues/4282): `--forbid-only` will throw an error even if exclusive tests are avoided via `--grep` or other means ([**@arvidOtt**](https://github.com/arvidOtt))

- [#4223](https://github.com/mochajs/mocha/issues/4223): The context object's `skip()` (`this.skip()`) in a "before all" (`before()`) hook will no longer execute subsequent sibling hooks, in addition to hooks in child suites ([**@juergba**](https://github.com/juergba))

- [#4178](https://github.com/mochajs/mocha/issues/4178): Remove previously soft-deprecated APIs ([**@wnghdcjfe**](https://github.com/wnghdcjfe)):

  - `Mocha.prototype.ignoreLeaks()`
  - `Mocha.prototype.useColors()`
  - `Mocha.prototype.useInlineDiffs()`
  - `Mocha.prototype.hideDiff()`

### :tada: Enhancements

- [#4245](https://github.com/mochajs/mocha/issues/4245): Add ability to run tests in parallel for Node.js (see [docs](https://mochajs.org/#parallel-tests)) ([**@boneskull**](https://github.com/boneskull))

  :exclamation: See also [#4244](https://github.com/mochajs/mocha/issues/4244); [Root Hook Plugins (docs)](https://mochajs.org/#root-hook-plugins) -- *root hooks must be defined via Root Hook Plugins to work in parallel mode*

- [#4304](https://github.com/mochajs/mocha/issues/4304): `--require` now works with ES modules ([**@JacobLey**](https://github.com/JacobLey))

- [#4299](https://github.com/mochajs/mocha/issues/4299): In some circumstances, Mocha can run ES modules under Node.js v10 -- *use at your own risk!* ([**@giltayar**](https://github.com/giltayar))

### :book: Documentation

- [#4246](https://github.com/mochajs/mocha/issues/4246): Add documentation for parallel mode and Root Hook plugins ([**@boneskull**](https://github.com/boneskull))

### :nut\_and\_bolt: Other

- [#4200](https://github.com/mochajs/mocha/issues/4200): Drop mkdirp and replace it with fs.mkdirSync ([**@HyunSangHan**](https://github.com/HyunSangHan))

### :bug: Fixes

(All bug fixes in Mocha v8.0.0 are also breaking changes, and are listed above)

## 7.2.0 / 2020-05-22

### :tada: Enhancements

- [#4234](https://github.com/mochajs/mocha/issues/4234): Add ability to run tests in a mocha instance multiple times ([**@nicojs**](https://github.com/nicojs))
- [#4219](https://github.com/mochajs/mocha/issues/4219): Exposing filename in JSON, doc, and json-stream reporters ([**@Daniel0113**](https://github.com/Daniel0113))
- [#4244](https://github.com/mochajs/mocha/issues/4244): Add Root Hook Plugins ([**@boneskull**](https://github.com/boneskull))

### :bug: Fixes

- [#4258](https://github.com/mochajs/mocha/issues/4258): Fix missing dot in name of configuration file ([**@sonicdoe**](https://github.com/sonicdoe))
- [#4194](https://github.com/mochajs/mocha/issues/4194): Check if module.paths really exists ([**@ematipico**](https://github.com/ematipico))
- [#4256](https://github.com/mochajs/mocha/issues/4256): `--forbid-only` does not recognize `it.only` when `before` crashes ([**@arvidOtt**](https://github.com/arvidOtt))
- [#4152](https://github.com/mochajs/mocha/issues/4152): Bug with multiple async done() calls ([**@boneskull**](https://github.com/boneskull))
- [#4275](https://github.com/mochajs/mocha/issues/4275): Improper warnings for invalid reporters ([**@boneskull**](https://github.com/boneskull))
- [#4288](https://github.com/mochajs/mocha/issues/4288): Broken hook.spec.js test for IE11 ([**@boneskull**](https://github.com/boneskull))

### :book: Documentation

- [#4081](https://github.com/mochajs/mocha/issues/4081): Insufficient white space for API docs in view on mobile ([**@HyunSangHan**](https://github.com/HyunSangHan))
- [#4255](https://github.com/mochajs/mocha/issues/4255): Update mocha-docdash for UI fixes on API docs ([**@craigtaub**](https://github.com/craigtaub))
- [#4235](https://github.com/mochajs/mocha/issues/4235): Enable emoji on website; enable normal ul elements ([**@boneskull**](https://github.com/boneskull))
- [#4272](https://github.com/mochajs/mocha/issues/4272): Fetch sponsors at build time, show ALL non-skeevy sponsors ([**@boneskull**](https://github.com/boneskull))

### :nut\_and\_bolt: Other

- [#4249](https://github.com/mochajs/mocha/issues/4249): Refactoring improving encapsulation ([**@arvidOtt**](https://github.com/arvidOtt))
- [#4242](https://github.com/mochajs/mocha/issues/4242): CI add job names, add Node.js v14 to matrix ([**@boneskull**](https://github.com/boneskull))
- [#4237](https://github.com/mochajs/mocha/issues/4237): Refactor validatePlugins to throw coded errors ([**@boneskull**](https://github.com/boneskull))
- [#4236](https://github.com/mochajs/mocha/issues/4236): Better debug output ([**@boneskull**](https://github.com/boneskull))

## 7.1.2 / 2020-04-26

### :nut\_and\_bolt: Other

- [#4251](https://github.com/mochajs/mocha/issues/4251): Prevent karma-mocha from stalling ([**@juergba**](https://github.com/juergba))
- [#4222](https://github.com/mochajs/mocha/issues/4222): Update dependency mkdirp to v0.5.5 ([**@outsideris**](https://github.com/outsideris))

### :book: Documentation

- [#4208](https://github.com/mochajs/mocha/issues/4208): Add Wallaby logo to site ([**@boneskull**](https://github.com/boneskull))

## 7.1.1 / 2020-03-18

### :lock: Security Fixes

- [#4204](https://github.com/mochajs/mocha/issues/4204): Update dependencies mkdirp, yargs-parser and yargs ([**@juergba**](https://github.com/juergba))

### :bug: Fixes

- [#3660](https://github.com/mochajs/mocha/issues/3660): Fix `runner` listening to `start` and `end` events ([**@juergba**](https://github.com/juergba))

### :book: Documentation

- [#4190](https://github.com/mochajs/mocha/issues/4190): Show Netlify badge on footer ([**@outsideris**](https://github.com/outsideris))

## 7.1.0 / 2020-02-26

### :tada: Enhancements

[#4038](https://github.com/mochajs/mocha/issues/4038): Add Node.js native ESM support ([**@giltayar**](https://github.com/giltayar))

Mocha supports writing your test files as ES modules:

- Node.js only v12.11.0 and above
- Node.js below v13.2.0, you must set `--experimental-modules` option
- current limitations: please check our [documentation](https://mochajs.org/#nodejs-native-esm-support)
- for programmatic usage: see [API: loadFilesAsync()](https://mochajs.org/api/mocha#loadFilesAsync)

**Note:** Node.JS native [ECMAScript Modules](https://nodejs.org/api/esm.html) implementation has status: **Stability: 1 - Experimental**

### :bug: Fixes

- [#4181](https://github.com/mochajs/mocha/issues/4181): Programmatic API cannot access retried test objects ([**@juergba**](https://github.com/juergba))
- [#4174](https://github.com/mochajs/mocha/issues/4174): Browser: fix `allowUncaught` option ([**@juergba**](https://github.com/juergba))

### :book: Documentation

- [#4058](https://github.com/mochajs/mocha/issues/4058): Manage author list in AUTHORS instead of `package.json` ([**@outsideris**](https://github.com/outsideris))

### :nut\_and\_bolt: Other

- [#4138](https://github.com/mochajs/mocha/issues/4138): Upgrade ESLint v6.8 ([**@kaicataldo**](https://github.com/kaicataldo))

## 7.0.1 / 2020-01-25

### :bug: Fixes

- [#4165](https://github.com/mochajs/mocha/issues/4165): Fix exception when skipping tests programmatically ([**@juergba**](https://github.com/juergba))
- [#4153](https://github.com/mochajs/mocha/issues/4153): Restore backwards compatibility for `reporterOptions` ([**@holm**](https://github.com/holm))
- [#4150](https://github.com/mochajs/mocha/issues/4150): Fix recovery of an open test upon uncaught exception ([**@juergba**](https://github.com/juergba))
- [#4147](https://github.com/mochajs/mocha/issues/4147): Fix regression of leaking uncaught exception handler ([**@juergba**](https://github.com/juergba))

### :book: Documentation

- [#4146](https://github.com/mochajs/mocha/issues/4146): Update copyright & trademark notices per OJSF ([**@boneskull**](https://github.com/boneskull))
- [#4140](https://github.com/mochajs/mocha/issues/4140): Fix broken links ([**@KyoungWan**](https://github.com/KyoungWan))

### :nut\_and\_bolt: Other

- [#4133](https://github.com/mochajs/mocha/issues/4133): Print more descriptive error message ([**@Zirak**](https://github.com/Zirak))

## 7.0.0 / 2020-01-05

### :boom: Breaking Changes

- [#3885](https://github.com/mochajs/mocha/issues/3885): **Drop Node.js v6.x support** ([**@mojosoeun**](https://github.com/mojosoeun))
- [#3890](https://github.com/mochajs/mocha/issues/3890): Remove Node.js debug-related flags `--debug`/`--debug-brk` and deprecate `debug` argument ([**@juergba**](https://github.com/juergba))
- [#3962](https://github.com/mochajs/mocha/issues/3962): Changes to command-line options ([**@ParkSB**](https://github.com/ParkSB)):
  - `--list-interfaces` replaces `--interfaces`
  - `--list-reporters` replaces `--reporters`
- Hook pattern of `this.skip()` ([**@juergba**](https://github.com/juergba)):
  - [#3859](https://github.com/mochajs/mocha/issues/3859): When conditionally skipping in a `it` test, related `afterEach` hooks are now executed
  - [#3741](https://github.com/mochajs/mocha/issues/3741): When conditionally skipping in a `beforeEach` hook, subsequent inner `beforeEach` hooks are now skipped and related `afterEach` hooks are executed
  - [#4136](https://github.com/mochajs/mocha/issues/4136): Disallow `this.skip()` within `after` hooks
- [#3967](https://github.com/mochajs/mocha/issues/3967): Remove deprecated `getOptions()` and `lib/cli/options.js` ([**@juergba**](https://github.com/juergba))
- [#4083](https://github.com/mochajs/mocha/issues/4083): Uncaught exception in `pending` test: don't swallow, but retrospectively fail the test for correct exit code ([**@juergba**](https://github.com/juergba))
- [#4004](https://github.com/mochajs/mocha/issues/4004): Align `Mocha` constructor's option names with command-line options ([**@juergba**](https://github.com/juergba))

### :tada: Enhancements

- [#3980](https://github.com/mochajs/mocha/issues/3980): Refactor and improve `--watch` mode with chokidar ([**@geigerzaehler**](https://github.com/geigerzaehler)):
  - adds command-line options `--watch-files` and `--watch-ignore`
  - removes `--watch-extensions`
- [#3979](https://github.com/mochajs/mocha/issues/3979): Type "rs\n" to restart tests ([**@broofa**](https://github.com/broofa))

### :fax: Deprecations

These are *soft*-deprecated, and will emit a warning upon use. Support will be removed in (likely) the next major version of Mocha:

- [#3968](https://github.com/mochajs/mocha/issues/3968): Deprecate legacy configuration via `mocha.opts` ([**@juergba**](https://github.com/juergba))

### :bug: Fixes

- [#4125](https://github.com/mochajs/mocha/issues/4125): Fix timeout handling with `--inspect-brk`/`--inspect` ([**@juergba**](https://github.com/juergba))
- [#4070](https://github.com/mochajs/mocha/issues/4070): `Mocha` constructor: improve browser setup ([**@juergba**](https://github.com/juergba))
- [#4068](https://github.com/mochajs/mocha/issues/4068): XUnit reporter should handle exceptions during diff generation ([**@rgroothuijsen**](https://github.com/rgroothuijsen))
- [#4030](https://github.com/mochajs/mocha/issues/4030): Fix `--allow-uncaught` with `this.skip()` ([**@juergba**](https://github.com/juergba))

### :mag: Coverage

- [#4109](https://github.com/mochajs/mocha/issues/4109): Add Node.js v13.x to CI test matrix ([**@juergba**](https://github.com/juergba))

### :book: Documentation

- [#4129](https://github.com/mochajs/mocha/issues/4129): Fix broken links ([**@SaeromB**](https://github.com/SaeromB))
- [#4127](https://github.com/mochajs/mocha/issues/4127): Add reporter alias names to docs ([**@khg0712**](https://github.com/khg0712))
- [#4101](https://github.com/mochajs/mocha/issues/4101): Clarify invalid usage of `done()` ([**@jgehrcke**](https://github.com/jgehrcke))
- [#4092](https://github.com/mochajs/mocha/issues/4092): Replace `:coffee:` with emoji ☕️ ([**@pzrq**](https://github.com/pzrq))
- [#4088](https://github.com/mochajs/mocha/issues/4088): Initial draft of project charter ([**@boneskull**](https://github.com/boneskull))
- [#4066](https://github.com/mochajs/mocha/issues/4066): Change `sh` to `bash` for code block in docs/index.md ([**@HyunSangHan**](https://github.com/HyunSangHan))
- [#4045](https://github.com/mochajs/mocha/issues/4045): Update README.md concerning GraphicsMagick installation ([**@HyunSangHan**](https://github.com/HyunSangHan))
- [#3988](https://github.com/mochajs/mocha/issues/3988): Fix sponsors background color for readability ([**@outsideris**](https://github.com/outsideris))

### :nut\_and\_bolt: Other

- [#4118](https://github.com/mochajs/mocha/issues/4118): Update node-environment-flags to 1.0.6 ([**@kylef**](https://github.com/kylef))
- [#4097](https://github.com/mochajs/mocha/issues/4097): Add GH Funding Metadata ([**@SheetJSDev**](https://github.com/SheetJSDev))
- [#4089](https://github.com/mochajs/mocha/issues/4089): Add funding information to `package.json` ([**@Munter**](https://github.com/Munter))
- [#4077](https://github.com/mochajs/mocha/issues/4077): Improve integration tests ([**@soobing**](https://github.com/soobing))

## 6.2.3 / 2020-03-25

### :lock: Security Fixes

- [848d6fb8](https://github.com/mochajs/mocha/commit/848d6fb8feef659564b296db457312d38176910d): Update dependencies mkdirp, yargs-parser and yargs ([**@juergba**](https://github.com/juergba))

## 6.2.2 / 2019-10-18

### :bug: Fixes

- [#4025](https://github.com/mochajs/mocha/issues/4025): Fix duplicate `EVENT_RUN_END` events upon uncaught exception ([**@juergba**](https://github.com/juergba))
- [#4051](https://github.com/mochajs/mocha/issues/4051): Fix "unhide" function in `html` reporter (browser) ([**@pec9399**](https://github.com/pec9399))
- [#4063](https://github.com/mochajs/mocha/issues/4063): Fix use of [esm](https://npm.im/esm) in Node.js v8.x ([**@boneskull**](https://github.com/boneskull))
- [#4033](https://github.com/mochajs/mocha/issues/4033): Fix output when multiple async exceptions are thrown ([**@juergba**](https://github.com/juergba))

### :book: Documentation

- [#4046](https://github.com/mochajs/mocha/issues/4046): Site accessibility fixes ([**@Mia-jeong**](https://github.com/Mia-jeong))
- [#4026](https://github.com/mochajs/mocha/issues/4026): Update docs for custom reporters in browser ([**@Lindsay-Needs-Sleep**](https://github.com/Lindsay-Needs-Sleep))
- [#3971](https://github.com/mochajs/mocha/issues/3971): Adopt new OpenJS Foundation Code of Conduct ([**@craigtaub**](https://github.com/craigtaub))

## 6.2.1 / 2019-09-29

### :bug: Fixes

- [#3955](https://github.com/mochajs/mocha/issues/3955): tty.getWindowSize is not a function inside a "worker\_threads" worker ([**@1999**](https://github.com/1999))
- [#3970](https://github.com/mochajs/mocha/issues/3970): remove extraGlobals() ([**@juergba**](https://github.com/juergba))
- [#3984](https://github.com/mochajs/mocha/issues/3984): Update yargs-unparser to v1.6.0 ([**@juergba**](https://github.com/juergba))
- [#3983](https://github.com/mochajs/mocha/issues/3983): Package 'esm': spawn child-process for correct loading ([**@juergba**](https://github.com/juergba))
- [#3986](https://github.com/mochajs/mocha/issues/3986): Update yargs to v13.3.0 and yargs-parser to v13.1.1 ([**@juergba**](https://github.com/juergba))

### :book: Documentation

- [#3886](https://github.com/mochajs/mocha/issues/3886): fix styles on mochajs.org ([**@outsideris**](https://github.com/outsideris))
- [#3966](https://github.com/mochajs/mocha/issues/3966): Remove jsdoc index.html placeholder from eleventy file structure and fix broken link in jsdoc tutorial ([**@Munter**](https://github.com/Munter))
- [#3765](https://github.com/mochajs/mocha/issues/3765): Add Matomo to website ([**@MarioDiaz98**](https://github.com/MarioDiaz98))
- [#3947](https://github.com/mochajs/mocha/issues/3947): Clarify effect of .skip() ([**@oliversalzburg**](https://github.com/oliversalzburg))

## 6.2.0 / 2019-07-18

### :tada: Enhancements

- [#3827](https://github.com/mochajs/mocha/issues/3827): Do not fork child-process if no Node flags are present ([**@boneskull**](https://github.com/boneskull))
- [#3725](https://github.com/mochajs/mocha/issues/3725): Base reporter store ref to console.log, see [mocha/wiki](https://github.com/mochajs/mocha/wiki/HOW-TO:-Correctly-stub-stdout) ([**@craigtaub**](https://github.com/craigtaub))

### :bug: Fixes

- [#3942](https://github.com/mochajs/mocha/issues/3942): Fix "No test files found" Error when file is passed via `--file` ([**@gabegorelick**](https://github.com/gabegorelick))
- [#3914](https://github.com/mochajs/mocha/issues/3914): Modify Mocha constructor to accept options `global` or `globals` ([**@pascalpp**](https://github.com/pascalpp))
- [#3894](https://github.com/mochajs/mocha/issues/3894): Fix parsing of config files with `_mocha` binary ([**@juergba**](https://github.com/juergba))
- [#3834](https://github.com/mochajs/mocha/issues/3834): Fix CLI parsing with default values ([**@boneskull**](https://github.com/boneskull), [**@juergba**](https://github.com/juergba))
- [#3831](https://github.com/mochajs/mocha/issues/3831): Fix `--timeout`/`--slow` string values and duplicate arguments ([**@boneskull**](https://github.com/boneskull), [**@juergba**](https://github.com/juergba))

### :book: Documentation

- [#3906](https://github.com/mochajs/mocha/issues/3906): Document option to define custom report name for XUnit reporter ([**@pkuczynski**](https://github.com/pkuczynski))
- [#3889](https://github.com/mochajs/mocha/issues/3889): Adds doc links for mocha-examples ([**@craigtaub**](https://github.com/craigtaub))
- [#3887](https://github.com/mochajs/mocha/issues/3887): Fix broken links ([**@toyjhlee**](https://github.com/toyjhlee))
- [#3841](https://github.com/mochajs/mocha/issues/3841): Fix anchors to configuration section ([**@trescube**](https://github.com/trescube))

### :mag: Coverage

- [#3915](https://github.com/mochajs/mocha/issues/3915), [#3929](https://github.com/mochajs/mocha/issues/3929): Increase tests coverage for `--watch` options ([**@geigerzaehler**](https://github.com/geigerzaehler))

### :nut\_and\_bolt: Other

- [#3953](https://github.com/mochajs/mocha/issues/3953): Collect test files later, prepares improvements to the `--watch` mode behavior ([**@geigerzaehler**](https://github.com/geigerzaehler))
- [#3939](https://github.com/mochajs/mocha/issues/3939): Upgrade for npm audit ([**@boneskull**](https://github.com/boneskull))
- [#3930](https://github.com/mochajs/mocha/issues/3930): Extract `runWatch` into separate module ([**@geigerzaehler**](https://github.com/geigerzaehler))
- [#3922](https://github.com/mochajs/mocha/issues/3922): Add `mocha.min.js` file to stacktrace filter ([**@brian-lagerman**](https://github.com/brian-lagerman))
- [#3919](https://github.com/mochajs/mocha/issues/3919): Update CI config files to use Node-12.x ([**@plroebuck**](https://github.com/plroebuck))
- [#3892](https://github.com/mochajs/mocha/issues/3892): Rework reporter tests ([**@plroebuck**](https://github.com/plroebuck))
- [#3872](https://github.com/mochajs/mocha/issues/3872): Rename `--exclude` to `--ignore` and create alias ([**@boneskull**](https://github.com/boneskull))
- [#3963](https://github.com/mochajs/mocha/issues/3963): Hide stacktrace when cli args are missing ([**@outsideris**](https://github.com/outsideris))
- [#3956](https://github.com/mochajs/mocha/issues/3956): Do not redeclare variable in docs array example ([**@DanielRuf**](https://github.com/DanielRuf))
- [#3957](https://github.com/mochajs/mocha/issues/3957): Remove duplicate line-height property in `mocha.css` ([**@DanielRuf**](https://github.com/DanielRuf))
- [#3960](https://github.com/mochajs/mocha/issues/3960): Don't re-initialize grep option on watch re-run ([**@geigerzaehler**](https://github.com/geigerzaehler))

## 6.1.4 / 2019-04-18

### :lock: Security Fixes

- [#3877](https://github.com/mochajs/mocha/issues/3877): Upgrade [js-yaml](https://npm.im/js-yaml), addressing [code injection vulnerability](https://www.npmjs.com/advisories/813) ([**@bjornstar**](https://github.com/bjornstar))

## 6.1.3 / 2019-04-11

### :bug: Fixes

- [#3863](https://github.com/mochajs/mocha/issues/3863): Fix `yargs`-related global scope pollution ([**@inukshuk**](https://github.com/inukshuk))
- [#3869](https://github.com/mochajs/mocha/issues/3869): Fix failure when installed w/ `pnpm` ([**@boneskull**](https://github.com/boneskull))

## 6.1.2 / 2019-04-08

### :bug: Fixes

- [#3867](https://github.com/mochajs/mocha/issues/3867): Re-publish v6.1.1 from POSIX OS to avoid dropped executable flags ([**@boneskull**](https://github.com/boneskull))

## 6.1.1 / 2019-04-07

### :bug: Fixes

- [#3866](https://github.com/mochajs/mocha/issues/3866): Fix Windows End-of-Line publishing issue ([**@juergba**](https://github.com/juergba) & [**@cspotcode**](https://github.com/cspotcode))

## 6.1.0 / 2019-04-07

### :lock: Security Fixes

- [#3845](https://github.com/mochajs/mocha/issues/3845): Update dependency "js-yaml" to v3.13.0 per npm security advisory ([**@plroebuck**](https://github.com/plroebuck))

### :tada: Enhancements

- [#3766](https://github.com/mochajs/mocha/issues/3766): Make reporter constructor support optional `options` parameter ([**@plroebuck**](https://github.com/plroebuck))
- [#3760](https://github.com/mochajs/mocha/issues/3760): Add support for config files with `.jsonc` extension ([**@sstephant**](https://github.com/sstephant))

### :fax: Deprecations

These are *soft*-deprecated, and will emit a warning upon use. Support will be removed in (likely) the next major version of Mocha:

- [#3719](https://github.com/mochajs/mocha/issues/3719): Deprecate `this.skip()` for "after all" hooks ([**@juergba**](https://github.com/juergba))

### :bug: Fixes

- [#3829](https://github.com/mochajs/mocha/issues/3829): Use cwd-relative pathname to load config file ([**@plroebuck**](https://github.com/plroebuck))
- [#3745](https://github.com/mochajs/mocha/issues/3745): Fix async calls of `this.skip()` in "before each" hooks ([**@juergba**](https://github.com/juergba))
- [#3669](https://github.com/mochajs/mocha/issues/3669): Enable `--allow-uncaught` for uncaught exceptions thrown inside hooks ([**@givanse**](https://github.com/givanse))

and some regressions:

- [#3848](https://github.com/mochajs/mocha/issues/3848): Fix `Suite` cloning by copying `root` property ([**@fatso83**](https://github.com/fatso83))
- [#3816](https://github.com/mochajs/mocha/issues/3816): Guard against undefined timeout option ([**@boneskull**](https://github.com/boneskull))
- [#3814](https://github.com/mochajs/mocha/issues/3814): Update "yargs" in order to avoid deprecation message ([**@boneskull**](https://github.com/boneskull))
- [#3788](https://github.com/mochajs/mocha/issues/3788): Fix support for multiple node flags ([**@aginzberg**](https://github.com/aginzberg))

### :book: Documentation

- [mochajs/mocha-examples](https://github.com/mochajs/mocha-examples): New repository of working examples of common configurations using mocha ([**@craigtaub**](https://github.com/craigtaub))
- [#3850](https://github.com/mochajs/mocha/issues/3850): Remove pound icon showing on header hover on docs ([**@jd2rogers2**](https://github.com/jd2rogers2))
- [#3812](https://github.com/mochajs/mocha/issues/3812): Add autoprefixer to documentation page CSS ([**@Munter**](https://github.com/Munter))
- [#3811](https://github.com/mochajs/mocha/issues/3811): Update doc examples "tests.html" ([**@DavidLi119**](https://github.com/DavidLi119))
- [#3807](https://github.com/mochajs/mocha/issues/3807): Mocha website HTML tweaks ([**@plroebuck**](https://github.com/plroebuck))
- [#3793](https://github.com/mochajs/mocha/issues/3793): Update config file example ".mocharc.yml" ([**@cspotcode**](https://github.com/cspotcode))

### :nut\_and\_bolt: Other

- [#3830](https://github.com/mochajs/mocha/issues/3830): Replace dependency "findup-sync" with "find-up" for faster startup ([**@cspotcode**](https://github.com/cspotcode))
- [#3799](https://github.com/mochajs/mocha/issues/3799): Update devDependencies to fix many npm vulnerabilities ([**@XhmikosR**](https://github.com/XhmikosR))

## 6.0.2 / 2019-02-25

### :bug: Fixes

Two more regressions fixed:

- [#3768](https://github.com/mochajs/mocha/issues/3768): Test file paths no longer dropped from `mocha.opts` ([**@boneskull**](https://github.com/boneskull))
- [#3767](https://github.com/mochajs/mocha/issues/3767): `--require` does not break on module names that look like certain `node` flags ([**@boneskull**](https://github.com/boneskull))

## 6.0.1 / 2019-02-21

The obligatory round of post-major-release bugfixes.

### :bug: Fixes

These issues were regressions.

- [#3754](https://github.com/mochajs/mocha/issues/3754): Mocha again finds `test.js` when run without arguments ([**@plroebuck**](https://github.com/plroebuck))
- [#3756](https://github.com/mochajs/mocha/issues/3756): Mocha again supports third-party interfaces via `--ui` ([**@boneskull**](https://github.com/boneskull))
- [#3755](https://github.com/mochajs/mocha/issues/3755): Fix broken `--watch` ([**@boneskull**](https://github.com/boneskull))
- [#3759](https://github.com/mochajs/mocha/issues/3759): Fix unwelcome deprecation notice when Mocha run against languages (CoffeeScript) with implicit return statements; *returning a non-`undefined` value from a `describe` callback is no longer considered deprecated* ([**@boneskull**](https://github.com/boneskull))

### :book: Documentation

- [#3738](https://github.com/mochajs/mocha/issues/3738): Upgrade to `@mocha/docdash@2` ([**@tendonstrength**](https://github.com/tendonstrength))
- [#3751](https://github.com/mochajs/mocha/issues/3751): Use preferred names for example config files ([**@Szauka**](https://github.com/Szauka))

## 6.0.0 / 2019-02-18

### :tada: Enhancements

- [#3726](https://github.com/mochajs/mocha/issues/3726): Add ability to unload files from `require` cache ([**@plroebuck**](https://github.com/plroebuck))

### :bug: Fixes

- [#3737](https://github.com/mochajs/mocha/issues/3737): Fix falsy values from options globals ([**@plroebuck**](https://github.com/plroebuck))
- [#3707](https://github.com/mochajs/mocha/issues/3707): Fix encapsulation issues for `Suite#_onlyTests` and `Suite#_onlySuites` ([**@vkarpov15**](https://github.com/vkarpov15))
- [#3711](https://github.com/mochajs/mocha/issues/3711): Fix diagnostic messages dealing with plurality and markup of output ([**@plroebuck**](https://github.com/plroebuck))
- [#3723](https://github.com/mochajs/mocha/issues/3723): Fix "reporter-option" to allow comma-separated options ([**@boneskull**](https://github.com/boneskull))
- [#3722](https://github.com/mochajs/mocha/issues/3722): Fix code quality and performance of `lookupFiles` and `files` ([**@plroebuck**](https://github.com/plroebuck))
- [#3650](https://github.com/mochajs/mocha/issues/3650), [#3654](https://github.com/mochajs/mocha/issues/3654): Fix noisy error message when no files found ([**@craigtaub**](https://github.com/craigtaub))
- [#3632](https://github.com/mochajs/mocha/issues/3632): Tests having an empty title are no longer confused with the "root" suite ([**@juergba**](https://github.com/juergba))
- [#3666](https://github.com/mochajs/mocha/issues/3666): Fix missing error codes ([**@vkarpov15**](https://github.com/vkarpov15))
- [#3684](https://github.com/mochajs/mocha/issues/3684): Fix exiting problem in Node.js v11.7.0+ ([**@addaleax**](https://github.com/addaleax))
- [#3691](https://github.com/mochajs/mocha/issues/3691): Fix `--delay` (and other boolean options) not working in all cases ([**@boneskull**](https://github.com/boneskull))
- [#3692](https://github.com/mochajs/mocha/issues/3692): Fix invalid command-line argument usage not causing actual errors ([**@boneskull**](https://github.com/boneskull))
- [#3698](https://github.com/mochajs/mocha/issues/3698), [#3699](https://github.com/mochajs/mocha/issues/3699): Fix debug-related Node.js options not working in all cases ([**@boneskull**](https://github.com/boneskull))
- [#3700](https://github.com/mochajs/mocha/issues/3700): Growl notifications now show the correct number of tests run ([**@outsideris**](https://github.com/outsideris))
- [#3686](https://github.com/mochajs/mocha/issues/3686): Avoid potential ReDoS when diffing large objects ([**@cyjake**](https://github.com/cyjake))
- [#3715](https://github.com/mochajs/mocha/issues/3715): Fix incorrect order of emitted events when used programmatically ([**@boneskull**](https://github.com/boneskull))
- [#3706](https://github.com/mochajs/mocha/issues/3706): Fix regression wherein `--reporter-option`/`--reporter-options` did not support comma-separated key/value pairs ([**@boneskull**](https://github.com/boneskull))

### :book: Documentation

- [#3652](https://github.com/mochajs/mocha/issues/3652): Switch from Jekyll to Eleventy ([**@Munter**](https://github.com/Munter))

### :nut\_and\_bolt: Other

- [#3677](https://github.com/mochajs/mocha/issues/3677): Add error objects for createUnsupportedError and createInvalidExceptionError ([**@boneskull**](https://github.com/boneskull))
- [#3733](https://github.com/mochajs/mocha/issues/3733): Removed unnecessary processing in post-processing hook ([**@wanseob**](https://github.com/wanseob))
- [#3730](https://github.com/mochajs/mocha/issues/3730): Update nyc to latest version ([**@coreyfarrell**](https://github.com/coreyfarrell))
- [#3648](https://github.com/mochajs/mocha/issues/3648), [#3680](https://github.com/mochajs/mocha/issues/3680): Fixes to support latest versions of [unexpected](https://npm.im/unexpected) and [unexpected-sinon](https://npm.im/unexpected-sinon) ([**@sunesimonsen**](https://github.com/sunesimonsen))
- [#3638](https://github.com/mochajs/mocha/issues/3638): Add meta tag to site ([**@MartijnCuppens**](https://github.com/MartijnCuppens))
- [#3653](https://github.com/mochajs/mocha/issues/3653): Fix parts of test suite failing to run on Windows ([**@boneskull**](https://github.com/boneskull))

## 6.0.0-1 / 2019-01-02

### :bug: Fixes

- Fix missing `mocharc.json` in published package ([**@boneskull**](https://github.com/boneskull))

## 6.0.0-0 / 2019-01-01

**Documentation for this release can be found at [next.mochajs.org](https://next.mochajs.org)**!

Welcome [**@plroebuck**](https://github.com/plroebuck), [**@craigtaub**](https://github.com/craigtaub), & [**@markowsiak**](https://github.com/markowsiak) to the team!

### :boom: Breaking Changes

- [#3149](https://github.com/mochajs/mocha/issues/3149): **Drop Node.js v4.x support** ([**@outsideris**](https://github.com/outsideris))
- [#3556](https://github.com/mochajs/mocha/issues/3556): Changes to command-line options ([**@boneskull**](https://github.com/boneskull)):
  - `--grep` and `--fgrep` are now mutually exclusive; attempting to use both will cause Mocha to fail instead of simply ignoring `--grep`
  - `--compilers` is no longer supported; attempting to use will cause Mocha to fail with a link to more information
  - `-d` is no longer an alias for `--debug`; `-d` is currently ignored
  - [#3275](https://github.com/mochajs/mocha/issues/3275): `--watch-extensions` no longer implies `js`; it must be explicitly added ([**@TheDancingCode**](https://github.com/TheDancingCode))
- [#2908](https://github.com/mochajs/mocha/issues/2908): `tap` reporter emits error messages ([**@chrmod**](https://github.com/chrmod))
- [#2819](https://github.com/mochajs/mocha/issues/2819): When conditionally skipping in a `before` hook, subsequent `before` hooks *and* tests in nested suites are now skipped ([**@bannmoore**](https://github.com/bannmoore))
- [#627](https://github.com/mochajs/mocha/issues/627): Emit filepath in "timeout exceeded" exceptions where applicable ([**@boneskull**](https://github.com/boneskull))
- [#3556](https://github.com/mochajs/mocha/issues/3556): `lib/template.html` has moved to `lib/browser/template.html` ([**@boneskull**](https://github.com/boneskull))
- [#2576](https://github.com/mochajs/mocha/issues/2576): An exception is now thrown if Mocha fails to parse or find a `mocha.opts` at a user-specified path ([**@plroebuck**](https://github.com/plroebuck))
- [#3458](https://github.com/mochajs/mocha/issues/3458): Instantiating a `Base`-extending reporter without a `Runner` parameter will throw an exception ([**@craigtaub**](https://github.com/craigtaub))
- [#3125](https://github.com/mochajs/mocha/issues/3125): For consumers of Mocha's programmatic API, all exceptions thrown from Mocha now have a `code` property (and some will have additional metadata). Some `Error` messages have changed. **Please use the `code` property to check `Error` types instead of the `message` property**; these descriptions will be localized in the future. ([**@craigtaub**](https://github.com/craigtaub))

### :fax: Deprecations

These are *soft*-deprecated, and will emit a warning upon use. Support will be removed in (likely) the next major version of Mocha:

- `-gc` users should use `--gc-global` instead
- Consumers of the function exported by `bin/options` should now use the `loadMochaOpts` or `loadOptions` (preferred) functions exported by the `lib/cli/options` module

Regarding the `Mocha` class constructor (from `lib/mocha`):

- Use property `color: false` instead of `useColors: false`
- Use property `timeout: false` instead of `enableTimeouts: false`

All of the above deprecations were introduced by [#3556](https://github.com/mochajs/mocha/issues/3556).

`mocha.opts` is now considered "legacy"; please prefer RC file or `package.json` over `mocha.opts`.

### :tada: Enhancements

Enhancements introduced in [#3556](https://github.com/mochajs/mocha/issues/3556):

- Mocha now supports "RC" files in JS, JSON, YAML, or `package.json`-based (using `mocha` property) format

  - `.mocharc.js`, `.mocharc.json`, `.mocharc.yaml` or `.mocharc.yml` are valid "rc" file names and will be automatically loaded
  - Use `--config /path/to/rc/file` to specify an explicit path
  - Use `--package /path/to/package.json` to specify an explicit `package.json` to read the `mocha` prop from
  - Use `--no-config` or `--no-package` to completely disable loading of configuration via RC file and `package.json`, respectively
  - Configurations are merged as applicable using the priority list:
    1. Command-line arguments
    1. RC file
    1. `package.json`
    1. `mocha.opts`
    1. Mocha's own defaults
  - Check out these [example config files](https://github.com/mochajs/mocha/tree/master/example/config)

- Node/V8 flag support in `mocha` executable:

  - Support all allowed `node` flags as supported by the running version of `node` (also thanks to [**@demurgos**](https://github.com/demurgos))
  - Support any V8 flag by prepending `--v8-` to the flag name
  - All flags are also supported via config files, `package.json` properties, or `mocha.opts`
  - Debug-related flags (e.g., `--inspect`) now *imply* `--no-timeouts`
  - Use of e.g., `--debug` will automatically invoke `--inspect` if supported by running version of `node`

- Support negation of any Mocha-specific command-line flag by prepending `--no-` to the flag name

- Interfaces now have descriptions when listed using `--interfaces` flag

- `Mocha` constructor supports all options

- `--extension` is now an alias for `--watch-extensions` and affects *non-watch-mode* test runs as well. For example, to run *only* `test/*.coffee` (not `test/*.js`), you can do `mocha --require coffee-script/register --extensions coffee`.

- [#3552](https://github.com/mochajs/mocha/issues/3552): `tap` reporter is now TAP13-capable ([**@plroebuck**](https://github.com/plroebuck) & [**@mollstam**](https://github.com/mollstam))

- [#3535](https://github.com/mochajs/mocha/issues/3535): Mocha's version can now be queried programmatically via public property `Mocha.prototype.version` ([**@plroebuck**](https://github.com/plroebuck))

- [#3428](https://github.com/mochajs/mocha/issues/3428): `xunit` reporter shows diffs ([**@mlucool**](https://github.com/mlucool))

- [#2529](https://github.com/mochajs/mocha/issues/2529): `Runner` now emits a `retry` event when tests are retried (reporters can listen for this) ([**@catdad**](https://github.com/catdad))

- [#2962](https://github.com/mochajs/mocha/issues/2962), [#3111](https://github.com/mochajs/mocha/issues/3111): In-browser notification support; warn about missing prereqs when `--growl` supplied ([**@plroebuck**](https://github.com/plroebuck))

### :bug: Fixes

- [#3356](https://github.com/mochajs/mocha/issues/3356): `--no-timeouts` and `--timeout 0` now does what you'd expect ([**@boneskull**](https://github.com/boneskull))
- [#3475](https://github.com/mochajs/mocha/issues/3475): Restore `--no-exit` option ([**@boneskull**](https://github.com/boneskull))
- [#3570](https://github.com/mochajs/mocha/issues/3570): Long-running tests now respect `SIGINT` ([**@boneskull**](https://github.com/boneskull))
- [#2944](https://github.com/mochajs/mocha/issues/2944): `--forbid-only` and `--forbid-pending` now "fail fast" when encountered on a suite ([**@outsideris**](https://github.com/outsideris))
- [#1652](https://github.com/mochajs/mocha/issues/1652), [#2951](https://github.com/mochajs/mocha/issues/2951): Fix broken clamping of timeout values ([**@plroebuck**](https://github.com/plroebuck))
- [#2095](https://github.com/mochajs/mocha/issues/2095), [#3521](https://github.com/mochajs/mocha/issues/3521): Do not log `stdout:` prefix in browser console ([**@Bamieh**](https://github.com/Bamieh))
- [#3595](https://github.com/mochajs/mocha/issues/3595): Fix mochajs.org deployment problems ([**@papandreou**](https://github.com/papandreou))
- [#3518](https://github.com/mochajs/mocha/issues/3518): Improve `utils.isPromise()` ([**@fabiosantoscode**](https://github.com/fabiosantoscode))
- [#3320](https://github.com/mochajs/mocha/issues/3320): Fail gracefully when non-extensible objects are thrown in async tests ([**@fargies**](https://github.com/fargies))
- [#2475](https://github.com/mochajs/mocha/issues/2475): XUnit does not duplicate test result numbers in "errors" and "failures"; "failures" will **always** be zero ([**@mlucool**](https://github.com/mlucool))
- [#3398](https://github.com/mochajs/mocha/issues/3398), [#3598](https://github.com/mochajs/mocha/issues/3598), [#3457](https://github.com/mochajs/mocha/issues/3457), [#3617](https://github.com/mochajs/mocha/issues/3617): Fix regression wherein `--bail` would not execute "after" nor "after each" hooks ([**@juergba**](https://github.com/juergba))
- [#3580](https://github.com/mochajs/mocha/issues/3580): Fix potential exception when using XUnit reporter programmatically ([**@Lana-Light**](https://github.com/Lana-Light))
- [#1304](https://github.com/mochajs/mocha/issues/1304): Do not output color to `TERM=dumb` ([**@plroebuck**](https://github.com/plroebuck))

### :book: Documentation

- [#3525](https://github.com/mochajs/mocha/issues/3525): Improvements to `.github/CONTRIBUTING.md` ([**@markowsiak**](https://github.com/markowsiak))
- [#3466](https://github.com/mochajs/mocha/issues/3466): Update description of `slow` option ([**@finfin**](https://github.com/finfin))
- [#3405](https://github.com/mochajs/mocha/issues/3405): Remove references to bower installations ([**@goteamtim**](https://github.com/goteamtim))
- [#3361](https://github.com/mochajs/mocha/issues/3361): Improvements to `--watch` docs ([**@benglass**](https://github.com/benglass))
- [#3136](https://github.com/mochajs/mocha/issues/3136): Improve docs around globbing and shell expansion ([**@akrawchyk**](https://github.com/akrawchyk))
- [#2819](https://github.com/mochajs/mocha/issues/2819): Update docs around skips and hooks ([**@bannmoore**](https://github.com/bannmoore))
- Many improvements by [**@outsideris**](https://github.com/outsideris)

### :nut\_and\_bolt: Other

- [#3557](https://github.com/mochajs/mocha/issues/3557): Use `ms` userland module instead of hand-rolled solution ([**@gizemkeser**](https://github.com/gizemkeser))
- Many CI fixes and other refactors by [**@plroebuck**](https://github.com/plroebuck)
- Test refactors by [**@outsideris**](https://github.com/outsideris)

## 5.2.0 / 2018-05-18

### :tada: Enhancements

- [#3375](https://github.com/mochajs/mocha/pull/3375): Add support for comments in `mocha.opts` ([@plroebuck](https://github.com/plroebuck))

### :bug: Fixes

- [#3346](https://github.com/mochajs/mocha/pull/3346): Exit correctly from `before` hooks when using `--bail` ([@outsideris](https://github.com/outsideris))

### :book: Documentation

- [#3328](https://github.com/mochajs/mocha/pull/3328): Mocha-flavored [API docs](https://mochajs.org/api/)! ([@Munter](https://github.com/munter))

### :nut\_and\_bolt: Other

- [#3330](https://github.com/mochajs/mocha/pull/3330): Use `Buffer.from()` ([@harrysarson](https://github.com/harrysarson))
- [#3295](https://github.com/mochajs/mocha/pull/3295): Remove redundant folder ([@DavNej](https://github.com/DajNev))
- [#3356](https://github.com/mochajs/mocha/pull/3356): Refactoring ([@plroebuck](https://github.com/plroebuck))

## 5.1.1 / 2018-04-18

### :bug: Fixes

- [#3325](https://github.com/mochajs/mocha/issues/3325): Revert change which broke `--watch` ([@boneskull](https://github.com/boneskull))

## 5.1.0 / 2018-04-12

### :tada: Enhancements

- [#3210](https://github.com/mochajs/mocha/pull/3210): Add `--exclude` option ([@metalex9](https://github.com/metalex9))

### :bug: Fixes

- [#3318](https://github.com/mochajs/mocha/pull/3318): Fix failures in circular objects in JSON reporter ([@jeversmann](https://github.com/jeversmann), [@boneskull](https://github.com/boneskull))

### :book: Documentation

- [#3323](https://github.com/mochajs/mocha/pull/3323): Publish actual [API documentation](https://mochajs.org/api/)! ([@dfberry](https://github.com/dfberry), [@Munter](https://github.com/munter))
- [#3299](https://github.com/mochajs/mocha/pull/3299): Improve docs around exclusive tests ([@nicgirault](https://github.com/nicgirault))

### :nut\_and\_bolt: Other

- [#3302](https://github.com/mochajs/mocha/pull/3302), [#3308](https://github.com/mochajs/mocha/pull/3308), [#3310](https://github.com/mochajs/mocha/pull/3310), [#3315](https://github.com/mochajs/mocha/pull/3315), [#3316](https://github.com/mochajs/mocha/pull/3316): Build matrix improvements ([more info](https://boneskull.com/mocha-and-travis-ci-build-stages/)) ([@outsideris](https://github.com/outsideris), [@boneskull](https://github.com/boneskull))
- [#3272](https://github.com/mochajs/mocha/pull/3272): Refactor reporter tests ([@jMuzsik](https://github.com/jMuzsik))

## 5.0.5 / 2018-03-22

Welcome [@outsideris](https://github.com/outsideris) to the team!

### :bug: Fixes

- [#3096](https://github.com/mochajs/mocha/issues/3096): Fix `--bail` failing to bail within hooks ([@outsideris](https://github.com/outsideris))
- [#3184](https://github.com/mochajs/mocha/issues/3184): Don't skip too many suites (using `describe.skip()`) ([@outsideris](https://github.com/outsideris))

### :book: Documentation

- [#3133](https://github.com/mochajs/mocha/issues/3133): Improve docs regarding "pending" behavior ([@ematicipo](https://github.com/ematicipo))
- [#3276](https://github.com/mochajs/mocha/pull/3276), [#3274](https://github.com/mochajs/mocha/pull/3274): Fix broken stuff in `CHANGELOG.md` ([@tagoro9](https://github.com/tagoro9), [@honzajavorek](https://github.com/honzajavorek))

### :nut\_and\_bolt: Other

- [#3208](https://github.com/mochajs/mocha/issues/3208): Improve test coverage for AMD users ([@outsideris](https://github.com/outsideris))
- [#3267](https://github.com/mochajs/mocha/pull/3267): Remove vestiges of PhantomJS from CI ([@anishkny](https://github.com/anishkny))
- [#2952](https://github.com/mochajs/mocha/issues/2952): Fix a debug message ([@boneskull](https://github.com/boneskull))

## 5.0.4 / 2018-03-07

### :bug: Fixes

- [#3265](https://github.com/mochajs/mocha/issues/3265): Fixes regression in "watch" functionality introduced in v5.0.2 ([@outsideris](https://github.com/outsideris))

## 5.0.3 / 2018-03-06

This patch features a fix to address a potential "low severity" [ReDoS vulnerability](https://snyk.io/vuln/npm:diff:20180305) in the [diff](https://npm.im/diff) package (a dependency of Mocha).

### :lock: Security Fixes

- [#3266](https://github.com/mochajs/mocha/pull/3266): Bump `diff` to v3.5.0 ([@anishkny](https://github.com/anishkny))

### :nut\_and\_bolt: Other

- [#3011](https://github.com/mochajs/mocha/issues/3011): Expose `generateDiff()` in `Base` reporter ([@harrysarson](https://github.com/harrysarson))

## 5.0.2 / 2018-03-05

This release fixes a class of tests which report as *false positives*. **Certain tests will now break**, though they would have previously been reported as passing. Details below. Sorry for the inconvenience!

### :bug: Fixes

- [#3226](https://github.com/mochajs/mocha/issues/3226): Do not swallow errors that are thrown asynchronously from passing tests ([@boneskull](https://github.com/boneskull)). Example:

  \`\`\`js
  it('should actually fail, sorry!', function (done) {
  // passing assertion
  assert(true === true);

  // test complete & is marked as passing
  done();

  // ...but something evil lurks within
  setTimeout(() => {
  throw new Error('chaos!');
  }, 100);
  });
  \`\`\`

  Previously to this version, Mocha would have *silently swallowed* the `chaos!` exception, and you wouldn't know. Well, *now you know*. Mocha cannot recover from this gracefully, so it will exit with a nonzero code.

  **Maintainers of external reporters**: *If* a test of this class is encountered, the `Runner` instance will emit the `end` event *twice*; you *may* need to change your reporter to use `runner.once('end')` intead of `runner.on('end')`.

- [#3093](https://github.com/mochajs/mocha/issues/3093): Fix stack trace reformatting problem ([@outsideris](https://github.com/outsideris))

### :nut\_and\_bolt: Other

- [#3248](https://github.com/mochajs/mocha/issues/3248): Update `browser-stdout` to v1.3.1 ([@honzajavorek](https://github.com/honzajavorek))

## 5.0.1 / 2018-02-07

...your garden-variety patch release.

Special thanks to [Wallaby.js](https://wallabyjs.com) for their continued support! :heart:

### :bug: Fixes

- [#1838](https://github.com/mochajs/mocha/issues/1838): `--delay` now works with `.only()` ([@silviom](https://github.com/silviom))
- [#3119](https://github.com/mochajs/mocha/issues/3119): Plug memory leak present in v8 ([@boneskull](https://github.com/boneskull))

### :book: Documentation

- [#3132](https://github.com/mochajs/mocha/issues/3132), [#3098](https://github.com/mochajs/mocha/issues/3098): Update `--glob` docs ([@outsideris](https://github.com/outsideris))
- [#3212](https://github.com/mochajs/mocha/pull/3212): Update [Wallaby.js](https://wallabyjs.com)-related docs ([@ArtemGovorov](https://github.com/ArtemGovorov))
- [#3205](https://github.com/mochajs/mocha/pull/3205): Remove outdated cruft ([@boneskull](https://github.com/boneskull))

### :nut\_and\_bolt: Other

- [#3224](https://github.com/mochajs/mocha/pull/3224): Add proper Wallaby.js config ([@ArtemGovorov](https://github.com/ArtemGovorov))
- [#3230](https://github.com/mochajs/mocha/pull/3230): Update copyright year ([@josephlin55555](https://github.com/josephlin55555))

## 5.0.0 / 2018-01-17

Mocha starts off 2018 right by again dropping support for *unmaintained rubbish*.

Welcome [@vkarpov15](https://github.com/vkarpov15) to the team!

### :boom: Breaking Changes

- **[#3148](https://github.com/mochajs/mocha/issues/3148): Drop support for IE9 and IE10** ([@Bamieh](https://github.com/Bamieh))
  Practically speaking, only code which consumes (through bundling or otherwise) the userland [buffer](https://npm.im/buffer) module should be affected. However, Mocha will no longer test against these browsers, nor apply fixes for them.

### :tada: Enhancements

- [#3181](https://github.com/mochajs/mocha/issues/3181): Add useful new `--file` command line argument ([documentation](https://mochajs.org/#--file-file)) ([@hswolff](https://github.com/hswolff))

### :bug: Fixes

- [#3187](https://github.com/mochajs/mocha/issues/3187): Fix inaccurate test duration reporting ([@FND](https://github.com/FND))
- [#3202](https://github.com/mochajs/mocha/pull/3202): Fix bad markup in HTML reporter ([@DanielRuf](https://github.com/DanielRuf))

### :sunglasses: Developer Experience

- [#2352](https://github.com/mochajs/mocha/issues/2352): Ditch GNU Make for [nps](https://npm.im/nps) to manage scripts ([@TedYav](https://github.com/TedYav))

### :book: Documentation

- [#3137](https://github.com/mochajs/mocha/issues/3137): Add missing `--no-timeouts` docs ([@dfberry](https://github.com/dfberry))
- [#3134](https://github.com/mochajs/mocha/issues/3134): Improve `done()` callback docs ([@maraisr](https://github.com/maraisr))
- [#3135](https://github.com/mochajs/mocha/issues/3135): Fix cross-references ([@vkarpov15](https://github.com/vkarpov15))
- [#3163](https://github.com/mochajs/mocha/pull/3163): Fix tpyos ([@tbroadley](https://github.com/tbroadley))
- [#3177](https://github.com/mochajs/mocha/pull/3177): Tweak `README.md` organization ([@xxczaki](https://github.com/xxczaki))
- Misc updates ([@boneskull](https://github.com/boneskull))

### :nut\_and\_bolt: Other

- [#3118](https://github.com/mochajs/mocha/issues/3118): Move TextMate Integration to [its own repo](https://github.com/mochajs/mocha.tmbundle) ([@Bamieh](https://github.com/Bamieh))
- [#3185](https://github.com/mochajs/mocha/issues/3185): Add Node.js v9 to build matrix; remove v7 ([@xxczaki](https://github.com/xxczaki))
- [#3172](https://github.com/mochajs/mocha/issues/3172): Markdown linting ([@boneskull](https://github.com/boneskull))
- Test & Netlify updates ([@Munter](https://github.com/munter), [@boneskull](https://github.com/boneskull))


================================================
FILE: FUNDING.md
================================================
# Fund Usage Guidelines

This project follows [Collective Funds Guidelines 0.1](https://github.com/collective-funds/guidelines) with the below customizations.

## Rates

- TSC Members: $75.00 USD/hour
- Project Contributors: $50.00 USD/hour

## Additional notes

The project funds are collected in the [Mocha collective](https://opencollective.com/mochajs) on [Open Collective](https://opencollective.com/) which is hosted by the [Open Source Collective](https://oscollective.org/).

In additions to the [Collective Funds Guidelines](https://github.com/collective-funds/guidelines) this project abides by the [Open Source Collective](https://oscollective.org/)'s [Terms of Fiscal Sponsorship](https://docs.oscollective.org/getting-started/terms-of-fiscal-sponsorship).

When/if the two are in conflict, the Terms of Fiscal Sponsorship is the one that will be followed.


================================================
FILE: LICENSE
================================================
(The MIT License)

Copyright (c) 2011-2024 OpenJS Foundation and contributors, https://openjsf.org

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INC
Download .txt
gitextract_zvdgtjox/

├── .browserslistrc
├── .editorconfig
├── .gitattributes
├── .github/
│   ├── CODE_OF_CONDUCT.md
│   ├── CONTRIBUTING.md
│   ├── DEVELOPMENT.md
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   ├── 01-bug.yml
│   │   ├── 02-documentation.yml
│   │   ├── 03-feature-request.yml
│   │   ├── 04-performance.yml
│   │   ├── 05-repository-tooling.yml
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── dependabot.yml
│   ├── release-please/
│   │   ├── config.json
│   │   └── manifest.json
│   └── workflows/
│       ├── mocha.yml
│       ├── nightly-site-deploy.yml
│       ├── npm-script.yml
│       ├── octoguide.yml
│       └── release-please.yml
├── .gitignore
├── .knip.jsonc
├── .lintstagedrc.json
├── .mailmap
├── .mocharc.yml
├── .npmrc
├── .nycrc
├── .prettierignore
├── .wallaby.js
├── AUTHORS
├── CHANGELOG.md
├── FUNDING.md
├── LICENSE
├── MAINTAINERS.md
├── PROJECT_CHARTER.md
├── README.md
├── SECURITY.md
├── bin/
│   ├── _mocha
│   └── mocha.js
├── browser-entry.js
├── docs/
│   ├── .gitignore
│   ├── .knip.jsonc
│   ├── .prettierrc.json
│   ├── README.md
│   ├── _data/
│   │   ├── blocklist.json
│   │   └── supporters.cjs
│   ├── _redirects
│   ├── astro.config.ts
│   ├── netlify.toml
│   ├── package.json
│   ├── public/
│   │   └── example/
│   │       ├── Array.js
│   │       └── tests.html
│   ├── src/
│   │   ├── components/
│   │   │   ├── Badges.astro
│   │   │   ├── ClientRedirects.astro
│   │   │   ├── FixtureWizard.astro
│   │   │   ├── Footer.astro
│   │   │   ├── Head.astro
│   │   │   ├── HomepagePageTitle.astro
│   │   │   ├── PageTitle.astro
│   │   │   └── Supporters.astro
│   │   ├── content/
│   │   │   ├── config.ts
│   │   │   ├── data/
│   │   │   │   └── sponsors.json
│   │   │   └── docs/
│   │   │       ├── declaring/
│   │   │       │   ├── dynamic-tests.mdx
│   │   │       │   ├── exclusive-tests.mdx
│   │   │       │   ├── inclusive-tests.mdx
│   │   │       │   ├── pending-tests.mdx
│   │   │       │   └── retrying-tests.mdx
│   │   │       ├── explainers/
│   │   │       │   ├── compilers-deprecation.mdx
│   │   │       │   ├── count-assertions.mdx
│   │   │       │   ├── detecting-multiple-calls-to-done.mdx
│   │   │       │   ├── environment-variables.mdx
│   │   │       │   ├── find-global-leaks.mdx
│   │   │       │   ├── global-variables.mdx
│   │   │       │   ├── nodejs-native-esm-support.mdx
│   │   │       │   ├── programmatic-usage.mdx
│   │   │       │   ├── related-tools.mdx
│   │   │       │   ├── run-cycle-overview.mdx
│   │   │       │   ├── security-vulnerability-reports.mdx
│   │   │       │   ├── shared-behaviours.mdx
│   │   │       │   ├── spies.mdx
│   │   │       │   ├── stub-stdout.mdx
│   │   │       │   ├── tagging.mdx
│   │   │       │   ├── test-duration.mdx
│   │   │       │   ├── test-fixture-decision-tree.mdx
│   │   │       │   ├── third-party-reporters.mdx
│   │   │       │   └── third-party-uis.mdx
│   │   │       ├── features/
│   │   │       │   ├── arrow-functions.mdx
│   │   │       │   ├── assertions.mdx
│   │   │       │   ├── asynchronous-code.mdx
│   │   │       │   ├── diffs.mdx
│   │   │       │   ├── error-codes.mdx
│   │   │       │   ├── global-fixtures.mdx
│   │   │       │   ├── hooks.mdx
│   │   │       │   ├── parallel-mode.mdx
│   │   │       │   ├── root-hook-plugins.mdx
│   │   │       │   └── timeouts.mdx
│   │   │       ├── getting-started.mdx
│   │   │       ├── index.mdx
│   │   │       ├── interfaces/
│   │   │       │   ├── about.mdx
│   │   │       │   ├── bdd.mdx
│   │   │       │   ├── exports.mdx
│   │   │       │   ├── qunit.mdx
│   │   │       │   ├── require.mdx
│   │   │       │   ├── tdd.mdx
│   │   │       │   └── third-party.mdx
│   │   │       ├── reporters/
│   │   │       │   ├── about.mdx
│   │   │       │   ├── doc.mdx
│   │   │       │   ├── dot.mdx
│   │   │       │   ├── html.mdx
│   │   │       │   ├── json-stream.mdx
│   │   │       │   ├── json.mdx
│   │   │       │   ├── landing.mdx
│   │   │       │   ├── list.mdx
│   │   │       │   ├── markdown.mdx
│   │   │       │   ├── min.mdx
│   │   │       │   ├── nyan.mdx
│   │   │       │   ├── progress.mdx
│   │   │       │   ├── spec.mdx
│   │   │       │   ├── tap.mdx
│   │   │       │   ├── third-party.mdx
│   │   │       │   └── xunit.mdx
│   │   │       └── running/
│   │   │           ├── browsers.mdx
│   │   │           ├── cli.mdx
│   │   │           ├── configuring.mdx
│   │   │           ├── editor-plugins.mdx
│   │   │           └── test-globs.mdx
│   │   ├── env.d.ts
│   │   └── style/
│   │       └── custom.css
│   └── tsconfig.json
├── eslint.config.js
├── example/
│   └── config/
│       ├── .mocharc.js
│       ├── .mocharc.json
│       ├── .mocharc.jsonc
│       ├── .mocharc.yml
│       └── README.md
├── index.js
├── karma.conf.js
├── lib/
│   ├── browser/
│   │   ├── highlight-tags.js
│   │   ├── parse-query.js
│   │   └── template.html
│   ├── cli/
│   │   ├── cli.js
│   │   ├── collect-files.js
│   │   ├── commands.js
│   │   ├── config.js
│   │   ├── index.js
│   │   ├── init.js
│   │   ├── lookup-files.js
│   │   ├── node-flags.js
│   │   ├── one-and-dones.js
│   │   ├── options.js
│   │   ├── run-helpers.js
│   │   ├── run-option-metadata.js
│   │   ├── run.js
│   │   └── watch-run.js
│   ├── context.js
│   ├── error-constants.js
│   ├── errors.js
│   ├── hook.js
│   ├── interfaces/
│   │   ├── bdd.js
│   │   ├── common.js
│   │   ├── exports.js
│   │   ├── index.js
│   │   ├── qunit.js
│   │   └── tdd.js
│   ├── mocha.js
│   ├── mocharc.json
│   ├── nodejs/
│   │   ├── buffered-worker-pool.js
│   │   ├── esm-utils.js
│   │   ├── file-unloader.js
│   │   ├── parallel-buffered-runner.js
│   │   ├── reporters/
│   │   │   └── parallel-buffered.js
│   │   ├── serializer.js
│   │   └── worker.js
│   ├── pending.js
│   ├── plugin-loader.js
│   ├── reporters/
│   │   ├── base.js
│   │   ├── doc.js
│   │   ├── dot.js
│   │   ├── html.js
│   │   ├── index.js
│   │   ├── json-stream.js
│   │   ├── json.js
│   │   ├── landing.js
│   │   ├── list.js
│   │   ├── markdown.js
│   │   ├── min.js
│   │   ├── nyan.js
│   │   ├── progress.js
│   │   ├── spec.js
│   │   ├── tap.js
│   │   └── xunit.js
│   ├── runnable.js
│   ├── runner.js
│   ├── stats-collector.js
│   ├── suite.js
│   ├── test.js
│   ├── types.d.ts
│   └── utils.js
├── mocha.css
├── mocha.mjs
├── netlify.toml
├── package.json
├── renovate.json
├── rollup.config.mjs
├── scripts/
│   ├── karma-rollup-plugin.js
│   ├── linkify-changelog.mjs
│   ├── pick-from-package-json.mjs
│   └── update-authors.js
├── test/
│   ├── README.md
│   ├── assertions.js
│   ├── browser-specific/
│   │   ├── esm.spec.mjs
│   │   ├── fixtures/
│   │   │   ├── esm.fixture.mjs
│   │   │   └── webpack/
│   │   │       ├── webpack.config.js
│   │   │       └── webpack.fixture.mjs
│   │   └── setup.js
│   ├── compiler/
│   │   ├── test.coffee
│   │   └── test.foo
│   ├── compiler-cjs/
│   │   ├── test.js
│   │   ├── test.js.compiled
│   │   ├── test.ts
│   │   └── test.ts.compiled
│   ├── compiler-esm/
│   │   ├── package.json
│   │   ├── test-tla.js
│   │   ├── test-tla.js.compiled
│   │   ├── test-tla.mjs
│   │   ├── test-tla.mjs.compiled
│   │   ├── test-tla.ts
│   │   ├── test-tla.ts.compiled
│   │   ├── test.js
│   │   ├── test.js.compiled
│   │   ├── test.mjs
│   │   ├── test.mjs.compiled
│   │   ├── test.ts
│   │   └── test.ts.compiled
│   ├── compiler-fixtures/
│   │   ├── esm-loader.fixture.mjs
│   │   ├── esm-only-loader/
│   │   │   ├── README.md
│   │   │   ├── esm-loader.fixture.mjs
│   │   │   ├── esm.fixture.js
│   │   │   └── package.json
│   │   ├── esm.fixture.js
│   │   ├── foo.fixture.js
│   │   ├── js.fixture.js
│   │   └── ts.fixture.js
│   ├── integration/
│   │   ├── README.md
│   │   ├── color.spec.js
│   │   ├── common-js-require.spec.js
│   │   ├── compiler-cjs.spec.js
│   │   ├── compiler-esm-only-loader.spec.js
│   │   ├── compiler-esm.spec.js
│   │   ├── compiler-globbing.spec.js
│   │   ├── config.spec.js
│   │   ├── deprecate.spec.js
│   │   ├── diffs.spec.js
│   │   ├── duplicate-arguments.spec.js
│   │   ├── esm.spec.js
│   │   ├── events.spec.js
│   │   ├── fifo.spec.js
│   │   ├── file-utils.spec.js
│   │   ├── fixtures/
│   │   │   ├── __default__.fixture.js
│   │   │   ├── cascade.fixture.js
│   │   │   ├── collect-files.fixture.mjs
│   │   │   ├── common-js-require.fixture.js
│   │   │   ├── config/
│   │   │   │   ├── mocha-config/
│   │   │   │   │   ├── index.js
│   │   │   │   │   └── package.json
│   │   │   │   ├── mocharc.cjs
│   │   │   │   ├── mocharc.js
│   │   │   │   ├── mocharc.json
│   │   │   │   ├── mocharc.mjs
│   │   │   │   ├── mocharc.yaml
│   │   │   │   └── mocharcWithThrowError.js
│   │   │   ├── current-test-title.fixture.js
│   │   │   ├── deprecate.fixture.js
│   │   │   ├── diffs/
│   │   │   │   ├── diffs.css.in
│   │   │   │   ├── diffs.css.out
│   │   │   │   ├── diffs.fixture.js
│   │   │   │   └── output
│   │   │   ├── esm/
│   │   │   │   ├── add.mjs
│   │   │   │   ├── dir-cjs-require/
│   │   │   │   │   └── index.js
│   │   │   │   ├── esm-failure.fixture.mjs
│   │   │   │   ├── esm-success.fixture.mjs
│   │   │   │   ├── js-folder/
│   │   │   │   │   ├── add.js
│   │   │   │   │   ├── esm-in-js.fixture.js
│   │   │   │   │   └── package.json
│   │   │   │   ├── loader-with-module-not-found/
│   │   │   │   │   ├── loader-that-recognizes-ts.mjs
│   │   │   │   │   ├── test-that-imports-non-existing-module.fixture.mjs
│   │   │   │   │   └── test-that-imports-non-existing-module.fixture.ts
│   │   │   │   ├── syntax-error/
│   │   │   │   │   └── esm-syntax-error.fixture.mjs
│   │   │   │   ├── test-that-uses-dir-cjs-require.fixture.js/
│   │   │   │   │   └── index.js
│   │   │   │   └── type-module/
│   │   │   │       ├── package.json
│   │   │   │       └── test-that-imports-non-existing-module.fixture.js
│   │   │   ├── exit.fixture.js
│   │   │   ├── failing-sync.fixture.js
│   │   │   ├── failing.fixture.js
│   │   │   ├── glob/
│   │   │   │   ├── glob.spec.js
│   │   │   │   └── nested/
│   │   │   │       └── glob.spec.js
│   │   │   ├── hooks/
│   │   │   │   ├── after-each-hook-async-error.fixture.js
│   │   │   │   ├── after-each-hook-error.fixture.js
│   │   │   │   ├── after-each-this-test-error.fixture.js
│   │   │   │   ├── after-hook-async-error.fixture.js
│   │   │   │   ├── after-hook-deepnested-error.fixture.js
│   │   │   │   ├── after-hook-error.fixture.js
│   │   │   │   ├── after-hook-nested-error.fixture.js
│   │   │   │   ├── before-each-hook-async-error.fixture.js
│   │   │   │   ├── before-each-hook-error-with-fail-affected.fixture.js
│   │   │   │   ├── before-each-hook-error.fixture.js
│   │   │   │   ├── before-each-hook-throw-non-error.fixture.js
│   │   │   │   ├── before-hook-async-error-tip.fixture.js
│   │   │   │   ├── before-hook-async-error.fixture.js
│   │   │   │   ├── before-hook-deepnested-error.fixture.js
│   │   │   │   ├── before-hook-error-tip.fixture.js
│   │   │   │   ├── before-hook-error-with-fail-affected.fixture.js
│   │   │   │   ├── before-hook-error.fixture.js
│   │   │   │   ├── before-hook-nested-error.fixture.js
│   │   │   │   ├── before-hook-root-error.fixture.js
│   │   │   │   ├── before-hook-throw-non-error.fixture.js
│   │   │   │   ├── multiple-hook-async-error.fixture.js
│   │   │   │   └── multiple-hook-error.fixture.js
│   │   │   ├── multiple-done-async.fixture.js
│   │   │   ├── multiple-done-before-each.fixture.js
│   │   │   ├── multiple-done-before.fixture.js
│   │   │   ├── multiple-done-specs.fixture.js
│   │   │   ├── multiple-done-with-error.fixture.js
│   │   │   ├── multiple-done.fixture.js
│   │   │   ├── multiple-runs/
│   │   │   │   ├── clean-references.fixture.js
│   │   │   │   ├── dispose.fixture.js
│   │   │   │   ├── multiple-runs-with-different-output-suite.fixture.js
│   │   │   │   ├── multiple-runs-with-flaky-before-each-suite.fixture.js
│   │   │   │   ├── multiple-runs-with-flaky-before-each.fixture.js
│   │   │   │   ├── run-thrice-helper.js
│   │   │   │   ├── run-thrice.fixture.js
│   │   │   │   ├── start-second-run-if-previous-is-still-running-suite.fixture.js
│   │   │   │   └── start-second-run-if-previous-is-still-running.fixture.js
│   │   │   ├── no-diff.fixture.js
│   │   │   ├── options/
│   │   │   │   ├── allow-uncaught/
│   │   │   │   │   ├── propagate.fixture.js
│   │   │   │   │   └── this-skip-it.fixture.js
│   │   │   │   ├── async-only-async.fixture.js
│   │   │   │   ├── async-only-sync.fixture.js
│   │   │   │   ├── bail-async.fixture.js
│   │   │   │   ├── bail-with-after.fixture.js
│   │   │   │   ├── bail-with-afterEach.fixture.js
│   │   │   │   ├── bail-with-before.fixture.js
│   │   │   │   ├── bail-with-beforeEach.fixture.js
│   │   │   │   ├── bail-with-test.fixture.js
│   │   │   │   ├── bail.fixture.js
│   │   │   │   ├── delay-fail.fixture.js
│   │   │   │   ├── delay-only.fixture.js
│   │   │   │   ├── delay.fixture.js
│   │   │   │   ├── dry-run/
│   │   │   │   │   ├── dry-run.fixture.js
│   │   │   │   │   └── stack-size.fixture.js
│   │   │   │   ├── extension/
│   │   │   │   │   ├── test1.fixture.js
│   │   │   │   │   └── test2.fixture.coffee
│   │   │   │   ├── file-alpha.fixture.js
│   │   │   │   ├── file-beta.fixture.js
│   │   │   │   ├── file-theta.fixture.js
│   │   │   │   ├── forbid-only/
│   │   │   │   │   ├── only-before-each.fixture.js
│   │   │   │   │   ├── only-before.fixture.js
│   │   │   │   │   ├── only-empty-suite.fixture.js
│   │   │   │   │   ├── only-suite.fixture.js
│   │   │   │   │   ├── only.fixture.js
│   │   │   │   │   └── passed.fixture.js
│   │   │   │   ├── forbid-pending/
│   │   │   │   │   ├── before-this-skip.fixture.js
│   │   │   │   │   ├── beforeEach-this-skip.fixture.js
│   │   │   │   │   ├── passed.fixture.js
│   │   │   │   │   ├── pending.fixture.js
│   │   │   │   │   ├── skip-empty-suite.fixture.js
│   │   │   │   │   ├── skip-suite.fixture.js
│   │   │   │   │   ├── skip.fixture.js
│   │   │   │   │   └── this-skip.fixture.js
│   │   │   │   ├── grep.fixture.js
│   │   │   │   ├── ignore/
│   │   │   │   │   ├── fail.fixture.js
│   │   │   │   │   ├── nested/
│   │   │   │   │   │   ├── fail.fixture.js
│   │   │   │   │   │   └── pass.fixture.js
│   │   │   │   │   └── pass.fixture.js
│   │   │   │   ├── jobs/
│   │   │   │   │   └── fail-in-parallel.fixture.js
│   │   │   │   ├── only/
│   │   │   │   │   ├── bdd.fixture.js
│   │   │   │   │   ├── qunit.fixture.js
│   │   │   │   │   └── tdd.fixture.js
│   │   │   │   ├── parallel/
│   │   │   │   │   ├── bail.fixture.js
│   │   │   │   │   ├── exclusive-test-a.fixture.js
│   │   │   │   │   ├── exclusive-test-b.fixture.js
│   │   │   │   │   ├── retries-a.fixture.js
│   │   │   │   │   ├── retries-b.fixture.js
│   │   │   │   │   ├── syntax-err.fixture.js
│   │   │   │   │   ├── test-a.fixture.js
│   │   │   │   │   ├── test-b.fixture.js
│   │   │   │   │   ├── test-c.fixture.js
│   │   │   │   │   ├── test-d.fixture.js
│   │   │   │   │   └── uncaught.fixture.js
│   │   │   │   ├── reporter-esm.fixture.mjs
│   │   │   │   ├── reporter-with-options.fixture.js
│   │   │   │   ├── retries.fixture.js
│   │   │   │   ├── slow-test.fixture.js
│   │   │   │   ├── sort-alpha.fixture.js
│   │   │   │   ├── sort-beta.fixture.js
│   │   │   │   ├── timeout-unref.fixture.js
│   │   │   │   └── watch/
│   │   │   │       ├── dependency.fixture.js
│   │   │   │       ├── hook.fixture.js
│   │   │   │       ├── test-file-change.fixture.js
│   │   │   │       └── test-with-dependency.fixture.js
│   │   │   ├── parallel/
│   │   │   │   ├── circular-error-array.mjs
│   │   │   │   ├── circular-error-object.mjs
│   │   │   │   ├── getter-error-object.mjs
│   │   │   │   ├── non-circular-error.mjs
│   │   │   │   ├── test1.mjs
│   │   │   │   ├── test2.mjs
│   │   │   │   ├── test3.mjs
│   │   │   │   ├── testworkerid1.mjs
│   │   │   │   ├── testworkerid2.mjs
│   │   │   │   └── testworkerid3.mjs
│   │   │   ├── passing-async.fixture.js
│   │   │   ├── passing-sync.fixture.js
│   │   │   ├── passing.fixture.js
│   │   │   ├── pending/
│   │   │   │   ├── programmatic.fixture.js
│   │   │   │   ├── skip-async-before-hooks.fixture.js
│   │   │   │   ├── skip-async-before-nested.fixture.js
│   │   │   │   ├── skip-async-before.fixture.js
│   │   │   │   ├── skip-async-beforeEach.fixture.js
│   │   │   │   ├── skip-async-spec.fixture.js
│   │   │   │   ├── skip-hierarchy.fixture.js
│   │   │   │   ├── skip-shorthand.fixture.js
│   │   │   │   ├── skip-sync-after.fixture.js
│   │   │   │   ├── skip-sync-before-hooks.fixture.js
│   │   │   │   ├── skip-sync-before-inner.fixture.js
│   │   │   │   ├── skip-sync-before-nested.fixture.js
│   │   │   │   ├── skip-sync-before.fixture.js
│   │   │   │   ├── skip-sync-beforeEach-cond.fixture.js
│   │   │   │   ├── skip-sync-beforeEach.fixture.js
│   │   │   │   ├── skip-sync-spec.fixture.js
│   │   │   │   └── spec.fixture.js
│   │   │   ├── plugins/
│   │   │   │   ├── global-fixtures/
│   │   │   │   │   ├── global-setup-teardown-multiple.fixture.js
│   │   │   │   │   ├── global-setup-teardown.fixture.js
│   │   │   │   │   ├── global-setup.fixture.js
│   │   │   │   │   └── global-teardown.fixture.js
│   │   │   │   └── root-hooks/
│   │   │   │       ├── esm/
│   │   │   │       │   ├── package.json
│   │   │   │       │   └── root-hook-defs-esm.fixture.js
│   │   │   │       ├── root-hook-defs-a.fixture.js
│   │   │   │       ├── root-hook-defs-b.fixture.js
│   │   │   │       ├── root-hook-defs-c.fixture.js
│   │   │   │       ├── root-hook-defs-d.fixture.js
│   │   │   │       ├── root-hook-defs-esm-broken.fixture.js
│   │   │   │       ├── root-hook-defs-esm.fixture.mjs
│   │   │   │       ├── root-hook-test-2.fixture.js
│   │   │   │       └── root-hook-test.fixture.js
│   │   │   ├── regression/
│   │   │   │   ├── issue-1991.fixture.js
│   │   │   │   ├── issue-2315.fixture.js
│   │   │   │   ├── issue-2406.fixture.js
│   │   │   │   └── issue-2417.fixture.js
│   │   │   ├── reporters.fixture.js
│   │   │   ├── retries/
│   │   │   │   ├── async.fixture.js
│   │   │   │   ├── early-pass.fixture.js
│   │   │   │   ├── hooks.fixture.js
│   │   │   │   └── nested.fixture.js
│   │   │   ├── runner/
│   │   │   │   ├── events-bail-retries.fixture.js
│   │   │   │   ├── events-bail.fixture.js
│   │   │   │   ├── events-basic.fixture.js
│   │   │   │   ├── events-delay.fixture.js
│   │   │   │   └── events-retries.fixture.js
│   │   │   ├── signals-sigabrt.fixture.js
│   │   │   ├── signals-sigterm-numeric.fixture.js
│   │   │   ├── signals-sigterm.fixture.js
│   │   │   ├── simple-reporter.js
│   │   │   ├── simple-ui.fixture.js
│   │   │   ├── simple-ui.fixture.mjs
│   │   │   ├── suite/
│   │   │   │   ├── suite-no-callback.fixture.js
│   │   │   │   ├── suite-returning-value.fixture.js
│   │   │   │   ├── suite-skipped-callback.fixture.js
│   │   │   │   └── suite-skipped-no-callback.fixture.js
│   │   │   ├── test-for-simple-ui.fixture.js
│   │   │   ├── timeout-chained-call.fixture.js
│   │   │   ├── timeout-override.fixture.js
│   │   │   ├── timeout.fixture.js
│   │   │   └── uncaught/
│   │   │       ├── after-runner.fixture.js
│   │   │       ├── double.fixture.js
│   │   │       ├── fatal.fixture.js
│   │   │       ├── hook.fixture.js
│   │   │       ├── issue-1327.fixture.js
│   │   │       ├── issue-1417.fixture.js
│   │   │       ├── listeners.fixture.js
│   │   │       ├── pending.fixture.js
│   │   │       ├── recover.fixture.js
│   │   │       └── unhandled.fixture.js
│   │   ├── glob.spec.js
│   │   ├── helpers.js
│   │   ├── hook-err.spec.js
│   │   ├── hooks.spec.js
│   │   ├── init.spec.js
│   │   ├── invalid-arguments.spec.js
│   │   ├── multiple-done.spec.js
│   │   ├── multiple-runs.spec.js
│   │   ├── no-diff.spec.js
│   │   ├── only.spec.js
│   │   ├── options/
│   │   │   ├── allowUncaught.spec.js
│   │   │   ├── asyncOnly.spec.js
│   │   │   ├── bail.spec.js
│   │   │   ├── delay.spec.js
│   │   │   ├── dryRun.spec.js
│   │   │   ├── exit.spec.js
│   │   │   ├── extension.spec.js
│   │   │   ├── failZero.spec.js
│   │   │   ├── file.spec.js
│   │   │   ├── forbidOnly.spec.js
│   │   │   ├── forbidPending.spec.js
│   │   │   ├── grep.spec.js
│   │   │   ├── ignore.spec.js
│   │   │   ├── invert.spec.js
│   │   │   ├── jobs.spec.js
│   │   │   ├── listInterfaces.spec.js
│   │   │   ├── listReporters.spec.js
│   │   │   ├── node-flags.spec.js
│   │   │   ├── parallel.spec.js
│   │   │   ├── passOnFailingTestSuite.spec.js
│   │   │   ├── posixExitCodes.spec.js
│   │   │   ├── reporter-option.spec.js
│   │   │   ├── reporter.spec.js
│   │   │   ├── retries.spec.js
│   │   │   ├── sort.spec.js
│   │   │   ├── timeout.spec.js
│   │   │   ├── ui.spec.js
│   │   │   └── watch.spec.js
│   │   ├── parallel.spec.js
│   │   ├── pending.spec.js
│   │   ├── plugins/
│   │   │   ├── global-fixtures.spec.js
│   │   │   └── root-hooks.spec.js
│   │   ├── regression.spec.js
│   │   ├── reporters.spec.js
│   │   ├── retries.spec.js
│   │   ├── suite.spec.js
│   │   ├── timeout.spec.js
│   │   └── uncaught.spec.js
│   ├── interfaces/
│   │   ├── bdd.spec.js
│   │   ├── exports.spec.js
│   │   ├── qunit.spec.js
│   │   └── tdd.spec.js
│   ├── jsapi/
│   │   └── index.js
│   ├── node-unit/
│   │   ├── buffered-worker-pool.spec.js
│   │   ├── cli/
│   │   │   ├── config.spec.js
│   │   │   ├── fixtures/
│   │   │   │   ├── bad-module.fixture.js
│   │   │   │   └── bad-require.fixture.js
│   │   │   ├── mocha-flags.spec.js
│   │   │   ├── node-flags.spec.js
│   │   │   ├── options.spec.js
│   │   │   ├── run-helpers.spec.js
│   │   │   └── run.spec.js
│   │   ├── esm-utils.spec.js
│   │   ├── fixtures/
│   │   │   ├── broken-default-import.mjs
│   │   │   ├── broken-syntax.ts
│   │   │   ├── dumb-module.fixture.js
│   │   │   ├── dumber-module.fixture.js
│   │   │   ├── mock-mocha-forbidden-exclusivity-err.ts
│   │   │   ├── mock-ts-node-compile-err.ts
│   │   │   ├── module-without-default-export.mjs
│   │   │   └── wonky-reporter.fixture.js
│   │   ├── mocha.spec.js
│   │   ├── parallel-buffered-runner.spec.js
│   │   ├── reporters/
│   │   │   └── parallel-buffered.spec.js
│   │   ├── serializer.spec.js
│   │   ├── stack-trace-filter.spec.js
│   │   ├── utils.spec.js
│   │   └── worker.spec.js
│   ├── only/
│   │   ├── bdd-require.spec.js
│   │   └── global/
│   │       ├── bdd.spec.js
│   │       ├── qunit.spec.js
│   │       └── tdd.spec.js
│   ├── reporters/
│   │   ├── base.spec.js
│   │   ├── doc.spec.js
│   │   ├── dot.spec.js
│   │   ├── helpers.js
│   │   ├── json-stream.spec.js
│   │   ├── json.spec.js
│   │   ├── landing.spec.js
│   │   ├── list.spec.js
│   │   ├── markdown.spec.js
│   │   ├── min.spec.js
│   │   ├── nyan.spec.js
│   │   ├── progress.spec.js
│   │   ├── spec.spec.js
│   │   ├── tap.spec.js
│   │   └── xunit.spec.js
│   ├── require/
│   │   ├── a.js
│   │   ├── b.coffee
│   │   ├── c.js
│   │   ├── d.coffee
│   │   └── require.spec.js
│   ├── setup.js
│   ├── smoke/
│   │   └── smoke.spec.js
│   └── unit/
│       ├── context.spec.js
│       ├── duration.spec.js
│       ├── errors.spec.js
│       ├── globals.spec.js
│       ├── grep.spec.js
│       ├── hook-async.spec.js
│       ├── hook-sync-nested.spec.js
│       ├── hook-sync.spec.js
│       ├── hook-timeout.spec.js
│       ├── hook.spec.js
│       ├── mocha.spec.js
│       ├── overspecified-async.spec.js
│       ├── parse-query.spec.js
│       ├── plugin-loader.spec.js
│       ├── required-tokens.spec.js
│       ├── root.spec.js
│       ├── runnable.spec.js
│       ├── runner.spec.js
│       ├── suite.spec.js
│       ├── test.spec.js
│       ├── throw.spec.js
│       ├── timeout.spec.js
│       └── utils.spec.js
└── tsconfig.json
Download .txt
SYMBOL INDEX (440 symbols across 95 files)

FILE: .wallaby.js
  method setup (line 35) | setup(wallaby) {

FILE: bin/mocha.js
  constant SIGNAL_OFFSET (line 26) | const SIGNAL_OFFSET = 128;

FILE: browser-entry.js
  function timeslice (line 96) | function timeslice() {

FILE: docs/_data/supporters.cjs
  constant BLOCKED_STRINGS (line 27) | const BLOCKED_STRINGS =
  constant BLOCKED_CATEGORIES (line 33) | const BLOCKED_CATEGORIES = [
  constant API_ENDPOINT (line 47) | const API_ENDPOINT = "https://api.opencollective.com/graphql/v2";
  constant SPONSOR_TIER (line 49) | const SPONSOR_TIER = "sponsors";
  constant BACKER_TIER (line 50) | const BACKER_TIER = "backers";
  constant PRODUCTION_SUCCESS_THRESHOLD (line 53) | const PRODUCTION_SUCCESS_THRESHOLD = 0.9;
  constant SUPPORTER_IMAGE_PATH (line 55) | const SUPPORTER_IMAGE_PATH = resolve(__dirname, "../images/supporters");
  constant SUPPORTER_QUERY (line 57) | const SUPPORTER_QUERY = `query account($limit: Int, $offset: Int, $slug:...
  constant GRAPHQL_PAGE_SIZE (line 82) | const GRAPHQL_PAGE_SIZE = 1000;

FILE: karma.conf.js
  constant BASE_BUNDLE_DIR_PATH (line 28) | const BASE_BUNDLE_DIR_PATH = path.join(__dirname, ".karma");
  constant BROWSER (line 31) | const BROWSER = env.BROWSER;

FILE: lib/browser/highlight-tags.js
  function highlight (line 10) | function highlight(js) {

FILE: lib/cli/options.js
  constant YARGS_PARSER_CONFIG (line 49) | const YARGS_PARSER_CONFIG = {

FILE: lib/cli/run-option-metadata.js
  constant TYPES (line 15) | const TYPES = (exports.types = {
  constant ALL_MOCHA_FLAGS (line 97) | const ALL_MOCHA_FLAGS = Object.keys(TYPES).reduce((acc, key) => {

FILE: lib/cli/run.js
  constant GROUPS (line 34) | const GROUPS = {

FILE: lib/cli/watch-run.js
  method beforeRun (line 57) | beforeRun({ mocha }) {
  method beforeRun (line 117) | beforeRun({ mocha }) {
  function createPathFilter (line 165) | function createPathFilter(globPaths, basePath) {
  function matchPattern (line 263) | function matchPattern(filePath, pattern, matchParent) {
  function createPathMatcher (line 297) | function createPathMatcher(allowed, ignored, basePath) {

FILE: lib/context.js
  function Context (line 21) | function Context() {}

FILE: lib/errors.js
  constant MOCHA_ERRORS (line 69) | const MOCHA_ERRORS = new Set(Object.values(constants));
  function createNoFilesMatchPatternError (line 80) | function createNoFilesMatchPatternError(message, pattern) {
  function createInvalidReporterError (line 95) | function createInvalidReporterError(message, reporter) {
  function createInvalidInterfaceError (line 111) | function createInvalidInterfaceError(message, ui) {
  function createUnsupportedError (line 126) | function createUnsupportedError(message) {
  function createMissingArgumentError (line 142) | function createMissingArgumentError(message, argument, expected) {
  function createInvalidArgumentTypeError (line 156) | function createInvalidArgumentTypeError(message, argument, expected) {
  function createInvalidArgumentValueError (line 176) | function createInvalidArgumentValueError(message, argument, value, reaso...
  function createInvalidExceptionError (line 193) | function createInvalidExceptionError(message, value) {
  function createFatalError (line 209) | function createFatalError(message, value) {
  function createInvalidLegacyPluginError (line 227) | function createInvalidLegacyPluginError(message, pluginType, pluginId) {
  function createInvalidPluginError (line 249) | function createInvalidPluginError(...args) {
  function createMochaInstanceAlreadyDisposedError (line 261) | function createMochaInstanceAlreadyDisposedError(
  function createMochaInstanceAlreadyRunningError (line 279) | function createMochaInstanceAlreadyRunningError(message, instance) {
  function createMultipleDoneError (line 295) | function createMultipleDoneError(runnable, originalErr) {
  function createForbiddenExclusivityError (line 332) | function createForbiddenExclusivityError(mocha) {
  function createInvalidPluginDefinitionError (line 356) | function createInvalidPluginDefinitionError(msg, pluginDef) {
  function createInvalidPluginImplementationError (line 373) | function createInvalidPluginImplementationError(
  function createTimeoutError (line 392) | function createTimeoutError(msg, timeout, file) {
  function createUnparsableFileError (line 407) | function createUnparsableFileError(message) {

FILE: lib/hook.js
  class Hook (line 7) | class Hook extends Runnable {
    method constructor (line 15) | constructor(title, fn) {
    method reset (line 23) | reset() {
    method error (line 36) | error(err) {
    method serialize (line 52) | serialize() {

FILE: lib/interfaces/common.js
  function shouldBeTested (line 35) | function shouldBeTested(suite) {

FILE: lib/interfaces/exports.js
  function visit (line 27) | function visit(obj, file) {

FILE: lib/mocha.js
  function Mocha (line 161) | function Mocha(options = {}) {

FILE: lib/nodejs/buffered-worker-pool.js
  constant WORKER_PATH (line 22) | const WORKER_PATH = require.resolve("./worker.js");
  constant WORKER_POOL_DEFAULT_OPTS (line 37) | const WORKER_POOL_DEFAULT_OPTS = {
  class BufferedWorkerPool (line 50) | class BufferedWorkerPool {
    method constructor (line 55) | constructor(opts = {}) {
    method terminate (line 110) | async terminate(force = false) {
    method run (line 126) | async run(filepath, options = {}) {
    method stats (line 146) | stats() {
    method create (line 154) | static create(...args) {
    method serializeOptions (line 166) | static serializeOptions(opts = {}) {
    method resetOptionsCache (line 189) | static resetOptionsCache() {

FILE: lib/nodejs/esm-utils.js
  function dealWithExports (line 143) | function dealWithExports(module) {

FILE: lib/nodejs/parallel-buffered-runner.js
  constant DEFAULT_WORKER_REPORTER (line 25) | const DEFAULT_WORKER_REPORTER =
  constant DENY_OPTIONS (line 31) | const DENY_OPTIONS = [
  constant DEBUG_STATS_INTERVAL (line 59) | const DEBUG_STATS_INTERVAL = 5000;
  constant ABORTED (line 61) | const ABORTED = "ABORTED";
  constant IDLE (line 62) | const IDLE = "IDLE";
  constant ABORTING (line 63) | const ABORTING = "ABORTING";
  constant RUNNING (line 64) | const RUNNING = "RUNNING";
  constant BAILING (line 65) | const BAILING = "BAILING";
  constant BAILED (line 66) | const BAILED = "BAILED";
  constant COMPLETE (line 67) | const COMPLETE = "COMPLETE";
  class ParallelBufferedRunner (line 84) | class ParallelBufferedRunner extends Runner {
    method constructor (line 85) | constructor(...args) {
    method _createFileRunner (line 118) | _createFileRunner(pool, options) {
    method _bindSigIntListener (line 240) | _bindSigIntListener(pool) {
    method run (line 281) | run(callback, { files, options = {} } = {}) {
    method linkPartialObjects (line 391) | linkPartialObjects(value) {
    method isParallelMode (line 403) | isParallelMode() {
    method workerReporter (line 416) | workerReporter(reporter) {

FILE: lib/nodejs/reporters/parallel-buffered.js
  constant EVENT_NAMES (line 44) | const EVENT_NAMES = [
  constant ONCE_EVENT_NAMES (line 61) | const ONCE_EVENT_NAMES = [EVENT_DELAY_BEGIN, EVENT_DELAY_END];
  class ParallelBuffered (line 71) | class ParallelBuffered extends Base {
    method constructor (line 76) | constructor(runner, opts) {
    method createListener (line 109) | createListener(eventName) {
    method createListeners (line 127) | createListeners(runner) {
    method done (line 158) | done(failures, callback) {

FILE: lib/nodejs/serializer.js
  constant SERIALIZABLE_RESULT_NAME (line 20) | const SERIALIZABLE_RESULT_NAME = "SerializableWorkerResult";
  constant SERIALIZABLE_TYPES (line 21) | const SERIALIZABLE_TYPES = new Set(["object", "array", "function", "erro...
  class SerializableWorkerResult (line 27) | class SerializableWorkerResult {
    method constructor (line 37) | constructor(events = [], failureCount = 0) {
    method create (line 66) | static create(...args) {
    method serialize (line 75) | serialize() {
    method deserialize (line 89) | static deserialize(obj) {
    method isSerializedWorkerResult (line 102) | static isSerializedWorkerResult(value) {
  class SerializableEvent (line 121) | class SerializableEvent {
    method constructor (line 137) | constructor(eventName, originalValue, originalError) {
    method create (line 186) | static create(...args) {
    method _serialize (line 197) | static _serialize(pairs, parent, key) {
    method serialize (line 252) | serialize() {
    method _deserializeError (line 295) | static _deserializeError(value) {
    method _deserializeObject (line 309) | static _deserializeObject(parent, key) {
    method deserialize (line 346) | static deserialize(obj) {

FILE: lib/nodejs/worker.js
  function run (line 66) | async function run(filepath, serializedOptions = "{}") {

FILE: lib/pending.js
  class PendingError (line 12) | class PendingError extends Error {
    method constructor (line 13) | constructor(message) {

FILE: lib/plugin-loader.js
  method validate (line 40) | validate(value) {
  method finalize (line 50) | async finalize(rootHooks) {
  method validate (line 86) | validate(value) {
  method validate (line 110) | validate(value) {
  class PluginLoader (line 136) | class PluginLoader {
    method constructor (line 141) | constructor({ pluginDefs = MochaPlugins, ignore = [] } = {}) {
    method register (line 187) | register(pluginDef) {
    method load (line 229) | load(requiredModule) {
    method finalize (line 261) | async finalize() {
    method create (line 282) | static create({ pluginDefs = MochaPlugins, ignore = [] } = {}) {

FILE: lib/reporters/base.js
  function getBrowserWindowSize (line 26) | function getBrowserWindowSize() {
  class Base (line 50) | class Base {
    method constructor (line 59) | constructor(runner, options) {
    method epilogue (line 105) | epilogue() {
  function stringifyDiffObjs (line 278) | function stringifyDiffObjs(err) {
  function pad (line 452) | function pad(str, len) {
  function inlineDiff (line 465) | function inlineDiff(actual, expected) {
  function unifiedDiff (line 502) | function unifiedDiff(actual, expected) {
  function errorDiff (line 542) | function errorDiff(actual, expected) {
  function colorLines (line 565) | function colorLines(name, str) {
  function sameType (line 587) | function sameType(a, b) {

FILE: lib/reporters/doc.js
  class Doc (line 22) | class Doc extends Base {
    method constructor (line 34) | constructor(runner, options) {

FILE: lib/reporters/dot.js
  class Dot (line 22) | class Dot extends Base {
    method constructor (line 34) | constructor(runner, options) {

FILE: lib/reporters/html.js
  class HTML (line 46) | class HTML extends Base {
    method constructor (line 58) | constructor(runner, options) {
    method suiteURL (line 286) | suiteURL(suite) {
    method testURL (line 295) | testURL(test) {
    method addCodeToggle (line 305) | addCodeToggle(el, contents) {
  function makeUrl (line 324) | function makeUrl(s) {
  function error (line 347) | function error(msg) {
  function fragment (line 356) | function fragment(html) {
  function hideSuitesWithout (line 380) | function hideSuitesWithout(classname) {
  function unhide (line 393) | function unhide() {
  function text (line 406) | function text(el, contents) {
  function on (line 417) | function on(el, event, fn) {

FILE: lib/reporters/json-stream.js
  class JSONStream (line 22) | class JSONStream extends Base {
    method constructor (line 34) | constructor(runner, options) {
  function writeEvent (line 67) | function writeEvent(event) {
  function clean (line 79) | function clean(test) {

FILE: lib/reporters/json.js
  class JSONReporter (line 26) | class JSONReporter extends Base {
    method constructor (line 38) | constructor(runner, options = {}) {
  function clean (line 108) | function clean(test) {
  function cleanCycles (line 132) | function cleanCycles(obj) {
  function errorJSON (line 156) | function errorJSON(err) {

FILE: lib/reporters/landing.js
  class Landing (line 42) | class Landing extends Base {
    method constructor (line 54) | constructor(runner, options) {

FILE: lib/reporters/list.js
  class List (line 25) | class List extends Base {
    method constructor (line 37) | constructor(runner, options) {

FILE: lib/reporters/markdown.js
  class Markdown (line 28) | class Markdown extends Base {
    method constructor (line 40) | constructor(runner, options) {

FILE: lib/reporters/min.js
  class Min (line 19) | class Min extends Base {
    method constructor (line 34) | constructor(runner, options) {

FILE: lib/reporters/nyan.js
  class NyanCat (line 22) | class NyanCat extends Base {
    method constructor (line 34) | constructor(runner, options) {
    method draw (line 81) | draw() {
    method drawScoreboard (line 96) | drawScoreboard() {
    method appendRainbow (line 119) | appendRainbow() {
    method drawRainbow (line 138) | drawRainbow() {
    method drawNyanCat (line 155) | drawNyanCat() {
    method face (line 191) | face() {
    method cursorUp (line 210) | cursorUp(n) {
    method cursorDown (line 221) | cursorDown(n) {
    method generateColors (line 231) | generateColors() {
    method rainbowify (line 253) | rainbowify(str) {

FILE: lib/reporters/progress.js
  class Progress (line 28) | class Progress extends Base {
    method constructor (line 40) | constructor(runner, options) {

FILE: lib/reporters/spec.js
  class Spec (line 26) | class Spec extends Base {
    method constructor (line 38) | constructor(runner, options) {

FILE: lib/reporters/tap.js
  class TAP (line 26) | class TAP extends Base {
    method constructor (line 38) | constructor(runner, options) {
  function title (line 86) | function title(test) {
  function println (line 97) | function println() {
  function createProducer (line 111) | function createProducer(tapVersion) {
  class TAPProducer (line 137) | class TAPProducer {
    method writeVersion (line 143) | writeVersion() {}
    method writePlan (line 151) | writePlan(ntests) {
    method writePass (line 162) | writePass(n, test) {
    method writePending (line 173) | writePending(n, test) {
    method writeFail (line 184) | writeFail(n, test) {
    method writeEpilogue (line 194) | writeEpilogue(stats) {
  class TAP12Producer (line 213) | class TAP12Producer extends TAPProducer {
    method writeFail (line 218) | writeFail(n, test, err) {
  class TAP13Producer (line 241) | class TAP13Producer extends TAPProducer {
    method writeVersion (line 246) | writeVersion() {
    method writeFail (line 254) | writeFail(n, test, err) {
  function indent (line 272) | function indent(level) {

FILE: lib/reporters/xunit.js
  class XUnit (line 34) | class XUnit extends Base {
    method constructor (line 46) | constructor(runner, options) {
    method done (line 121) | done(failures, fn) {
    method write (line 136) | write(line) {
    method test (line 151) | test(test, options) {
  function tag (line 197) | function tag(name, attrs, close, content) {
  function testFilePath (line 215) | function testFilePath(filepath, options) {

FILE: lib/runnable.js
  class Runnable (line 25) | class Runnable extends EventEmitter {
    method constructor (line 36) | constructor(title, fn) {
    method reset (line 58) | reset() {
    method timeout (line 87) | timeout(ms) {
    method slow (line 120) | slow(ms) {
    method skip (line 138) | skip() {
    method isPending (line 148) | isPending() {
    method isFailed (line 157) | isFailed() {
    method isPassed (line 166) | isPassed() {
    method retries (line 175) | retries(n) {
    method currentRetry (line 187) | currentRetry(n) {
    method fullTitle (line 202) | fullTitle() {
    method titlePath (line 213) | titlePath() {
    method clearTimeout (line 222) | clearTimeout() {
    method resetTimeout (line 231) | resetTimeout() {
    method globals (line 251) | globals(globals) {
    method run (line 264) | run(fn) {
    method _timeoutError (line 424) | _timeoutError(ms) {
    method toValueOrError (line 464) | static toValueOrError(value) {

FILE: lib/runner.js
  class Runner (line 172) | class Runner extends EventEmitter {
    method constructor (line 187) | constructor(suite, opts = {}) {
  function createHookSkipError (line 453) | function createHookSkipError(hookTitle, hookError) {
  function failTestsInSuite (line 494) | function failTestsInSuite(s) {
  function next (line 592) | function next(i) {
  function next (line 719) | function next(suite) {
  function hookErr (line 827) | function hookErr(err, errSuite, after) {
  function next (line 879) | function next(err, errSuite) {
  function next (line 1024) | function next(errSuite) {
  function done (line 1058) | function done(errSuite) {
  function filterLeaks (line 1353) | function filterLeaks(ok, globals) {
  function isError (line 1396) | function isError(err) {
  function thrown2Error (line 1408) | function thrown2Error(err) {

FILE: lib/stats-collector.js
  function createStatsCollector (line 31) | function createStatsCollector(runner) {

FILE: lib/suite.js
  class Suite (line 27) | class Suite extends EventEmitter {
    method create (line 108) | static create(parent, title) {
    method constructor (line 125) | constructor(title, parentContext, isRoot) {
    method reset (line 168) | reset() {
    method clone (line 187) | clone() {
    method timeout (line 207) | timeout(ms) {
    method retries (line 242) | retries(n) {
    method slow (line 258) | slow(ms) {
    method bail (line 277) | bail(bail) {
    method isPending (line 291) | isPending() {
    method _createHook (line 302) | _createHook(title, fn) {
    method beforeAll (line 321) | beforeAll(title, fn) {
    method afterAll (line 345) | afterAll(title, fn) {
    method beforeEach (line 369) | beforeEach(title, fn) {
    method afterEach (line 393) | afterEach(title, fn) {
    method addSuite (line 416) | addSuite(suite) {
    method addTest (line 435) | addTest(test) {
    method fullTitle (line 454) | fullTitle() {
    method titlePath (line 466) | titlePath() {
    method total (line 484) | total() {
    method eachTest (line 500) | eachTest(fn) {
    method run (line 512) | run() {
    method hasOnly (line 524) | hasOnly() {
    method filterOnly (line 540) | filterOnly() {
    method appendOnlySuite (line 571) | appendOnlySuite(suite) {
    method markOnly (line 580) | markOnly() {
    method appendOnlyTest (line 590) | appendOnlyTest(test) {
    method getHooks (line 598) | getHooks(name) {
    method dispose (line 605) | dispose() {
    method cleanReferences (line 622) | cleanReferences() {
    method serialize (line 656) | serialize() {

FILE: lib/test.js
  class Test (line 10) | class Test extends Runnable {
    method constructor (line 19) | constructor(title, fn) {
    method reset (line 37) | reset() {
    method retriedTest (line 48) | retriedTest(n) {
    method markOnly (line 60) | markOnly() {
    method clone (line 64) | clone() {
    method serialize (line 84) | serialize() {

FILE: lib/types.d.ts
  type MochaOptions (line 18) | interface MochaOptions {
  type DoneCB (line 124) | type DoneCB = (failures?: number) => void;
  type RunnerOptions (line 126) | interface RunnerOptions {
  type MochaRootHookObject (line 136) | interface MochaRootHookObject {
  type MochaGlobalFixture (line 151) | type MochaGlobalFixture = () => void | Promise<void>;
  type PluginDefinition (line 156) | interface PluginDefinition {
  type PluginValidator (line 183) | type PluginValidator = (this: PluginDefinition, value: unknown) => void;
  type PluginFinalizer (line 189) | type PluginFinalizer = (
  type FileCollectionOptions (line 196) | interface FileCollectionOptions {
  type UnmatchedFile (line 214) | interface UnmatchedFile {
  type FileCollectionResponse (line 224) | interface FileCollectionResponse {
  type BeforeWatchRunOptions (line 234) | interface BeforeWatchRunOptions {
  type BeforeWatchRun (line 244) | type BeforeWatchRun = (options: BeforeWatchRunOptions) => Mocha;
  type Rerunner (line 250) | interface Rerunner {
  type PathPattern (line 261) | interface PathPattern {
  type PathFilter (line 272) | interface PathFilter {
  type AllowMatchFunction (line 285) | type AllowMatchFunction = (filePath: string) => boolean;
  type PathMatcher (line 291) | interface PathMatcher {
  type StatsCollector (line 298) | interface StatsCollector {
  type PluginLoaderOptions (line 324) | interface PluginLoaderOptions {
  type MochaTimeoutError (line 339) | interface MochaTimeoutError extends Error {
  type SerializedEvent (line 358) | interface SerializedEvent {
  type SerializedWorkerResult (line 371) | interface SerializedWorkerResult {
  type SigIntListener (line 386) | type SigIntListener = () => Promise<void>;
  type FileRunner (line 393) | type FileRunner = (filename: string) => Promise<SerializedWorkerResult>;
  type BufferedEvent (line 400) | interface BufferedEvent {
  type FullErrorStack (line 412) | interface FullErrorStack {
  type Reporter (line 418) | interface Reporter {

FILE: lib/utils.js
  constant MOCHA_ID_PROP_NAME (line 16) | const MOCHA_ID_PROP_NAME = "__mocha_id__";
  function emptyRepresentation (line 97) | function emptyRepresentation(value, typeHint) {
  function jsonStringify (line 254) | function jsonStringify(object, spaces, depth) {
  function withStack (line 359) | function withStack(value, fn) {
  function isMochaInternal (line 447) | function isMochaInternal(line) {
  function isNodeInternal (line 455) | function isNodeInternal(line) {
  method get (line 634) | get() {
  function _breakCircularDeps (line 658) | function _breakCircularDeps(obj) {

FILE: scripts/karma-rollup-plugin.js
  function framework (line 47) | function framework(fileConfigs, pluginConfig, basePath, preprocessors) {
  function bundlePreprocessor (line 111) | function bundlePreprocessor(config) {

FILE: scripts/pick-from-package-json.mjs
  function pickFromPackageJson (line 10) | function pickFromPackageJson({ keys }) {

FILE: test/assertions.js
  method installInto (line 9) | installInto(expect) {

FILE: test/compiler-esm/test-tla.ts
  type Foo (line 2) | enum Foo {

FILE: test/compiler-esm/test.ts
  type Foo (line 2) | enum Foo {

FILE: test/compiler-fixtures/esm-loader.fixture.mjs
  function load (line 4) | async function load(url, context, nextLoad) {

FILE: test/compiler-fixtures/esm-only-loader/esm-loader.fixture.mjs
  function load (line 4) | async function load(url, context, nextLoad) {

FILE: test/integration/compiler-esm-only-loader.spec.js
  function loadAndExpect (line 13) | function loadAndExpect(filename, done) {

FILE: test/integration/compiler-esm.spec.js
  function loadAndExpect (line 12) | function loadAndExpect(filename, done) {

FILE: test/integration/config.spec.js
  function _loadConfig (line 32) | function _loadConfig() {
  function _loadConfig (line 44) | function _loadConfig() {
  function _loadConfig (line 53) | function _loadConfig() {
  function _loadConfig (line 65) | function _loadConfig() {
  function _loadConfig (line 105) | function _loadConfig() {

FILE: test/integration/diffs.spec.js
  function getDiffs (line 15) | function getDiffs(output) {
  function getExpectedOutput (line 54) | function getExpectedOutput() {

FILE: test/integration/file-utils.spec.js
  constant SYMLINK_SUPPORT (line 8) | const SYMLINK_SUPPORT = process.platform !== "win32";

FILE: test/integration/fixtures/current-test-title.fixture.js
  function getTitle (line 4) | function getTitle(ctx) {

FILE: test/integration/fixtures/esm/add.mjs
  function add (line 1) | function add(a, b) {

FILE: test/integration/fixtures/esm/js-folder/add.js
  function add (line 1) | function add(a, b) {

FILE: test/integration/fixtures/esm/loader-with-module-not-found/loader-that-recognizes-ts.mjs
  function resolve (line 10) | async function resolve(specifier, context, defaultResolve) {

FILE: test/integration/fixtures/options/reporter-esm.fixture.mjs
  function SimplerReporter (line 1) | function SimplerReporter(runner, options) {

FILE: test/integration/fixtures/options/reporter-with-options.fixture.js
  function ReporterWithOptions (line 3) | function ReporterWithOptions(runner, options) {

FILE: test/integration/fixtures/parallel/getter-error-object.mjs
  method inner (line 8) | get inner() {

FILE: test/integration/fixtures/plugins/root-hooks/esm/root-hook-defs-esm.fixture.js
  method beforeEach (line 2) | beforeEach() {
  method afterEach (line 5) | afterEach() {

FILE: test/integration/fixtures/plugins/root-hooks/root-hook-defs-a.fixture.js
  method beforeAll (line 4) | beforeAll() {
  method beforeEach (line 7) | beforeEach() {
  method afterAll (line 10) | afterAll() {
  method afterEach (line 13) | afterEach() {

FILE: test/integration/fixtures/plugins/root-hooks/root-hook-defs-c.fixture.js
  method beforeAll (line 4) | beforeAll() {
  method beforeEach (line 7) | beforeEach() {
  method afterAll (line 10) | afterAll() {
  method afterEach (line 13) | afterEach() {

FILE: test/integration/fixtures/plugins/root-hooks/root-hook-defs-esm-broken.fixture.js
  method beforeAll (line 2) | beforeAll() {
  method afterAll (line 5) | afterAll() {

FILE: test/integration/fixtures/plugins/root-hooks/root-hook-defs-esm.fixture.mjs
  method beforeAll (line 2) | beforeAll() {
  method afterAll (line 5) | afterAll() {

FILE: test/integration/fixtures/regression/issue-1991.fixture.js
  function MemoryLeak (line 5) | function MemoryLeak () {

FILE: test/integration/fixtures/simple-reporter.js
  class MyReporter (line 14) | class MyReporter {
    method constructor (line 15) | constructor(runner) {
    method indent (line 44) | indent() {
    method increaseIndent (line 48) | increaseIndent() {
    method decreaseIndent (line 52) | decreaseIndent() {

FILE: test/integration/fixtures/simple-ui.fixture.mjs
  constant EVENT_FILE_PRE_REQUIRE (line 5) | const EVENT_FILE_PRE_REQUIRE = Mocha.Suite.constants.EVENT_FILE_PRE_REQU...
  function SimpleUI (line 10) | function SimpleUI(suite) {

FILE: test/integration/fixtures/timeout.fixture.js
  function sleep (line 15) | function sleep (ms) {

FILE: test/integration/glob.spec.js
  function execMochaWith (line 190) | function execMochaWith(validate) {

FILE: test/integration/helpers.js
  constant SIGNAL_OFFSET (line 11) | const SIGNAL_OFFSET = 128;
  constant MOCHA_EXECUTABLE (line 16) | const MOCHA_EXECUTABLE = require.resolve("../../bin/mocha");
  constant SPLIT_DOT_REPORTER_REGEXP (line 21) | const SPLIT_DOT_REPORTER_REGEXP = new RegExp("[\\n" + Base.symbols.dot +...
  constant DEFAULT_FIXTURE (line 26) | const DEFAULT_FIXTURE = "__default__";
  constant DEFAULT_FIXTURE_PATH (line 31) | const DEFAULT_FIXTURE_PATH = resolveFixturePath(DEFAULT_FIXTURE);
  function runMocha (line 57) | function runMocha(fixturePath, args, done, opts = {}) {
  function runMochaJSON (line 92) | function runMochaJSON(fixturePath, args, done, opts) {
  function runMochaAsync (line 136) | function runMochaAsync(fixturePath, args, opts) {
  function runMochaJSONAsync (line 159) | function runMochaJSONAsync(fixturePath, args = [], opts = {}) {
  function toJSONResult (line 181) | function toJSONResult(result) {
  function defaultArgs (line 207) | function defaultArgs(args = [DEFAULT_FIXTURE_PATH]) {
  function invokeMocha (line 232) | function invokeMocha(args, done, opts = {}) {
  function invokeMochaAsync (line 258) | function invokeMochaAsync(args, opts = {}) {
  function invokeNode (line 286) | function invokeNode(args, done, opts = {}) {
  function createSubprocess (line 306) | function createSubprocess(args, done, opts = {}) {
  function resolveFixturePath (line 384) | function resolveFixturePath(fixture) {
  function getSummary (line 402) | function getSummary(res) {
  function runMochaWatchAsync (line 429) | async function runMochaWatchAsync(args, opts, change) {
  function runMochaWatchJSONAsync (line 480) | async function runMochaWatchJSONAsync(args, opts, change) {
  function touchFile (line 504) | function touchFile(filepath) {
  function replaceFileContents (line 522) | function replaceFileContents(filepath, pattern, replacement) {
  function copyFixture (line 535) | function copyFixture(fixtureName, dest) {
  function sleep (line 562) | function sleep(time) {

FILE: test/integration/hook-err.spec.js
  function run (line 357) | function run(fnPath, outputFilter) {
  function onlyConsoleOutput (line 372) | function onlyConsoleOutput() {
  function onlyErrorTitle (line 382) | function onlyErrorTitle() {

FILE: test/integration/options/exit.spec.js
  function killSubprocess (line 14) | function killSubprocess() {

FILE: test/integration/options/ignore.spec.js
  function runMochaTest (line 18) | function runMochaTest(fixture, args, handleResult, done) {

FILE: test/integration/options/parallel.spec.js
  constant REPORTER_FIXTURE_PATH (line 11) | const REPORTER_FIXTURE_PATH = resolveFixturePath("options/parallel/test-...
  function getChildPids (line 20) | async function getChildPids(pid) {
  function checkProcessExists (line 36) | async function checkProcessExists(pid) {
  function compareReporters (line 46) | async function compareReporters(reporter) {
  function assertReporterOutputEquality (line 70) | async function assertReporterOutputEquality(reporter) {
  function waitForChildPids (line 86) | async function waitForChildPids(pid) {

FILE: test/integration/options/posixExitCodes.spec.js
  constant EXIT_FAILURE (line 7) | const EXIT_FAILURE = 1;
  constant SIGNAL_OFFSET (line 8) | const SIGNAL_OFFSET = 128;

FILE: test/integration/options/watch.spec.js
  function setupHookTest (line 504) | function setupHookTest(hookName) {

FILE: test/integration/plugins/root-hooks.spec.js
  function extractHookOutputFromResult (line 12) | function extractHookOutputFromResult(res) {
  function runMochaForHookOutput (line 29) | function runMochaForHookOutput(args, opts) {
  function isNewerVersion (line 131) | function isNewerVersion(vString) {

FILE: test/node-unit/fixtures/mock-ts-node-compile-err.ts
  class TSError (line 6) | class TSError extends Error {
    method constructor (line 7) | constructor(...args) {

FILE: test/node-unit/mocha.spec.js
  constant DUMB_FIXTURE_PATH (line 8) | const DUMB_FIXTURE_PATH = require.resolve("./fixtures/dumb-module.fixtur...
  constant DUMBER_FIXTURE_PATH (line 9) | const DUMBER_FIXTURE_PATH =

FILE: test/node-unit/worker.spec.js
  constant WORKER_PATH (line 8) | const WORKER_PATH = require.resolve("../../lib/nodejs/worker.js");

FILE: test/reporters/base.spec.js
  function list (line 20) | function list(tests) {
  function generateDiff (line 28) | function generateDiff(actual, expected) {

FILE: test/reporters/helpers.js
  function createMockRunner (line 20) | function createMockRunner(runStr, ifStr1, ifStr2, ifStr3, arg1, arg2) {
  function afterTick (line 37) | function afterTick(callback) {
  function createRunnerFunction (line 59) | function createRunnerFunction(runStr, ifStr1, ifStr2, ifStr3, arg1, arg2) {
  function makeTest (line 154) | function makeTest(err) {
  function createElements (line 163) | function createElements(argObj) {
  function makeExpectedTest (line 171) | function makeExpectedTest(
  function createRunReporterFunction (line 198) | function createRunReporterFunction(ReporterClass) {

FILE: test/reporters/json.spec.js
  function CircleError (line 121) | function CircleError() {

FILE: test/reporters/tap.spec.js
  function createTest (line 24) | function createTest() {

FILE: test/unit/grep.spec.js
  function testGrep (line 27) | function testGrep(mocha) {

FILE: test/unit/plugin-loader.spec.js
  function a (line 389) | function a() {}
  function b (line 390) | function b() {}
  function d (line 391) | function d() {}
  function g (line 392) | function g() {}
  function f (line 393) | async function f() {}
  function c (line 394) | function c() {
  function e (line 400) | async function e() {

FILE: test/unit/runnable.spec.js
  function fail (line 275) | function fail() {
  function fail (line 411) | function fail() {

FILE: test/unit/runner.spec.js
  function assertHookTitle (line 262) | function assertHookTitle() {
  function genOverlongSingleLineMessage (line 694) | function genOverlongSingleLineMessage() {
  function genOverlongMultiLineMessage (line 705) | function genOverlongMultiLineMessage() {
  function fail (line 828) | function fail() {
  function throwError (line 846) | function throwError() {
  function throwError (line 867) | function throwError() {
  function throwError (line 891) | function throwError() {

FILE: test/unit/suite.spec.js
  function supportsFunctionNames (line 8) | function supportsFunctionNames() {
  function namedFn (line 189) | function namedFn() {}
  function namedFn (line 228) | function namedFn() {}
  function namedFn (line 270) | function namedFn() {}
  function namedFn (line 321) | function namedFn() {}
  function fn (line 490) | function fn() {
  function fn (line 504) | function fn() {
  function fn (line 520) | function fn() {
Condensed preview — 611 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,755K chars).
[
  {
    "path": ".browserslistrc",
    "chars": 257,
    "preview": "node >= 14\nlast 2 Chrome versions\nlast 2 Edge versions\nlast 2 Firefox versions\nlast 2 Safari versions\nlast 2 Opera versi"
  },
  {
    "path": ".editorconfig",
    "chars": 243,
    "preview": "# This file is for unifying the coding style for different editors and IDEs\n# editorconfig.org\n\nroot = true\n\n[*]\nend_of_"
  },
  {
    "path": ".gitattributes",
    "chars": 19,
    "preview": "* text=auto eol=lf\n"
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "chars": 5491,
    "preview": "# Mocha Code of Conduct\n\n## Be friendly and patient\n\nWe understand that everyone has different levels of experience or k"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 11239,
    "preview": "# Contributing to Mocha\n\n> Please read these guidelines before submitting an issue, filing a feature request, or contrib"
  },
  {
    "path": ".github/DEVELOPMENT.md",
    "chars": 1922,
    "preview": "# Development\n\nFollow these steps to get going in local development.\nIf you are having trouble, don't be afraid to [ask "
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 25,
    "preview": "open_collective: mochajs\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/01-bug.yml",
    "chars": 2414,
    "preview": "body:\n  - attributes:\n      description: If any of these required steps are not taken, we may not be able to review your"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/02-documentation.yml",
    "chars": 1283,
    "preview": "body:\n  - attributes:\n      description: If any of these required steps are not taken, we may not be able to review your"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/03-feature-request.yml",
    "chars": 1665,
    "preview": "body:\n  - attributes:\n      description: If any of these required steps are not taken, we may not be able to review your"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/04-performance.yml",
    "chars": 3173,
    "preview": "body:\n  - type: markdown\n    attributes:\n      value: |\n        Thanks for taking the time to suggest a performance impr"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/05-repository-tooling.yml",
    "chars": 1565,
    "preview": "body:\n  - attributes:\n      description: If any of these required steps are not taken, we may not be able to review your"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 603,
    "preview": "blank_issues_enabled: true\ncontact_links:\n  - name: Documentation Website\n    about: Please read our documentation websi"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 611,
    "preview": "<!-- 👋 Hi, thanks for sending a PR to mocha! 💖.\nPlease fill out all fields below and make sure each item is true and [x]"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 186,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n  "
  },
  {
    "path": ".github/release-please/config.json",
    "chars": 883,
    "preview": "{\n  \"$schema\": \"https://raw.githubusercontent.com/googleapis/release-please/v17.1.3/schemas/config.json\",\n  \"release-typ"
  },
  {
    "path": ".github/release-please/manifest.json",
    "chars": 23,
    "preview": "{\".\":\"12.0.0-beta.10\"}\n"
  },
  {
    "path": ".github/workflows/mocha.yml",
    "chars": 2510,
    "preview": "name: Tests\n\non:\n  push:\n    branches:\n      - main\n    paths-ignore:\n      [\"*.md\", \"docs/**\", \".github/**\", \".prettier"
  },
  {
    "path": ".github/workflows/nightly-site-deploy.yml",
    "chars": 549,
    "preview": "# Deploy `mochajs.org` branch nightly by hitting a netlify build URL.\n# This updates the list of supporters\n# It uses co"
  },
  {
    "path": ".github/workflows/npm-script.yml",
    "chars": 3101,
    "preview": "name: Reusable npm script runner\n\non:\n  workflow_call:\n    inputs:\n      npm-script:\n        description: \"npm script\"\n "
  },
  {
    "path": ".github/workflows/octoguide.yml",
    "chars": 619,
    "preview": "jobs:\n  octoguide:\n    if: ${{ !endsWith(github.actor, '[bot]') }}\n    runs-on: ubuntu-latest\n    steps:\n      - uses: O"
  },
  {
    "path": ".github/workflows/release-please.yml",
    "chars": 1274,
    "preview": "name: Release Please\n\non:\n  push:\n    branches:\n      - main\n  workflow_dispatch:\n\npermissions:\n  contents: read\n  id-to"
  },
  {
    "path": ".gitignore",
    "chars": 1838,
    "preview": "# Mocha-specific\ndocs/images/supporters\nmocha.js\nmocha.js.map\n.karma/\n!bin/mocha.js\n!lib/mocha.js\n\n# Bundle debugging\nst"
  },
  {
    "path": ".knip.jsonc",
    "chars": 795,
    "preview": "{\n  \"$schema\": \"https://unpkg.com/knip@5/schema-jsonc.json\",\n  \"entry\": [\n    \"bin/mocha.js!\",\n    \"bin/_mocha!\",\n    \"b"
  },
  {
    "path": ".lintstagedrc.json",
    "chars": 130,
    "preview": "{\n  \"@(**/*.js|bin/*)\": [\"eslint --fix\"],\n  \"!(package*).json\": [\"prettier --write\"],\n  \"*.{yml,md,html}\": [\"prettier --"
  },
  {
    "path": ".mailmap",
    "chars": 2038,
    "preview": "# see https://www.git-scm.com/docs/git-check-mailmap for formatting info\nTJ Holowaychuk <tj@vision-media.ca>\nTravis Jeff"
  },
  {
    "path": ".mocharc.yml",
    "chars": 201,
    "preview": "require: \"test/setup\"\nui: \"bdd\"\nglobal:\n  - \"okGlobalA,okGlobalB\"\n  - \"okGlobalC\"\n  - \"callback*\"\ntimeout: 1000\nwatch-ig"
  },
  {
    "path": ".npmrc",
    "chars": 21,
    "preview": "  message=Release v%s"
  },
  {
    "path": ".nycrc",
    "chars": 508,
    "preview": "{\n  \"reporter\": [\"json\", \"text-summary\"],\n  \"all\": true,\n  \"exclude\": [\n    \"coverage/**\",\n    \"docs/**\",\n    \"packages/"
  },
  {
    "path": ".prettierignore",
    "chars": 182,
    "preview": "/.karma/\n/.nyc_output\n/CHANGELOG.md\n/coverage\n/pnpm-lock.yaml\n/test/*/fixtures/**\n\n# release-please generate a compact m"
  },
  {
    "path": ".wallaby.js",
    "chars": 1489,
    "preview": "\"use strict\";\n\nmodule.exports = () => {\n  return {\n    files: [\n      \"index.js\",\n      \"lib/**/*.{js,json}\",\n      \"tes"
  },
  {
    "path": "AUTHORS",
    "chars": 22425,
    "preview": "# Authors ordered by first contribution.\n\nTJ Holowaychuk <tj@vision-media.ca>\nJames Carr <james.r.carr@gmail.com>\nFredri"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 124558,
    "preview": "# Changelog\n\n## [12.0.0-beta-10](https://github.com/mochajs/mocha/compare/v12.0.0-beta-9...v12.0.0-beta-10) (2026-02-21)"
  },
  {
    "path": "FUNDING.md",
    "chars": 869,
    "preview": "# Fund Usage Guidelines\n\nThis project follows [Collective Funds Guidelines 0.1](https://github.com/collective-funds/guid"
  },
  {
    "path": "LICENSE",
    "chars": 1123,
    "preview": "(The MIT License)\n\nCopyright (c) 2011-2024 OpenJS Foundation and contributors, https://openjsf.org\n\nPermission is hereby"
  },
  {
    "path": "MAINTAINERS.md",
    "chars": 23439,
    "preview": "# Mocha Maintainer's Handbook\n\n## Introduction\n\nHi stranger! We've written this document for:\n\n1. Active maintainers of "
  },
  {
    "path": "PROJECT_CHARTER.md",
    "chars": 5599,
    "preview": "# Mocha Charter\n\nThis project charter serves as a statement of scope and objectives for the **Mocha** project.\n\n## §1: G"
  },
  {
    "path": "README.md",
    "chars": 4537,
    "preview": "<p align=\"center\">\n  <img src=\"docs/src/components/mocha-logo.svg\" alt=\"Mocha test framework logo\"/>\n</p>\n\n<p align=\"cen"
  },
  {
    "path": "SECURITY.md",
    "chars": 598,
    "preview": "# Security Policy\n\n## Security contact information\n\nTo report a security vulnerability, please use the\n[Tidelift securit"
  },
  {
    "path": "bin/_mocha",
    "chars": 185,
    "preview": "#!/usr/bin/env node\n\"use strict\";\n\n/**\n * This file remains for backwards compatibility only.\n * Don't put stuff in this"
  },
  {
    "path": "bin/mocha.js",
    "chars": 4356,
    "preview": "#!/usr/bin/env node\n\n\"use strict\";\n\n/**\n * This wrapper executable checks for known node flags and appends them when fou"
  },
  {
    "path": "browser-entry.js",
    "chars": 5030,
    "preview": "\"use strict\";\n\n/* eslint no-unused-vars: off */\n\n/**\n * Shim process.stdout.\n */\n\nprocess.stdout = require(\"browser-stdo"
  },
  {
    "path": "docs/.gitignore",
    "chars": 61,
    "preview": ".astro/\ndist/\nnode_modules/\nsrc/content/data/supporters.json\n"
  },
  {
    "path": "docs/.knip.jsonc",
    "chars": 313,
    "preview": "{\n  \"$schema\": \"https://unpkg.com/knip@5/schema-jsonc.json\",\n  // Entry points marked with ! are analyzed but not report"
  },
  {
    "path": "docs/.prettierrc.json",
    "chars": 29,
    "preview": "{\n  \"bracketSpacing\": true\n}\n"
  },
  {
    "path": "docs/README.md",
    "chars": 402,
    "preview": "# Mocha Docs: Built on Astro Starlight\n\nThis is the current Mocha documentation website, hosted at [mochajs.org](https:/"
  },
  {
    "path": "docs/_data/blocklist.json",
    "chars": 340,
    "preview": "[\n  \"cheap-writing-service\",\n  \"coin-master-free-spins\",\n  \"cyberflix-tv\",\n  \"device-tricks1\",\n  \"domywriting\",\n  \"email"
  },
  {
    "path": "docs/_data/supporters.cjs",
    "chars": 9567,
    "preview": "/**\n * This script gathers metadata for active supporters of Mocha from OpenCollective's\n * API by aggregating order (\"d"
  },
  {
    "path": "docs/_redirects",
    "chars": 88,
    "preview": "/api/* https://legacy.mochajs.org/api/:splat 301\n/next/* https://mochajs.org/:splat 301\n"
  },
  {
    "path": "docs/astro.config.ts",
    "chars": 6680,
    "preview": "import { defineConfig } from \"astro/config\";\nimport starlight from \"@astrojs/starlight\";\n\nexport default defineConfig({\n"
  },
  {
    "path": "docs/netlify.toml",
    "chars": 205,
    "preview": "[build]\n  command = \"npm run docs\"\n  publish = \"docs/dist/\"\n\n[build.environment]\n  DEBUG = \"mocha:docs*\"\n  NODE_VERSION "
  },
  {
    "path": "docs/package.json",
    "chars": 749,
    "preview": "{\n  \"name\": \"docs\",\n  \"type\": \"module\",\n  \"version\": \"0.0.1\",\n  \"scripts\": {\n    \"astro\": \"astro\",\n    \"build\": \"astro c"
  },
  {
    "path": "docs/public/example/Array.js",
    "chars": 1925,
    "preview": "\"use strict\";\n\ndescribe(\"Array\", function () {\n  describe(\".push()\", function () {\n    it(\"should append a value\", funct"
  },
  {
    "path": "docs/public/example/tests.html",
    "chars": 603,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <title>Mocha</title>\n    <link rel=\"styleshee"
  },
  {
    "path": "docs/src/components/Badges.astro",
    "chars": 1032,
    "preview": "---\nimport { Image } from \"astro:assets\";\nimport Discord from \"./discord.svg\";\n\nconst badges = [\n  {\n    href: \"http://n"
  },
  {
    "path": "docs/src/components/ClientRedirects.astro",
    "chars": 10241,
    "preview": "<script>\n  const knownHashes = {\n    \"-allow-uncaught\": \"./running/cli/#--allow-uncaught\",\n    \"-async-only-a\": \"./runni"
  },
  {
    "path": "docs/src/components/FixtureWizard.astro",
    "chars": 11111,
    "preview": "<div>\n  <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 854 665\" version=\"1.1\">\n    <title>Mocha Fixture Wizard</title>\n   "
  },
  {
    "path": "docs/src/components/Footer.astro",
    "chars": 5053,
    "preview": "---\nimport { Image } from \"astro:assets\";\n\nimport openJsfLogo from \"./openjsf-logo.svg\";\n---\n\n<footer>\n  <div id=\"copyri"
  },
  {
    "path": "docs/src/components/Head.astro",
    "chars": 327,
    "preview": "---\nimport type { Props } from '@astrojs/starlight/props'\nimport Default from '@astrojs/starlight/components/Head.astro'"
  },
  {
    "path": "docs/src/components/HomepagePageTitle.astro",
    "chars": 1179,
    "preview": "---\nimport { Image } from \"astro:assets\";\n\nimport logo from \"./mocha-logo.svg\";\n---\n\n<h1 class=\"page-title\">\n  <Image al"
  },
  {
    "path": "docs/src/components/PageTitle.astro",
    "chars": 348,
    "preview": "---\nimport Default from \"@astrojs/starlight/components/PageTitle.astro\";\nimport type { ComponentProps } from \"astro/type"
  },
  {
    "path": "docs/src/components/Supporters.astro",
    "chars": 1324,
    "preview": "---\ninterface Supporter {\n  imgUrlMed: string;\n  imgUrlSmall: string;\n  name: string;\n  website: string;\n}\n\ninterface Pr"
  },
  {
    "path": "docs/src/content/config.ts",
    "chars": 191,
    "preview": "import { defineCollection } from \"astro:content\";\nimport { docsSchema } from \"@astrojs/starlight/schema\";\n\nexport const "
  },
  {
    "path": "docs/src/content/data/sponsors.json",
    "chars": 319,
    "preview": "[\n  {\n    \"href\": \"https://localizejs.com\",\n    \"image\": \"https://images.opencollective.com/localize/bb2cd4d/logo/256.pn"
  },
  {
    "path": "docs/src/content/docs/declaring/dynamic-tests.mdx",
    "chars": 2584,
    "preview": "---\ndescription: Describing tests cases based on dynamic data.\ntitle: Dynamic Tests\n---\n\nGiven Mocha's use of function e"
  },
  {
    "path": "docs/src/content/docs/declaring/exclusive-tests.mdx",
    "chars": 2742,
    "preview": "---\ndescription: Describing test cases that should be run to the exclusion of other tests.\ntitle: Exclusive Tests\n---\n\n:"
  },
  {
    "path": "docs/src/content/docs/declaring/inclusive-tests.mdx",
    "chars": 3276,
    "preview": "---\ndescription: Describing test cases that should not be run yet.\ntitle: Inclusive Tests\n---\n\nThis feature is the inver"
  },
  {
    "path": "docs/src/content/docs/declaring/pending-tests.mdx",
    "chars": 662,
    "preview": "---\ndescription: Describing test cases with names that don't yet have a callback.\ntitle: Pending Tests\n---\n\n\"Pending\" — "
  },
  {
    "path": "docs/src/content/docs/declaring/retrying-tests.mdx",
    "chars": 1178,
    "preview": "---\ndescription: Describing test cases that should retry on failure.\ntitle: Retry Tests\n---\n\nYou can choose to retry fai"
  },
  {
    "path": "docs/src/content/docs/explainers/compilers-deprecation.mdx",
    "chars": 2777,
    "preview": "---\ndescription: Compilers deprecation notice.\ntitle: Compilers deprecation\n---\n\nIf you're here, you probably hit the de"
  },
  {
    "path": "docs/src/content/docs/explainers/count-assertions.mdx",
    "chars": 1039,
    "preview": "---\ndescription: How to count assertions.\ntitle: Counting assertions\n---\n\nWhile Mocha itself does not provide an asserti"
  },
  {
    "path": "docs/src/content/docs/explainers/detecting-multiple-calls-to-done.mdx",
    "chars": 898,
    "preview": "---\ndescription: Why Mocha determines if the done() callback in a test was called multiple times.\ntitle: Detecting Multi"
  },
  {
    "path": "docs/src/content/docs/explainers/environment-variables.mdx",
    "chars": 1105,
    "preview": "---\ndescription: Learn how to use environment variables in Mocha tests\ntitle: \"Environment variables\"\n---\n\nSometimes you"
  },
  {
    "path": "docs/src/content/docs/explainers/find-global-leaks.mdx",
    "chars": 514,
    "preview": "---\ndescription: How to find a global leak.\ntitle: Find global leaks\n---\n\nDetecting which module is causing a global lea"
  },
  {
    "path": "docs/src/content/docs/explainers/global-variables.mdx",
    "chars": 1685,
    "preview": "---\ndescription: How to work with global variables in Mocha tests\ntitle: \"Global variables\"\n---\n\nRelated issue [#1582](h"
  },
  {
    "path": "docs/src/content/docs/explainers/nodejs-native-esm-support.mdx",
    "chars": 1578,
    "preview": "---\ndescription: A mid-level outline of Mocha's \"flow of execution\".\ntitle: Node.js Native ESM Support\n---\n\n:::note[New "
  },
  {
    "path": "docs/src/content/docs/explainers/programmatic-usage.mdx",
    "chars": 2775,
    "preview": "---\ndescription: Using Mocha programmatically\ntitle: Programmatic usage\n---\n\nThere are a lot of reasons why you might wa"
  },
  {
    "path": "docs/src/content/docs/explainers/related-tools.mdx",
    "chars": 592,
    "preview": "---\ndescription: External tools and libraries that work well with Mocha\ntitle: Related tools\n---\n\n# Related Tools\n\n## As"
  },
  {
    "path": "docs/src/content/docs/explainers/run-cycle-overview.mdx",
    "chars": 4174,
    "preview": "---\ndescription: A mid-level outline of Mocha's \"flow of execution\".\ntitle: Run Cycle Overview\n---\n\nThe following is a m"
  },
  {
    "path": "docs/src/content/docs/explainers/security-vulnerability-reports.mdx",
    "chars": 2675,
    "preview": "---\ndescription: Information about security vulnerability reports in Mocha's dependencies\ntitle: Security Vulnerability "
  },
  {
    "path": "docs/src/content/docs/explainers/shared-behaviours.mdx",
    "chars": 1924,
    "preview": "---\ndescription: Reuse tests across contexts with `this`\ntitle: Shared Behaviours\n---\n\nMocha currently has no concept of"
  },
  {
    "path": "docs/src/content/docs/explainers/spies.mdx",
    "chars": 1921,
    "preview": "---\ndescription: How to use spies with Mocha for testing callbacks and function calls\ntitle: Spies\n---\n\nMocha does not c"
  },
  {
    "path": "docs/src/content/docs/explainers/stub-stdout.mdx",
    "chars": 952,
    "preview": "---\ndescription: Learn how to properly stub stdout for testing console output\ntitle: \"Stubbing stdout\"\n---\n\nIf you want "
  },
  {
    "path": "docs/src/content/docs/explainers/tagging.mdx",
    "chars": 1162,
    "preview": "---\ndescription: Use Mocha's --grep to tag and selectively run tests.\ntitle: Tagging with --grep\n---\n\nMocha's `--grep` f"
  },
  {
    "path": "docs/src/content/docs/explainers/test-duration.mdx",
    "chars": 950,
    "preview": "---\ndescription: A mid-level outline of Mocha's \"flow of execution\".\ntitle: Test Duration\n---\n\nMany reporters will displ"
  },
  {
    "path": "docs/src/content/docs/explainers/test-fixture-decision-tree.mdx",
    "chars": 380,
    "preview": "---\ndescription: Helping you decide which API(s) to use for your test fixtures.\ntitle: Test Fixture Decision Tree\n---\n\nT"
  },
  {
    "path": "docs/src/content/docs/explainers/third-party-reporters.mdx",
    "chars": 1983,
    "preview": "---\ndescription: Create custom reporters.\ntitle: Third party reporters\n---\n\nMocha 1.3.0 allows you to define custom thir"
  },
  {
    "path": "docs/src/content/docs/explainers/third-party-uis.mdx",
    "chars": 6592,
    "preview": "---\ndescription: Create custom Mocha UIs.\ntitle: Third party UIs\n---\n\nMocha allows you to define custom UIs with the sam"
  },
  {
    "path": "docs/src/content/docs/features/arrow-functions.mdx",
    "chars": 1015,
    "preview": "---\ndescription: Working with arrow functions, aka \"lambdas\".\ntitle: Arrow Functions\n---\n\nPassing [arrow functions](http"
  },
  {
    "path": "docs/src/content/docs/features/assertions.mdx",
    "chars": 797,
    "preview": "---\ndescription: Using assertion libraries with Mocha\ntitle: Assertions\n---\n\nMocha allows you to use any assertion libra"
  },
  {
    "path": "docs/src/content/docs/features/asynchronous-code.mdx",
    "chars": 3462,
    "preview": "---\ndescription: Testing asynchronous code with Mocha\ntitle: Asynchronous Code\n---\n\nBy adding an argument (usually named"
  },
  {
    "path": "docs/src/content/docs/features/diffs.mdx",
    "chars": 425,
    "preview": "---\ndescription: Displaying actual vs. expected data in test failures.\ntitle: Diffs\n---\n\nMocha supports the `err.expecte"
  },
  {
    "path": "docs/src/content/docs/features/error-codes.mdx",
    "chars": 1299,
    "preview": "---\ndescription: Status codes reported when Mocha throws an exception.\ntitle: Error Codes\n---\n\n:::note[New in v6.0.0]\n::"
  },
  {
    "path": "docs/src/content/docs/features/global-fixtures.mdx",
    "chars": 4677,
    "preview": "---\ndescription: Adding code to be run before and/or after every tests.\ntitle: Global Fixtures\n---\n\n:::note[New in v8.2."
  },
  {
    "path": "docs/src/content/docs/features/hooks.mdx",
    "chars": 3219,
    "preview": "---\ndescription: Extensibility hooks for the Mocha BDD interface.\ntitle: Hooks\n---\n\nWith its default \"BDD\"-style interfa"
  },
  {
    "path": "docs/src/content/docs/features/parallel-mode.mdx",
    "chars": 7731,
    "preview": "---\ndescription: Running test simultaneously across different cores.\ntitle: Parallel Mode\n---\n\n:::note[New in v8.0.0]\n::"
  },
  {
    "path": "docs/src/content/docs/features/root-hook-plugins.mdx",
    "chars": 6643,
    "preview": "---\ndescription: Adding code to be run before and/or after every test in every file.\ntitle: Root Hook Plugins\n---\n\n:::no"
  },
  {
    "path": "docs/src/content/docs/features/timeouts.mdx",
    "chars": 1541,
    "preview": "---\ndescription: Managing timing for non-synchronous tests.\ntitle: Timeouts\n---\n\n## Suite-level\n\nSuite-level timeouts ma"
  },
  {
    "path": "docs/src/content/docs/getting-started.mdx",
    "chars": 2161,
    "preview": "---\ntitle: Getting Started\ndescription: Set up Mocha and start testing your code.\n---\n\nimport { PackageManagers } from \""
  },
  {
    "path": "docs/src/content/docs/index.mdx",
    "chars": 2399,
    "preview": "---\ndescription: The classic, reliable, trusted JavaScript test framework for Node.js & the Browser. ☕\nhead:\n  - content"
  },
  {
    "path": "docs/src/content/docs/interfaces/about.mdx",
    "chars": 257,
    "preview": "---\ndescription: Mocha's available DSLs for writing tests.\ntitle: About Interfaces\n---\n\nInterfaces are how developers wr"
  },
  {
    "path": "docs/src/content/docs/interfaces/bdd.mdx",
    "chars": 1049,
    "preview": "---\ndescription: The BDD (Behavior-Driven-Design) test interface for Mocha.\ntitle: BDD\n---\n\nThe **BDD** interface provid"
  },
  {
    "path": "docs/src/content/docs/interfaces/exports.mdx",
    "chars": 997,
    "preview": "---\ndescription: The Exports test interface for Mocha.\ntitle: Exports\n---\n\nThe **Exports** interface allows for organizi"
  },
  {
    "path": "docs/src/content/docs/interfaces/qunit.mdx",
    "chars": 748,
    "preview": "---\ndescription: The QUnit test interface for Mocha.\ntitle: QUnit\n---\n\nThe [QUnit](https://qunitjs.com)-inspired interfa"
  },
  {
    "path": "docs/src/content/docs/interfaces/require.mdx",
    "chars": 799,
    "preview": "---\ndescription: The require interface for Mocha.\ntitle: Require\n---\n\nThe `require` interface allows you to require the "
  },
  {
    "path": "docs/src/content/docs/interfaces/tdd.mdx",
    "chars": 444,
    "preview": "---\ndescription: The TDD (Test-Driven-Design) test interface for Mocha.\ntitle: TDD\n---\n\nThe **TDD** interface provides `"
  },
  {
    "path": "docs/src/content/docs/interfaces/third-party.mdx",
    "chars": 256,
    "preview": "---\ndescription: Third-party test interfaces for Mocha.\ntitle: Third-Party Interfaces\n---\n\nMocha allows you to define cu"
  },
  {
    "path": "docs/src/content/docs/reporters/about.mdx",
    "chars": 267,
    "preview": "---\ndescription: How Mocha.js displays tests results as they execute and/or as a results summary.\ntitle: About Reporters"
  },
  {
    "path": "docs/src/content/docs/reporters/doc.mdx",
    "chars": 1410,
    "preview": "---\ndescription: The Doc test reporter for Mocha.\ntitle: Doc\n---\n\nAlias: `Doc`, `doc`\n\nThe Doc reporter outputs a hierar"
  },
  {
    "path": "docs/src/content/docs/reporters/dot.mdx",
    "chars": 367,
    "preview": "---\ndescription: The Dot Matrix test reporter for Mocha.\ntitle: Dot\n---\n\nAlias: `Dot`, `dot`\n\nThe Dot Matrix reporter is"
  },
  {
    "path": "docs/src/content/docs/reporters/html.mdx",
    "chars": 158,
    "preview": "---\ndescription: The HTML test reporter for Mocha.\ntitle: HTML\n---\n\nAlias: `HTML`, `html`\n\n**The HTML reporter is not in"
  },
  {
    "path": "docs/src/content/docs/reporters/json-stream.mdx",
    "chars": 352,
    "preview": "---\ndescription: The JSON Stream test reporter for Mocha.\ntitle: JSON Stream\n---\n\nAlias: `JSONStream`, `json-stream`\n\nTh"
  },
  {
    "path": "docs/src/content/docs/reporters/json.mdx",
    "chars": 351,
    "preview": "---\ndescription: The JSON test reporter for Mocha.\ntitle: JSON\n---\n\nAlias: `JSON`, `json`\n\nThe JSON reporter outputs a s"
  },
  {
    "path": "docs/src/content/docs/reporters/landing.mdx",
    "chars": 328,
    "preview": "---\ndescription: The Landing strip test reporter for Mocha.\ntitle: Landing Strip\n---\n\nAlias: `Landing`, `landing`\n\nThe L"
  },
  {
    "path": "docs/src/content/docs/reporters/list.mdx",
    "chars": 273,
    "preview": "---\ndescription: The List test reporter for Mocha.\ntitle: List\n---\n\nAlias: `List`, `list`\n\nThe List reporter outputs a s"
  },
  {
    "path": "docs/src/content/docs/reporters/markdown.mdx",
    "chars": 474,
    "preview": "---\ndescription: The Markdown test reporter for Mocha.\ntitle: Markdown\n---\n\nAlias: `Markdown`, `markdown`\n\nThe Markdown "
  },
  {
    "path": "docs/src/content/docs/reporters/min.mdx",
    "chars": 324,
    "preview": "---\ndescription: The Min test reporter for Mocha.\ntitle: Min\n---\n\nAlias: `Min`, `min`\n\nThe Min reporter displays the sum"
  },
  {
    "path": "docs/src/content/docs/reporters/nyan.mdx",
    "chars": 189,
    "preview": "---\ndescription: The Nyan test reporter for Mocha.\ntitle: Nyan\n---\n\nAlias: `Nyan`, `nyan`\n\nThe Nyan reporter is exactly "
  },
  {
    "path": "docs/src/content/docs/reporters/progress.mdx",
    "chars": 205,
    "preview": "---\ndescription: The Progress test reporter for Mocha.\ntitle: Progress\n---\n\nAlias: `Progress`, `progress`\n\nThe Progress "
  },
  {
    "path": "docs/src/content/docs/reporters/spec.mdx",
    "chars": 297,
    "preview": "---\ndescription: The Spec test reporter for Mocha.\ntitle: Spec\n---\n\nAlias: `Spec`, `spec`\n\nThis is the default reporter."
  },
  {
    "path": "docs/src/content/docs/reporters/tap.mdx",
    "chars": 258,
    "preview": "---\ndescription: The TAP test reporter for Mocha.\ntitle: TAP\n---\n\nAlias: `TAP`, `tap`\n\nThe TAP reporter emits lines for "
  },
  {
    "path": "docs/src/content/docs/reporters/third-party.mdx",
    "chars": 435,
    "preview": "---\ndescription: Third party test reporters for Mocha.\ntitle: Third-Party Reporters\n---\n\nMocha allows you to define cust"
  },
  {
    "path": "docs/src/content/docs/reporters/xunit.mdx",
    "chars": 515,
    "preview": "---\ndescription: The XUnit test reporter for Mocha.\ntitle: XUnit\n---\n\nAlias: `XUnit`, `xunit`\n\nThe XUnit reporter output"
  },
  {
    "path": "docs/src/content/docs/running/browsers.mdx",
    "chars": 3655,
    "preview": "---\ndescription: Running Mocha in Browsers\ntitle: Browsers\n---\n\nMocha can run in the browser.\nEvery release of Mocha wil"
  },
  {
    "path": "docs/src/content/docs/running/cli.mdx",
    "chars": 24035,
    "preview": "---\ntitle: Command-Line Usage\ndescription: Running Mocha in your terminal.\n---\n\nRunning `npx mocha --help` will show the"
  },
  {
    "path": "docs/src/content/docs/running/configuring.mdx",
    "chars": 4048,
    "preview": "---\ndescription: Configuration options and files across several formats.\ntitle: Configuring Mocha (Node.js)\n---\n\n:::note"
  },
  {
    "path": "docs/src/content/docs/running/editor-plugins.mdx",
    "chars": 1812,
    "preview": "---\ndescription: Configuring Mocha in an editor\ntitle: Editor Plugins\n---\n\nThe following editor-related packages are ava"
  },
  {
    "path": "docs/src/content/docs/running/test-globs.mdx",
    "chars": 1501,
    "preview": "---\ndescription: Configuring how Mocha finds test files.\ntitle: Test Globs\n---\n\nBy default, `mocha` looks for the glob `"
  },
  {
    "path": "docs/src/env.d.ts",
    "chars": 85,
    "preview": "/// <reference path=\"../.astro/types.d.ts\" />\n/// <reference types=\"astro/client\" />\n"
  },
  {
    "path": "docs/src/style/custom.css",
    "chars": 1729,
    "preview": ":root {\n  /* Fonts */\n  --sl-font: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n\n  /* Color bases */\n  --sl-color-moc"
  },
  {
    "path": "docs/tsconfig.json",
    "chars": 42,
    "preview": "{\n  \"extends\": \"astro/tsconfigs/strict\"\n}\n"
  },
  {
    "path": "eslint.config.js",
    "chars": 4259,
    "preview": "\"use strict\";\n\nconst js = require(\"@eslint/js\");\nconst { defineConfig, globalIgnores } = require(\"eslint/config\");\nconst"
  },
  {
    "path": "example/config/.mocharc.js",
    "chars": 1702,
    "preview": "\"use strict\";\n\n// This is a JavaScript-based config file containing every Mocha option plus others.\n// If you need condi"
  },
  {
    "path": "example/config/.mocharc.json",
    "chars": 398,
    "preview": "// This config file contains Mocha's defaults.\n// This same configuration could be provided in the `mocha` property of y"
  },
  {
    "path": "example/config/.mocharc.jsonc",
    "chars": 456,
    "preview": "// This config file contains Mocha's defaults.\n// As you can see, comments are allowed.\n// This same configuration could"
  },
  {
    "path": "example/config/.mocharc.yml",
    "chars": 1340,
    "preview": "# This is an example Mocha config containing every Mocha option plus others.\nallow-uncaught: false\nasync-only: false\nbai"
  },
  {
    "path": "example/config/README.md",
    "chars": 329,
    "preview": "# Mocha Configuration Examples\n\nIn this directory, you'll find example Mocha configurations for Node.js.\n\nAs of this wri"
  },
  {
    "path": "index.js",
    "chars": 56,
    "preview": "\"use strict\";\n\nmodule.exports = require(\"./lib/mocha\");\n"
  },
  {
    "path": "karma.conf.js",
    "chars": 6155,
    "preview": "/**\n * Mocha's Karma config.\n *\n * IMPORTANT:\n * - Karma must _always_ be run with `NODE_PATH=.` where `.` is the projec"
  },
  {
    "path": "lib/browser/highlight-tags.js",
    "chars": 1018,
    "preview": "\"use strict\";\n\n/**\n * Highlight the given string of `js`.\n *\n * @private\n * @param {string} js\n * @return {string}\n */\nf"
  },
  {
    "path": "lib/browser/parse-query.js",
    "chars": 508,
    "preview": "\"use strict\";\n\n/**\n * Parse the given `qs`.\n *\n * @private\n * @param {string} qs\n * @return {Object<string, string>}\n */"
  },
  {
    "path": "lib/browser/template.html",
    "chars": 462,
    "preview": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <title>Mocha</title>\n    <meta name=\"viewport"
  },
  {
    "path": "lib/cli/cli.js",
    "chars": 3199,
    "preview": "\"use strict\";\n\n/**\n * Contains CLI entry point and public API for programmatic usage in Node.js.\n * - Option parsing is "
  },
  {
    "path": "lib/cli/collect-files.js",
    "chars": 3188,
    "preview": "\"use strict\";\n\nconst path = require(\"node:path\");\nconst pc = require(\"picocolors\");\nconst debug = require(\"debug\")(\"moch"
  },
  {
    "path": "lib/cli/commands.js",
    "chars": 234,
    "preview": "\"use strict\";\n\n/**\n * Exports Yargs commands\n * @see https://github.com/yargs/yargs/blob/main/docs/advanced.md\n * @priva"
  },
  {
    "path": "lib/cli/config.js",
    "chars": 2758,
    "preview": "\"use strict\";\n\n/**\n * Responsible for loading / finding Mocha's \"rc\" files.\n *\n * @private\n * @module\n */\n\nconst fs = re"
  },
  {
    "path": "lib/cli/index.js",
    "chars": 50,
    "preview": "\"use strict\";\n\nmodule.exports = require(\"./cli\");\n"
  },
  {
    "path": "lib/cli/init.js",
    "chars": 976,
    "preview": "\"use strict\";\n\n/**\n * Command module for \"init\" command\n *\n * @private\n * @module\n */\n\nconst fs = require(\"node:fs\");\nco"
  },
  {
    "path": "lib/cli/lookup-files.js",
    "chars": 4575,
    "preview": "\"use strict\";\n/**\n * Contains `lookupFiles`, which takes some globs/dirs/options and returns a list of files.\n * @module"
  },
  {
    "path": "lib/cli/node-flags.js",
    "chars": 2853,
    "preview": "\"use strict\";\n\n/**\n * Some settings and code related to Mocha's handling of Node.js/V8 flags.\n * @private\n * @module\n */"
  },
  {
    "path": "lib/cli/one-and-dones.js",
    "chars": 1567,
    "preview": "\"use strict\";\n\n/**\n * Contains \"command\" code for \"one-and-dones\"--options passed\n * to Mocha which cause it to just dum"
  },
  {
    "path": "lib/cli/options.js",
    "chars": 9724,
    "preview": "\"use strict\";\n\n/**\n * Main entry point for handling filesystem-based configuration,\n * whether that's a config file or `"
  },
  {
    "path": "lib/cli/run-helpers.js",
    "chars": 9048,
    "preview": "\"use strict\";\n\n/**\n * Helper scripts for the `run` command\n * @see module:lib/cli/run\n * @module\n * @private\n */\n\n/**\n *"
  },
  {
    "path": "lib/cli/run-option-metadata.js",
    "chars": 3059,
    "preview": "\"use strict\";\n\n/**\n * Metadata about various options of the `run` command\n * @see module:lib/cli/run\n * @module\n * @priv"
  },
  {
    "path": "lib/cli/run.js",
    "chars": 11106,
    "preview": "\"use strict\";\n\n/**\n * Definition for Mocha's default (\"run tests\") command\n *\n * @module\n * @private\n */\n\nconst pc = req"
  },
  {
    "path": "lib/cli/watch-run.js",
    "chars": 19100,
    "preview": "\"use strict\";\n\nconst debug = require(\"debug\")(\"mocha:cli:watch\");\nconst path = require(\"node:path\");\nconst chokidar = re"
  },
  {
    "path": "lib/context.js",
    "chars": 1502,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('./runnable.js')} Runnable\n */\n\n/**\n * @module Context\n */\n/**\n * Expose `Context"
  },
  {
    "path": "lib/error-constants.js",
    "chars": 2812,
    "preview": "\"use strict\";\n\n/**\n * When Mocha throws exceptions (or rejects `Promise`s), it attempts to assign a `code` property to t"
  },
  {
    "path": "lib/errors.js",
    "chars": 13043,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('./mocha.js')} Mocha\n * @typedef {import('./runnable.js')} Runnable\n * @typedef {"
  },
  {
    "path": "lib/hook.js",
    "chars": 1714,
    "preview": "\"use strict\";\n\nvar Runnable = require(\"./runnable\");\nconst { constants } = require(\"./utils\");\nconst { MOCHA_ID_PROP_NAM"
  },
  {
    "path": "lib/interfaces/bdd.js",
    "chars": 2566,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../suite.js')} Suite\n */\n\nvar Test = require(\"../test\");\nvar EVENT_FILE_PRE_REQU"
  },
  {
    "path": "lib/interfaces/common.js",
    "chars": 4932,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../context.js')} Context\n * @typedef {import('../mocha.js')} Mocha\n */\n\n/**\n @mo"
  },
  {
    "path": "lib/interfaces/exports.js",
    "chars": 1428,
    "preview": "\"use strict\";\nvar Suite = require(\"../suite\");\nvar Test = require(\"../test\");\n\n/**\n * Exports-style (as Node.js module) "
  },
  {
    "path": "lib/interfaces/index.js",
    "chars": 155,
    "preview": "\"use strict\";\n\nexports.bdd = require(\"./bdd\");\nexports.tdd = require(\"./tdd\");\nexports.qunit = require(\"./qunit\");\nexpor"
  },
  {
    "path": "lib/interfaces/qunit.js",
    "chars": 2187,
    "preview": "\"use strict\";\n/**\n * @typedef {import('../suite.js')} Suite\n */\n\nvar Test = require(\"../test\");\nvar EVENT_FILE_PRE_REQUI"
  },
  {
    "path": "lib/interfaces/tdd.js",
    "chars": 2395,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../suite.js')} Suite\n */\n\nvar Test = require(\"../test\");\nvar EVENT_FILE_PRE_REQU"
  },
  {
    "path": "lib/mocha.js",
    "chars": 35660,
    "preview": "\"use strict\";\n\n/*!\n * mocha\n * Copyright(c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n * MIT Licensed\n */\n\nvar escapeRe ="
  },
  {
    "path": "lib/mocharc.json",
    "chars": 201,
    "preview": "{\n  \"diff\": true,\n  \"extension\": [\"js\", \"cjs\", \"mjs\"],\n  \"package\": \"./package.json\",\n  \"reporter\": \"spec\",\n  \"slow\": 75"
  },
  {
    "path": "lib/nodejs/buffered-worker-pool.js",
    "chars": 5456,
    "preview": "/**\n * A wrapper around a third-party child process worker pool implementation.\n * Used by {@link module:buffered-runner"
  },
  {
    "path": "lib/nodejs/esm-utils.js",
    "chars": 5887,
    "preview": "const path = require(\"node:path\");\nconst url = require(\"node:url\");\nconst debug = require(\"debug\")(\"mocha:esm-utils\");\nc"
  },
  {
    "path": "lib/nodejs/file-unloader.js",
    "chars": 279,
    "preview": "\"use strict\";\n\n/**\n * This module should not be in the browser bundle, so it's here.\n * @private\n * @module\n */\n\n/**\n * "
  },
  {
    "path": "lib/nodejs/parallel-buffered-runner.js",
    "chars": 12890,
    "preview": "/**\n * A test Runner that uses a {@link module:buffered-worker-pool}.\n * @module parallel-buffered-runner\n * @private\n *"
  },
  {
    "path": "lib/nodejs/reporters/parallel-buffered.js",
    "chars": 4517,
    "preview": "/**\n * \"Buffered\" reporter used internally by a worker process when running in parallel mode.\n * @module nodejs/reporter"
  },
  {
    "path": "lib/nodejs/serializer.js",
    "chars": 12819,
    "preview": "/**\n * Serialization/deserialization classes and functions for communication between a main Mocha process and worker pro"
  },
  {
    "path": "lib/nodejs/worker.js",
    "chars": 4555,
    "preview": "/**\n * A worker process.  Consumes {@link module:reporters/parallel-buffered} reporter.\n * @module worker\n * @private\n *"
  },
  {
    "path": "lib/pending.js",
    "chars": 293,
    "preview": "\"use strict\";\n\n/**\n @module Pending\n*/\n\n/**\n * Initialize a new `PendingError` error with the given message.\n *\n * @para"
  },
  {
    "path": "lib/plugin-loader.js",
    "chars": 8371,
    "preview": "/**\n * @typedef {import('./types.d.ts').PluginDefinition} PluginDefinition\n */\n\n/**\n * Provides a way to load \"plugins\" "
  },
  {
    "path": "lib/reporters/base.js",
    "chars": 12953,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n * @typedef {import('../test.js')} Test\n * @typedef {impo"
  },
  {
    "path": "lib/reporters/doc.js",
    "chars": 2513,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n */\n\n/**\n * @module Doc\n */\n/**\n * Module dependencies.\n "
  },
  {
    "path": "lib/reporters/dot.js",
    "chars": 1915,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n */\n\n/**\n * @module Dot\n */\n/**\n * Module dependencies.\n "
  },
  {
    "path": "lib/reporters/html.js",
    "chars": 12303,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n */\n\n/**\n * @module HTML\n */\n/**\n * Module dependencies.\n"
  },
  {
    "path": "lib/reporters/index.js",
    "chars": 946,
    "preview": "\"use strict\";\n\n// Alias exports to a their normalized format Mocha#reporter to prevent a need\n// for dynamic (try/catch)"
  },
  {
    "path": "lib/reporters/json-stream.js",
    "chars": 2091,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n * @typedef {import('../test.js')} Test\n */\n\n/**\n * @modu"
  },
  {
    "path": "lib/reporters/json.js",
    "chars": 3794,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n */\n\n/**\n * @module JSON\n */\n/**\n * Module dependencies.\n"
  },
  {
    "path": "lib/reporters/landing.js",
    "chars": 2550,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n */\n\n/**\n * @module Landing\n */\n/**\n * Module dependencie"
  },
  {
    "path": "lib/reporters/list.js",
    "chars": 1896,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n */\n\n/**\n * @module List\n */\n/**\n * Module dependencies.\n"
  },
  {
    "path": "lib/reporters/markdown.js",
    "chars": 2603,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n */\n\n/**\n * @module Markdown\n */\n/**\n * Module dependenci"
  },
  {
    "path": "lib/reporters/min.js",
    "chars": 1076,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n */\n\n/**\n * @module Min\n */\n/**\n * Module dependencies.\n "
  },
  {
    "path": "lib/reporters/nyan.js",
    "chars": 5570,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n */\n\n/**\n * @module Nyan\n */\n/**\n * Module dependencies.\n"
  },
  {
    "path": "lib/reporters/progress.js",
    "chars": 2569,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n */\n\n/**\n * @module Progress\n */\n/**\n * Module dependenci"
  },
  {
    "path": "lib/reporters/spec.js",
    "chars": 2407,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n * @typedef {import('../test.js')} Test\n */\n\n/**\n * @modu"
  },
  {
    "path": "lib/reporters/tap.js",
    "chars": 6624,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n * @typedef {import('../test.js')} Test\n */\n\n/**\n * @modu"
  },
  {
    "path": "lib/reporters/xunit.js",
    "chars": 5316,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('../runner.js')} Runner\n * @typedef {import('../test.js')} Test\n */\n\n/**\n * @modu"
  },
  {
    "path": "lib/runnable.js",
    "chars": 11141,
    "preview": "\"use strict\";\n\nvar EventEmitter = require(\"node:events\").EventEmitter;\nvar PendingError = require(\"./pending\");\nvar debu"
  },
  {
    "path": "lib/runner.js",
    "chars": 39392,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('./types.d.ts').RunnerOptions} RunnerOptions\n */\n\n/**\n * Module dependencies.\n * "
  },
  {
    "path": "lib/stats-collector.js",
    "chars": 1768,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('./types.d.ts').StatsCollector} StatsCollector\n * @typedef {import('./runner.js')"
  },
  {
    "path": "lib/suite.js",
    "chars": 15996,
    "preview": "\"use strict\";\n\n/**\n * @typedef {import('./test.js')} Test\n */\n\n/**\n * Module dependencies.\n * @private\n */\nconst { Event"
  },
  {
    "path": "lib/test.js",
    "chars": 2578,
    "preview": "\"use strict\";\nvar Runnable = require(\"./runnable\");\nvar utils = require(\"./utils\");\nvar errors = require(\"./errors\");\nva"
  },
  {
    "path": "lib/types.d.ts",
    "chars": 9585,
    "preview": "/**\n * These types are a preliminary step towards moving Mocha's TypeScript types into Mocha.\n * They are not yet comple"
  },
  {
    "path": "lib/utils.js",
    "chars": 19207,
    "preview": "\"use strict\";\n\n/**\n * Various utility functions used throughout Mocha's codebase.\n * @module utils\n */\n\n/**\n * Module de"
  }
]

// ... and 411 more files (download for full content)

About this extraction

This page contains the full source code of the mochajs/mocha GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 611 files (1.6 MB), approximately 423.7k tokens, and a symbol index with 440 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!