Skip to content

v6.0.0-0

Pre-release
Pre-release
Compare
Choose a tag to compare
@boneskull boneskull released this 21 Feb 18:44
· 597 commits to master since this release
8de7fae

6.0.0-0 / 2019-01-01

Documentation for this release can be found at next.mochajs.org!

Welcome @plroebuck, @craigtaub, & @markowsiak to the team!

💥 Breaking Changes

  • #3149: Drop Node.js v4.x support (@outsideris)
  • #3556: Changes to command-line options (@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: --watch-extensions no longer implies js; it must be explicitly added (@TheDancingCode)
  • #2908: tap reporter emits error messages (@chrmod)
  • #2819: When conditionally skipping in a before hook, subsequent before hooks and tests in nested suites are now skipped (@bannmoore)
  • #627: Emit filepath in "timeout exceeded" exceptions where applicable (@boneskull)
  • #3556: lib/template.html has moved to lib/browser/template.html (@boneskull)
  • #2576: An exception is now thrown if Mocha fails to parse or find a mocha.opts at a user-specified path (@plroebuck)
  • #3458: Instantiating a Base-extending reporter without a Runner parameter will throw an exception (@craigtaub)
  • #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)

📠 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.

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

🎉 Enhancements

Enhancements introduced in #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
      2. RC file
      3. package.json
      4. mocha.opts
      5. Mocha's own defaults
    • Check out these example config files
  • Node/V8 flag support in mocha executable:

    • Support all allowed node flags as supported by the running version of node (also thanks to @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: tap reporter is now TAP13-capable (@plroebuck & @mollstam)

  • #3535: Mocha's version can now be queried programmatically via public property Mocha.prototype.version (@plroebuck)

  • #3428: xunit reporter shows diffs (@mlucool)

  • #2529: Runner now emits a retry event when tests are retried (reporters can listen for this) (@catdad)

  • #2962, #3111: In-browser notification support; warn about missing prereqs when --growl supplied (@plroebuck)

🐛 Fixes

📖 Documentation

🔩 Other