Usage:
  tap [<options>] [<cmd> ...[<args>]]

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'

Coverage is not enabled for stdin.

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

The best Foo that ever Fooed

  Executes all the files and interprets their output as TAP formatted test
  result data.

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

  This is a list:

  - one
  - two
  - three

  Subcommands

    several subcommands are available.

    they are described below.

  bazzle

    Bazzle the bedazzled razzle mafazzale

    blorg
      When the grolb needs blorging, use this command and it will make sure
      every asdf is a quux.

      ​A pre-formatted description section
      ​
      ​     because
      ​ '. \   what if your usage banner
      ​  '- \                 needs a baby elephant
      ​   / /_         .---.
      ​  / | \\,.\/--.//    )
      ​  |  \//        )/  /
      ​   \  ' ^ ^    /    )____.----..  6
      ​    '.____.    .___/            \._)
      ​       .\/.                      )
      ​        '\                       /
      ​        _/ \/    ).        )    (
      ​       /#  .!    |        /\    /
      ​       \  C// #  /'-----''/ #  /
      ​    .   'C/ |    |    |   |    |mrf  ,
      ​    \), .. .'OOO-'. ..'OOO'OOO-'. ..\(,

  Basic Options

  --plugin=<module>    Configure the tap Test class with the specified plugin.

                       Typically this is set in a .taprc file, not on the
                       command line, and can be managed using the 'tap plugin
                       <add|rm>' command.

                       If the set of plugins does not match that which tap was
                       built with previously, then it will rebuild the Test
                       class prior to running tests.

                       To *exclude* a plugin which has been previously included
                       (perhaps by being part of tap's default set), add it to
                       this list prefixed by a '!' character.

                       Can be set multiple times

  -R<reporter> --reporter=<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.

  -r<arg> --reporter-arg=<arg>
                       Args to pass to command-line reporters. Ignored when
                       using built-in reporters or module reporters.

                       Can be set multiple times

  --coverage-reporter=<type>
                       Output coverage information using the specified istanbul
                       coverage 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 coverage reporters: clover cobertura html json
                       json-summary lcov lcovonly none teamcity text text-lcov
                       text-summary

  -F --save-fixture    Do not clean up fixtures created with t.testdir()
  -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
  -c --color           Use colors (Default for TTY)
  -C --no-color        Do not use colors (Default for non-TTY)
  -S --snapshot        Generate snapshot files for 't.matchSnapshot()'
                       assertions.

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

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

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

  -s --save            If <file> exists, then it should be a line- delimited
                       list of test files to run. If <file> is not present, then
                       all command-line positional arguments 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<file> 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.

  -g<pattern> --grep=<pattern>
                       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       Do not invert the matches to --grep patterns. (default)

  --diag               Set to show diagnostics by default for both passing
                       tests. If not set, then diagnostics are printed by
                       default for failing tests, and not for passing tests.

  --no-diag            Do not show diagnostics by default for passing or failing
                       tests. If not set, then diagnostics are printed by
                       default for failing tests, and not for passing tests.

  -t<n> --timeout=<n>  Time out test files after <n> seconds. Defaults to 30.
                       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.

  --files=<filename>   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

  Test Running Options

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

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

                       Set --jobs=1 to disable parallelization entirely.

  --before=<module>    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=<module>     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.

  -o<filename> --output-file=<filename>
                       Send the raw TAP output to the specified file. Reporter
                       output will still be printed to stdout, but the file will
                       contain the raw TAP for later replay or analysis.

  -d<dir> --output-dir=<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.

  --include=<pattern>  A glob expression pattern indicating tests to run if no
                       positional arguments are provided to the 'tap run'
                       command.

                       By default, tap will search for all files ending in .ts,
                       .tsx, .cts, .mts, .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,...)'

                       No files excluded by the 'exclude' option will be loaded,
                       meaning so dependencies, build artifacts in 'dist', and
                       test fixtures and snapshots will be ignored.

  --exclude=<pattern>  A glob pattern indicating which filenames should NEVER be
                       run as tests. This overrides the 'include' option.

                       Defaults to excluding any folders named dist, fixture, or
                       fixtures.

                       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=<arg>     Pass an argument to test files spawned by the tap command
                       line executable. This can be specified multiple times to
                       pass multiple args to test scripts.

                       Can be set multiple times

  --test-env=<key=value>
                       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, such as '--test-env=key',
                       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

  --node-arg=<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

  Other Options

  --debug              Turn on debug mode
  -V --versions        Show the version of tap and relevant tap libraries in
                       use.

  -v --version         Show the version of this program.
  -h --help            show this help banner
