{"id":13454868,"url":"https://github.com/tapjs/tapjs","last_synced_at":"2025-12-17T03:26:27.136Z","repository":{"id":38829146,"uuid":"1507818","full_name":"tapjs/tapjs","owner":"tapjs","description":"Test Anything Protocol tools for node","archived":false,"fork":false,"pushed_at":"2025-02-19T23:15:28.000Z","size":73929,"stargazers_count":2384,"open_issues_count":37,"forks_count":275,"subscribers_count":22,"default_branch":"main","last_synced_at":"2025-05-07T06:30:44.235Z","etag":null,"topics":["assert","bdd","code-coverage","commonjs","esm","framework","node","tap","tdd","test","testanythingprotocol","testing","typescript"],"latest_commit_sha":null,"homepage":"https://node-tap.org/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tapjs.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["isaacs","tapjs"]}},"created_at":"2011-03-21T18:02:54.000Z","updated_at":"2025-04-30T10:17:29.000Z","dependencies_parsed_at":"2023-09-02T09:57:38.845Z","dependency_job_id":"42be6f61-050c-4df3-b791-c9651b221828","html_url":"https://github.com/tapjs/tapjs","commit_stats":{"total_commits":3781,"total_committers":122,"mean_commits":"30.991803278688526","dds":"0.10023803226659611","last_synced_commit":"ccfea67fec112bb14db260dcec3de02f83fdccb1"},"previous_names":["tapjs/tapjs","tapjs/node-tap","isaacs/node-tap"],"tags_count":2390,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapjs%2Ftapjs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapjs%2Ftapjs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapjs%2Ftapjs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tapjs%2Ftapjs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tapjs","download_url":"https://codeload.github.com/tapjs/tapjs/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253206087,"owners_count":21871158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assert","bdd","code-coverage","commonjs","esm","framework","node","tap","tdd","test","testanythingprotocol","testing","typescript"],"created_at":"2024-07-31T08:00:58.758Z","updated_at":"2025-12-17T03:26:27.077Z","avatar_url":"https://github.com/tapjs.png","language":"JavaScript","readme":"# `@tapjs`\n\nWorkspace for node-tap development.\n\n## Dev Commands\n\nDo this at least once to get everything set up and ready to go:\n\n```\nnpm run bootstrap\n```\n\n(Note: `npm install` _will not work_ until you do this, because\nthe generated TypeScript eats its own tail.)\n\n---\n\nBuild the test class (required after any plugin or core changes):\n\n```\nnpm run build\n```\n\n---\n\nAny other builds:\n\n```\nnpm run prepare -w src/{whatever}\n```\n\n---\n\nAfter adding or removing workspaces:\n\n```\nnpm i\n```\n\n---\n\nRun all tests in all workspaces:\n\n```\nnpm test\n```\n\n---\n\nRun all tests, saving snapshots:\n\n```\nnpm run snap\n```\n\n---\n\nBuild and serve docs:\n\n```\nnpm start\n```\n\n## Contents\n\n- [tap](https://github.com/tapjs/tapjs/tree/main/src/tap) The\n  main entry point module, which sets up the root test runner and\n  exposes an alias to the cli runner.\n- [tap-parser](https://github.com/tapjs/tapjs/tree/main/src/parser)\n  The module that parses [TAP](https://testanything.org/)\n- [`@tapjs/core`](https://github.com/tapjs/tapjs/tree/main/src/core)\n  Most of the basic moving parts of tap\n- [tap-yaml](https://github.com/tapjs/tapjs/tree/main/src/yaml)\n  Thin wrapper around [YAML](https://github.com/eemeli/yaml) and\n  [yaml-types](https://github.com/eemeli/yaml-types) for\n  consistent handling of JavaScript values in YAML diagnostics.\n- [`@tapjs/test`](https://github.com/tapjs/tapjs/tree/main/src/test)\n  The plugin-ified `Test` class.\n- [`@tapjs/config`](https://github.com/tapjs/tapjs/tree/main/src/config)\n  Handling config files, command line interface parsing,\n  environment variables, and validation\n- [`@tapjs/run`](https://github.com/tapjs/tapjs/tree/main/src/run)\n  The command line runner\n- [tcompare](https://github.com/tapjs/tapjs/tree/main/src/tcompare)\n  The library that does comparison and object formatting (use\n  heavily by `@tapjs/asserts` methods).\n- [`@tapjs/stack`](https://github.com/tapjs/tapjs/tree/main/src/stack)\n  Library for capturing stack frames, the descendant of\n  `stack-utils`.\n- [`@tapjs/processinfo`](https://github.com/tapjs/processinfo)\n  The library that tracks process information and code coverage\n  (hosted outside the monorepo, because it can't be tested by a\n  version of tap that uses itself without bootstrap paradoxes)\n- default plugins:\n  - [`@tapjs/typescript`](https://github.com/tapjs/tapjs/tree/main/src/typescript)\n    Adds typescript support, and the `--typecheck` config option\n  - [`@tapjs/before`](https://github.com/tapjs/tapjs/tree/main/src/before)\n    Adds `t.before()`\n  - [`@tapjs/before-each`](https://github.com/tapjs/tapjs/tree/main/src/before-each)\n    Adds `t.beforeEach()`\n  - [`@tapjs/after`](https://github.com/tapjs/tapjs/tree/main/src/after)\n    Adds `t.after()` and `t.teardown()` (which are the same thing\n    now)\n  - [`@tapjs/after-each`](https://github.com/tapjs/tapjs/tree/main/src/after-each)\n    Adds `t.afterEach()`\n  - [`@tapjs/spawn`](https://github.com/tapjs/tapjs/tree/main/src/spawn)\n    Adds `t.spawn()`\n  - [`@tapjs/stdin`](https://github.com/tapjs/tapjs/tree/main/src/stdin)\n    Adds `t.stdin()`\n  - [`@tapjs/asserts`](https://github.com/tapjs/tapjs/tree/main/src/asserts)\n    Adds all the various assertion methods, like `t.equal()`,\n    `t.match()`, etc.\n  - [`@tapjs/snapshot`](https://github.com/tapjs/tapjs/tree/main/src/snapshot)\n    Adds `t.matchSnapshot()`\n  - [`@tapjs/fixture`](https://github.com/tapjs/tapjs/tree/main/src/fixture)\n    Adds `t.testdir()` features\n  - [`@tapjs/mock`](https://github.com/tapjs/tapjs/tree/main/src/mock)\n    Adds `t.mockRequire()` and `t.mockImport()`\n  - [`@tapjs/intercept`](https://github.com/tapjs/tapjs/tree/main/src/intercept)\n    Adds `t.intercept()` and `t.capture()` functionality (sort of\n    like a very scaled-down minimal form of Sinon. If you want\n    more, consider using the `@tapjs/sinon` plugin.)\n  - [`@tapjs/filter`](https://github.com/tapjs/tapjs/tree/main/src/filter)\n    Adds `t.only()` and support for the `--grep` and `--only` cli\n    options.\n- optional plugins:\n  - [`@tapjs/nock`](https://github.com/tapjs/tapjs/tree/main/src/nock)\n    Optional plugin providing `t.nock()` method (descendent of\n    `@npmjs/tap-nock`, and a significant inspiration for tap's\n    plugin architecture)\n  - [`@tapjs/clock`](https://github.com/tapjs/tapjs/tree/main/src/clock)\n    Optional plugin providing a\n    [clock-mock](https://github.com/isaacs/clock-mock) object on `t.clock`\n  - [`@tapjs/sinon`](https://github.com/tapjs/tapjs/tree/main/src/sinon)\n    Optional plugin providing a [Sinon](https://sinonjs.org)\n    sandbox at `t.sinon` that automatically restores at the end\n    of the test.\n  - [`@tapjs/esbuild-kit`](https://github.com/tapjs/tapjs/tree/main/src/esbuild-kit)\n    Optional plugin that loads TypeScript using\n    [`@esbuild-kit/cjs-loader`](https://github.com/esbuild-kit/cjs-loader)\n    and\n    [`@esbuild-kit/esm-loader`](https://github.com/esbuild-kit/esm-loader)\n    instead of\n    [`ts-node`](https://github.com/TypeStrong/ts-node).\n- other stuff:\n  - [npm-init-template](https://github.com/tapjs/tapjs/tree/main/src/npm-init-template)\n    A library for more easily creating `npm init` packages. This\n    will move out as soon as this version of tap is published.\n  - [`@tapjs/create-plugin`](https://github.com/tapjs/tapjs/tree/main/src/create-plugin)\n    An `npm init` library facilitating `npm init @tapjs/plugin`\n    to create new plugins.\n\n## Bootstrap and `skipLibCheck`\n\nRun `npm run bootstrap` to build the `@tapjs/test` module with\nthe default set of plugins, so that the other libraries can build\nproperly. (This only has to be done once, unless the build script\nor set of default plugins are changed, of course.)\n\nBecause there's a bootstrapping cycle between `@tapjs/core`,\n`@tapjs/test`, and all of the plugins, they MUST use\n`skipLibCheck: true` in their tsconfigs. It should not be used in\nother packages.\n","funding_links":["https://github.com/sponsors/isaacs","https://github.com/sponsors/tapjs"],"categories":["Packages","JavaScript","typescript"],"sub_categories":["Testing"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftapjs%2Ftapjs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftapjs%2Ftapjs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftapjs%2Ftapjs/lists"}