Node TAP 21.0.1

The .tap Folder

tl;dr - Tap puts stuff in .tap. It's probably best to .gitignore this folder.

The .tap folder is used to store various things that tap uses.

.tap/processinfo#

Every process that is spawned in the course of running tests is assigned a UUID and information about it is stored for later analysis. This is used by tap to be able to know which tests need to be re-run when you do tap --changed, for example.

The data is created by @tapjs/processinfo. Each of the files in this folder have a filename corresponding to the uuid, and contain a JSON-encoded ProcessInfoNodeData object.

These nodes have a root and parent fields, creating a tree structure of processes. You can explore the tree by using the i command in the REPL.

TAP> i test/config.ts
test/config.ts:
  date: 2023-10-05T22:58:15.094Z
  command: /usr/local/bin/node
  args:
    - --import=file:///Users/isaacs/dev/tapjs/tapjs/node_modules/@tapjs/mock/dist/esm/import.mjs
    - --loader=file:///Users/isaacs/dev/tapjs/tapjs/node_modules/ts-node/esm.mjs
    - --no-warnings
    - --enable-source-maps
    - --import=file:///Users/isaacs/dev/tapjs/tapjs/node_modules/@tapjs/processinfo/dist/esm/import.mjs
    - /Users/isaacs/dev/tapjs/tapjs/src/run/test/config.ts
  cwd: /Users/isaacs/dev/tapjs/tapjs/src/run
  pid: 93041
  ppid: 93003
  code: 0
  runtime: 3737.6802079999998

TAP> i 686a4eb3-e82f-4b6b-b365-2c38195776f9
686a4eb3-e82f-4b6b-b365-2c38195776f9:
  date: 2023-10-05T22:58:31.447Z
  command: /usr/local/bin/node
  args:
    - /Users/isaacs/dev/tapjs/tapjs/src/run/dist/esm/index.js
    - blah.test.js
  cwd: /Users/isaacs/dev/tapjs/tapjs/src/run/.tap/fixtures/test-run.ts-fail-to-find-all-named-test-files
  pid: 93259
  ppid: 93149
  parent: ee929bda-9b80-43af-a5d7-da233c1f80f9
  code: 1
  runtime: 490.024416

.tap/coverage#

The coverage generated by each test process is stored to this folder, with a <uuid>.json filename corresponding to the file for the process in .tap/processinfo.

These are V8 coverage dump files, with a source-map-cache attached to be able to turn V8's byte-offset-based coverage reporting into line/column reporting used by the istanbul reporters.

It's the same format used by the NODE_V8_COVERAGE directory, but limited only to the files in your program that you've opted to provide coverage for, instead of everything in node_modules and node's built-in modules. You can use this folder as an argument to any other program that knows how to interpret this format, or put coverage files in this folder and tap will include them in its coverage reporting.

.tap/report#

When generating coverage reports, the files generated go in here.

--coverage-report config file generated
text (default) no file generated, just writes to terminal
html .tap/report/index.html
lcov .tap/report/lcov.info, .tap/report/lcov-report/index.html
clover .tap/report/clover.xml
cobertura .tap/report/cobertura-coverage.xml
json `.tap/report/coverage-final.json
json-summary `.tap/report/coverage-summary.json
lcovonly .tap/report/lcov.info

.tap/fixtures#

This is the folder where the @tapjs/fixture plugin puts its test fixture files.

.tap/test-results#

Whenever tests are run, the raw TAP output is saved to this folder. This is what the tap replay command uses to replay the results of the previous test run.

Ignoring or Saving#

There's little harm in exposing the .tap folder, as the only sensitive data it typically contains (other than your code itself) is file and folder paths.

However, becuase it does contain file and folder paths, it's system specific, and generally not something you'd want to check into source control, so I recommend adding /.tap to your .gitignore file.