Is there a .mocha file where I can specify defaults such as --no-colors?
Asked Answered
H

3

91

I'd like to set some defaults for mocha without having to type them each time. Does mocha look for a config file / dotfile anywhere, as jshint looks for .jshintrc and npm looks for package.json?

Hort answered 11/4, 2013 at 14:10 Comment(1)
The accepted answer is now deprecated. I suggest accepting the new one (https://mcmap.net/q/234660/-is-there-a-mocha-file-where-i-can-specify-defaults-such-as-no-colors) to prevent more people from using the old approach.Gerlachovka
T
92

Yes. You can create a file ./test/mocha.opts and in the file you can specify --no-colors.

See mocha.opts on Mocha Doc for more information.

Toomay answered 11/4, 2013 at 16:8 Comment(1)
This has been deprecated. See @migg's answer here.Millenarian
B
51

Mocha recommends mocha --config=.mocharc.json.

There are new formats too, like yaml. See some examples.


Old answer:

The default is ./test/mocha.opts. You can pass a custom path with the --opts parameter :

mocha --opts ./mocha.opts

Useful in case you don’t store your tests in test/ folder, but next to code files, for example.

Any name and extension seems to work, so you can even do mocha --opts .mocharc if you want it to go well with .jshintrc, .babelrc and the like.

Berghoff answered 13/6, 2016 at 15:7 Comment(8)
This is (or at least was), a very obscure function. I had given up hope for such a thing long ago, and thank you for pointing out it's possible now. :)Novah
THANK YOU! Tests should really be next to files. Locality is important!Foamy
Is it possible for the contents of the file to be JSON?Tirol
It doesn’t seem like so. The CLI splits the content by spaces and then parses it with commander module. commander’s parser expects a string array. mocha source: github.com/nishigori/mocha/blob/… - commander source: github.com/tj/commander.js/blob/…Berghoff
You could launch mocha in a script and pass your JSON file contents. See: github.com/mochajs/mocha/wiki/…Berghoff
strange, I couldnt get --config ./mocha.opts to work as per their official docs but --opts ./mocha.opts worked... thanks!Responsion
This will no longer work. See: #60283697Roband
Thanks @MartinCapodici, updated the answer to reflect the newest mocha behaviorBerghoff
F
37

In mocha 6+ the mocha.opts was changed to legacy and the new place to define your configuration is a .mocharc file that can have different formats (JSON, YAML, JS) as described in the docs or a JSON config added to the package.json using mocha key.

Specifying your own path to mocha config is done using --config <file> but mocha uses any .mocharc.* file as default in order described in the docs (JS, YAML, YML, JSON) and also automatically uses mocha key from package.json with lower priority than a given config file.

Fiery answered 21/2, 2019 at 10:10 Comment(1)
An example .mocharc.js file is here: github.com/mochajs/mocha/blob/master/example/config/.mocharc.js (and there are other formats in that directory as well).Stenographer

© 2022 - 2024 — McMap. All rights reserved.