STANNIX Solutions for the Real World


Manual: tap

RUN.JS(1)					User Commands					   RUN.JS(1)

NAME
       run.js - Test-Anything-Protocol module for Node.js

DESCRIPTION
   Usage:
	      tap [options] []

       tap v16.3.7 - A Test-Anything-Protocol library for JavaScript

       Executes all the files and interprets their output as TAP formatted test result data. If no files are
       specified, then tap will search for testy-looking files, and run those. (See '--test-regex' below.)

       To parse TAP data from stdin, specify "-" as a filename.

       Short  options  are  parsed  gnu-style,	so  for	 example  '-bCRspec'  would be equivalent to '--bail
       --no-color --reporter=spec'

       If the --check-coverage or --coverage-report options are provided explicitly, and no test  files	 are
       specified, then a coverage report or coverage check will be run on the data from the last test run.

       Coverage is never enabled for stdin.

       Much more documentation available at: https://www.node-tap.org/

       Basic Options:

       -R --reporter=
	      Use  the	specified  reporter. Defaults to 'base' when colors are in use, or 'tap' when colors
	      are disabled.

       In addition to the built-in reporters provided by the
	      treport and tap-mocha-reporter modules, the reporter option can also  specify  a	command-line
	      program or a module to load via require().

       Command-line programs receive the raw TAP output on
	      their stdin.

       Modules loaded via require() must export either a
	      writable	stream	class  or a React.Component subclass.  Writable streams are instantiated and
	      piped into. React components are rendered using Ink, with tap={tap} as their only property.

       Available built-in reporters: classic doc dot dump json
	      jsonstream landing list markdown min nyan progress silent spec tap xunit

       -r --reporter-arg=
	      Args to pass to command-line reporters. Ignored when using built-in reporters  or	 module	 re‐
	      porters.	Can be set multiple times

       -F --save-fixture
	      Do not clean up fixtures created with t.testdir()

       --no-save-fixture
	      switch off the --save-fixture flag

       -b --bail
	      Bail out on first failure

       -B --no-bail
	      Do not bail out on first failure (default)

       --comments
	      Print all tap comments to process.stderr

       --no-comments
	      switch off the --comments flag

       -c --color
	      Use colors (Default for TTY)

       -C --no-color
	      Do not use colors (Default for non-TTY)

       -S --snapshot
	      Set to generate snapshot files for 't.matchSnapshot()' assertions.

       --no-snapshot
	      switch off the --snapshot flag

       -w --watch
	      Watch for changes in the test suite or covered program.

       Runs the suite normally one time, and from then on,
	      re-run just the portions of the suite that are required whenever a file changes.

       Opens a REPL to trigger tests and perform various
	      actions.

       --no-watch
	      switch off the --watch flag

       -n --changed
	      Only run tests for files that have changed since the last run.

       This requires coverage to be enabled, because tap uses
	      NYC's process info tracking to monitor which file is loaded by which tests.

       If no prior test run data exists, then all default
	      files are run, as if --changed was not specified.

       --no-changed
	      switch off the --changed flag

       -s --save= If  exists, then it should be a line- delimited
	      list  of	test  files to run. If  is not present, then all command-line positional argu‐
	      ments are run.

       After the set of test files are run, any failed test
	      files are written back to the save file.

       This way, repeated runs with -s will re-run
	      failures until all the failures are passing, and then once again run all tests.

       Its a good idea to .gitignore the file used for this
	      purpose, as it will churn a lot.

       -O --only
	      Only run tests with {only: true} option, or created with t.only(...) function.

       --no-only
	      switch off the --only flag

       -g --grep=
	      Only run subtests tests matching the specified pattern.

       Patterns are matched against top-level subtests in each
	      file. To filter tests at subsequent levels, specify this option multiple times.

       To specify regular expression flags, format pattern
	      like a JavaScript RegExp literal. For example: '/xyz/i' for case-insensitive matching.

	      Can be set multiple times

       -i --invert
	      Invert the matches to --grep patterns. (Like grep -v)

       -I --no-invert
	      switch off the --invert flag

       -t --timeout=
	      Time out test files after  seconds. Defaults to 30, or the value of the  TAP_TIMEOUT  envi‐
	      ronment variable.	 Setting to 0 allows tests to run forever.

       When a test process calls t.setTimeout(n) on the
	      top-level tap object, it also updates this value for that specific process.

       -T --no-timeout
	      Do not time out tests. Equivalent to --timeout=0.

       --files=
	      Alternative  way	to  specify test set rather than using positional arguments. Supported as an
	      option so that test file arguments can be specified in .taprc and package.json files.  Can  be
	      set multiple times

       Running Parallel Tests:

	      Tap  can	run  multiple test files in parallel. This generally results in a speedier test run,
	      but can also cause problems if your test files are not designed to be independent from one an‐
	      other.

	      To designate a set of files as ok to run in parallel, add them to a folder containing  a	file
	      named 'tap-parallel-ok'.

	      To  designate  a	set of files as not ok to run in parallel, add them to a folder containing a
	      file named 'tap-parallel-not-ok'.

	      These folders may be nested within one another, and tap will do the right thing.

       -j --jobs=
	      Run up to  test files in parallel.

       By default, this will be set to the number of CPUs on
	      the system.

	      Set --jobs=1 to disable parallelization entirely.

       -J --jobs-auto
	      Run test files in parallel (auto calculated)

       This is the default as of v13, so this option serves
	      little purpose except to re-set the parallelization back to the default if an  earlier  option
	      (or config file) set it differently.

       --before=
	      A node program to be run before test files are executed.

       Exiting with a non-zero status code or a signal will
	      fail the test run and exit the process in error.

       --after=
	      A node program to be executed after tests are finished.

       This will be run even if a test in the series fails
	      with a bailout, but it will *not* be run if a --before script fails.

       Exiting with a non-zero status code or a signal will
	      fail the test run and exit the process in error.

       Code Coverage Options:

	      Tap uses the nyc module internally to provide code coverage, so there is no need to invoke nyc
	      yourself or depend on it directly unless you want to use it in other scenarios.

       --100  Enforce full coverage, 100%. Sets branches, statements, functions, and lines to 100.

       This is the default. To specify a lower limit (or no
	      limit)  set  --lines,  --branches, --functions, or --statements to a lower number than 100, or
	      disable  coverage	 checking  with	 --no-check-coverage,  or  disable  coverage  entirely	with
	      --no-coverage.

       -M --coverage-map=
	      Provide  a  path	to  a node module that exports a single function. That function takes a test
	      file as an argument, and returns an array of files to instrument with coverage when that	file
	      is run.

       This is useful in cases where a unit test should cover
	      a single portion of the system under test.

	      Return 'null' to not cover any files by this test.

       Return an empty array [] to cover the set that nyc
	      would pull in by default. Ie, returning [] is equivalent to not using a coverage map at all.

       --no-coverage-map
	      Do not use a coverage map. Primarily useful for disabling a coverage-map that is set in a con‐
	      fig file.

       -cov --coverage
	      Capture coverage information using 'nyc' This is enabled by default.

       If a COVERALLS_REPO_TOKEN environment variable is set,
	      and the 'coveralls' module is installed, then coverage is sent to the coveralls.io service.

       Note that tap does not automatically install coveralls,
	      it must already be present in your project to use this feature.

       -no-cov --no-coverage
	      Do  not  capture	coverage  information. Note that if nyc is already loaded, then the coverage
	      info will still be captured.

       --coverage-report=
	      Output coverage information using the specified istanbul/nyc reporter type.

       Default is 'text' when running on the command line, or
	      'text-lcov' when piping to coveralls.

       If 'html' is used, then the report will be opened in a
	      web browser after running.

       This can be run on its own at any time after a test run
	      that included coverage.

       Built-in NYC reporters: clover cobertura html json
	      json-summary lcov lcovonly none teamcity text text-lcov text-summary

	      Can be set multiple times

       --no-coverage-report
	      Do not output a coverage report, even if coverage information is generated.

       --browser
	      Open a browser when an html coverage report is generated. (this is the default behavior)

       --no-browser
	      Do not open a web browser after generating an html coverage report

       -pstree --show-process-tree
	      Enable coverage and display the tree of spawned processes.

       --no-show-process-tree switch off the --show-process-tree flag

       Coverage Enfocement Options:

	      These options enable you to specify that the test will fail if a given coverage level  is	 not
	      met. Setting any of the options below will trigger the --coverage and --check-coverage flags.

	      The most stringent is --100. You can find a list of projects running their tests like this at:
	      https://www.node-tap.org/100

	      If you run tests in this way, please add your project to the list.

       --check-coverage
	      Check  whether  coverage	is within thresholds provided.	Setting this explicitly will default
	      --coverage to true.

       This can be run on its own any time after a test run
	      that included coverage.

       --no-check-coverage
	      switch off the --check-coverage flag

       --branches=
	      what % of branches must be covered?

       --functions=
	      what % of functions must be covered?

       --lines=
	      what % of lines must be covered?

       --statements=
	      what % of statements must be covered?

       Other Options:

       -h --help
	      Show this helpful output

       --no-help
	      switch off the --help flag

       -v --version
	      Show the version of this program.

       --no-version
	      switch off the --version flag

       --test-regex= A regular expression pattern indicating tests to run if
	      no positional arguments are provided.

       By default, tap will search for all files ending in
	      .ts, .tsx, .js, .jsx, .cjs, or .mjs, in a top-level folder named test, tests, or __tests__, or
	      any file ending in '.spec.' or '.test.' before a supported  extension,  or  a  top-level	file
	      named 'test.(js,jsx,...)' or 'tests.(js,jsx,...)'

       Ie, the default value for this option is:
	      ((\/|^)(tests?|__tests?__)\/.*|\.(tests?|spec)|^\/?test s?)\.([mc]js|[jt]sx?)$

       Note that .jsx files will only be run when --jsx is
	      enabled, .ts files will only be run when --ts is enabled, and .tsx files will only be run with
	      both --ts and --jsx are enabled.

       --test-ignore=
	      When  no positional arguments are provided, use the supplied regular expression pattern to ex‐
	      clude tests that would otherwise be matched by the test-regexp.

	      Defaults to '$.', which intentionally matches nothing.

       Note: folders named tap-snapshots, node_modules, .git,
	      and .hg are ALWAYS excluded from the default test file set. If you wish to run tests in  these
	      folders, then name the test files on the command line as positional arguments.

       --test-arg=
	      Pass  an argument to test files spawned by the tap command line executable. This can be speci‐
	      fied multiple times to pass multiple args to test scripts.  Can be set multiple times

       --test-env=]>
	      Pass a key=value (ie, --test-env=key=value) to set an  environment  variable  in	the  process
	      where tests are run.

       If a value is not provided, then the key is ensured to
	      not be set in the environment. To set a key to the empty string, use --test-env=key=

	      Can be set multiple times

       --nyc-arg=
	      Pass an argument to nyc when running child processes with coverage enabled. This can be speci‐
	      fied multiple times to pass multiple args to nyc.	 Can be set multiple times

       --node-arg=
	      Pass  an	argument  to Node binary in all child processes.  Run 'node --help' to see a list of
	      all relevant arguments. This can be specified multiple times to pass multiple  args  to  Node.
	      Can be set multiple times

       -gc --expose-gc
	      Expose the gc() function to Node.js tests

       --debug
	      Turn on debug mode

       --no-debug
	      switch off the --debug flag

       --debug-brk
	      Run JavaScript tests with node --debug-brk

       --harmony
	      Enable all Harmony flags in JavaScript tests

       --strict
	      Run JS tests in 'use strict' mode

       --flow Removes flow types

       --no-flow
	      switch off the --flow flag

       --ts   Automatically load .ts and .tsx tests ts-node module.  Note: you must provide ts-node as a de‐
	      pendency yourself, tap does not automatically bundle it.	(Default: false)

       --no-ts
	      switch off the --ts flag

       --jsx  Automatically load .jsx tests using tap's bundled import-jsx loader (Default: false)

       --no-jsx
	      switch off the --jsx flag

       --nyc-help
	      Print nyc usage banner. Useful for viewing options for --nyc-arg.

       --no-nyc-help
	      switch off the --nyc-help flag

       --nyc-version
	      Print version of nyc used by tap.

       --no-nyc-version
	      switch off the --nyc-version flag

       --parser-version
	      Print the version of tap-parser used by tap.

       --no-parser-version
	      switch off the --parser-version flag

       --versions
	      Print versions of tap, nyc, and tap-parser

       --no-versions
	      switch off the --versions flag

       --dump-config
	      Dump the config options in YAML format

       --no-dump-config
	      switch off the --dump-config flag

       --rcfile=
	      Load any of these configurations from a YAML-formatted file at the path specified. Defaults to
	      .taprc in the current working directory.

       Run 'tap --dump-config' to see available options and
	      formatting.

       --libtap-settings=
	      A	 module	 which	exports	 an object of fields to assign onto 'libtap/settings'. These are ad‐
	      vanced configuration options for modifying the behavior of tap's internal runtime.

       Module path is resolved relative to the current working
	      directory.

       Allowed fields: rmdirRecursive, rmdirRecursiveSync,
	      StackUtils, stackUtils, output, snapshotFile.

	      See libtap documentation for expected values and usage.

	      https://github.com/tapjs/libtap

       -o --output-file=
	      Send the raw TAP output to the specified file. Reporter output will still be printed  to	std‐
	      out, but the file will contain the raw TAP for later replay or analysis.

       -d --output-dir=
	      Send  the	 raw TAP output to the specified directory. A separate .tap file will be created for
	      each test file that is run. Reporter output will still be printed to  stdout,  but  the  files
	      will contain the raw TAP for later replay or analysis.

       Files will be created to match the folder structure and
	      filenames of test files run, but with '.tap' appended to the filenames.

       --     Stop parsing flags, and treat any additional command line arguments as filenames.

       Environment Variables:

       COVERALLS_REPO_TOKEN
	      Set  to  a Coveralls token to automatically send coverage information to https://coveralls.io,
	      if the 'coveralls' module is installed in the project.

       TAP_CHILD_ID
	      Test files have this value set to a numeric value when run through the test  runner.  It	also
	      appears on the root tap object as `tap.childId`.

       TAP_SNAPSHOT
	      Set to '1' to generate snapshot files for 't.matchSnapshot()' assertions.

       TAP_RCFILE
	      A yaml formatted file which can set any of the above options. Defaults to ./.taprc

       TAP_LIBTAP_SETTINGS
	      A	 path  (relative to current working directory) of a file that exports fields to override the
	      default libtap settings

       TAP_TIMEOUT
	      Default value for --timeout option.

       TAP_COLORS
	      Set to '1' to force color output, or '0' to prevent color output.

       TAP_BAIL
	      Bail out on the first test failure. Used internally when '--bailout' is set.

       TAP    Set to '1' to force standard TAP output, and suppress any reporters. Used when  running  child
	      tests so that their output is parseable by the test harness.

       TAP_DIAG
	      Set  to  '1' to show diagnostics by default for passing tests. Set to '0' to NOT show diagnos‐
	      tics by default for failing tests. If not one  of	 these	two  values,  then  diagnostics	 are
	      printed by default for failing tests, and not for passing tests.

       TAP_BUFFER
	      Set to '1' to run subtests in buffered mode by default.

       TAP_DEV_LONGSTACK
	      Set  to '1' to include node-tap internals in stack traces. By default, these are included only
	      when the current working directory is the tap project itself.  Note that	node  internals	 are
	      always excluded.

       TAP_DEBUG
	      Set to '1' to turn on debug mode.

       NODE_DEBUG
	      Include 'tap' to turn on debug mode.

       TAP_GREP
	      A '\n'-delimited list of grep patterns to apply to root level test objects. (This is an imple‐
	      mentation detail for how the '--grep' option works.)

       TAP_GREP_INVERT
	      Set  to  '1' to invert the meaning of the patterns in TAP_GREP. (Implementation detail for how
	      the '--invert' flag works.)

       TAP_ONLY
	      Set to '1' to set the --only flag

       TAP_TS Set to '1' to enable automatic typescript support

       TAP_JSX
	      Set to '1' to enable automatic jsx support

       Config Files:

	      You can create a yaml file with any of the options above. By default,  the  file	at  ./.taprc
	      will be loaded, but the --rcfile option or TAP_RCFILE environment variable can modify this.

	      Run 'tap --dump-config' for a listing of what can be set in that file. Each of the keys corre‐
	      sponds to one of the options above.

run.js 16.3.7					December 2025					   RUN.JS(1)