{"id":19437766,"url":"https://github.com/architect/tap-arc","last_synced_at":"2025-07-22T01:31:25.937Z","repository":{"id":41975918,"uuid":"417041723","full_name":"architect/tap-arc","owner":"architect","description":"Node.js spec-like TAP reporter","archived":false,"fork":false,"pushed_at":"2024-07-29T20:37:00.000Z","size":7376,"stargazers_count":30,"open_issues_count":6,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-08T17:44:22.733Z","etag":null,"topics":["nodejs","spec","tap","tap-reporter","testing"],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/tap-arc","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/architect.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2021-10-14T08:02:23.000Z","updated_at":"2024-09-28T22:57:24.000Z","dependencies_parsed_at":"2024-06-18T18:13:53.716Z","dependency_job_id":"949f372e-7802-4de0-bb4f-50b29a1790f4","html_url":"https://github.com/architect/tap-arc","commit_stats":{"total_commits":117,"total_committers":4,"mean_commits":29.25,"dds":0.02564102564102566,"last_synced_commit":"b8b2b65418f8fe881de48315c9373426a96a2d5c"},"previous_names":["tbeseda/tap-spek"],"tags_count":44,"template":false,"template_full_name":null,"purl":"pkg:github/architect/tap-arc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/architect%2Ftap-arc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/architect%2Ftap-arc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/architect%2Ftap-arc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/architect%2Ftap-arc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/architect","download_url":"https://codeload.github.com/architect/tap-arc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/architect%2Ftap-arc/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266409445,"owners_count":23924284,"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","status":"online","status_checked_at":"2025-07-21T11:47:31.412Z","response_time":64,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["nodejs","spec","tap","tap-reporter","testing"],"created_at":"2024-11-10T15:15:50.051Z","updated_at":"2025-07-22T01:31:25.864Z","avatar_url":"https://github.com/architect.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\u003ccode\u003etap-arc\u003c/code\u003e 📋\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  A small \u003ca href=\"https://testanything.org/\"\u003eTAP\u003c/a\u003e reporter with spec-like output, streaming, and failure diffing.\u003cbr\u003e\n  \u003ca href=\"https://www.npmjs.com/package/tap-arc\"\u003e\u003cstrong\u003e\u003ccode\u003etap-arc\u003c/code\u003e on npmjs.org »\u003c/strong\u003e\u003c/a\u003e\u003cbr\u003e\n  \u003cbr\u003e\n  Contents:\n  \u003ca href=\"#Installation-and-usage\"\u003eInstall\u003c/a\u003e\n  •\n  \u003ca href=\"#Development\"\u003eDevelopment\u003c/a\u003e\n  •\n  \u003ca href=\"#FAQ\"\u003eFAQ\u003c/a\u003e\n\u003c/p\u003e\n\n## Objectives\n\n- minimal, informative spec-like output for all assertion types\n- helpful diffing for failures\n- shallow graph of maintained dependencies\n\n![tap-arc output screen shot](./screen-shot.png)\n\n## Installation and Usage\n\nCompatible with Node.js v16+ -- v14 also works but is ***not*** recommended.\n\nSave `tap-arc` as a development dependency:\n\n```sh\nnpm i -D tap-arc\n```\n\nSimply pipe tap output to `tap-arc`.  \nExample `npm test` script:\n\n```js\n// package.json\n\"scripts\": {\n  \"test\": \"tape test/**/*.js | tap-arc\"\n}\n```\n\n\u003e [!IMPORTANT]  \n\u003e 💁  `tap-arc` will format output from any tap reporter. [`tape`](https://github.com/ljharb/tape) is our favorite and was used for testing.\n\n### `tap-arc --help`\n\n```\nUsage:\n  tap-arc \u003coptions\u003e\n\nParses TAP data from stdin, and outputs a \"spec-like\" formatted result.\n\nOptions:\n\n  -v | --verbose\n    Output full stack trace, TAP version, and plan\n\n  -p | --pessimistic | --bail\n    Immediately exit upon encountering a failure\n    example: tap-arc -p\n\n  --no-diff\n    Do not show diff for failed assertions\n    example: tap-arc --no-diff\n\n  --no-color\n    Output without ANSI escape sequences for colors\n    example: tap-arc --no-color\n\n  --fail-bad-count\n    Fail when the number of assertions parsed does not match the plan\n    example: tap-arc --fail-bad-count\n```\n\n## Development\n\nWhen building `tap-arc`, it's helpful to try various TAP outputs. See `package.json` `\"scripts\"` for useful \"tap-arc.*\" commands to test passing and failing TAP.\n\n```sh\nnpm run tap-arc.simple # used to create the screen shot above\n```\n\n### Dev Tips\n\n1. To see previous exit code, run:\n\n```sh\necho $?\n```\n\n### Testing\n\nPrimarily, `tap-arc` is tested to output the correct exit code based on your test suite's TAP output.\n\nTesting could be improved by unit testing the printer and diff maker.\n\n## FAQ\n\n\u003cdetails\u003e\n\u003csummary\u003e\"Expected \u003ccode\u003en\u003c/code\u003e tests, but found \u003ccode\u003e\u003c n\u003c/code\u003e\"\u003c/summary\u003e\n\n_What happened?_  \n✅ The TAP parser found zero failing tests  \n✅ The final tally from the raw TAP shows `n` of `n` passed  \n🤨 But the TAP plan called for more tests than were found, counted, and parsed.\n\n💁‍♀️ Currently, when this case is detected, `tap-arc` will exit with a successful status code.  \nThis can be overridden with the `--fail-bad-count` flag.\n\n_Why, though_?  \nThis has been observed specifically on Windows, where the TAP output is buffered to another stream and not piped to `tap-arc`.  \nLibraries like `mock-fs` tinker with stdout and subsequent TAP output is lost. Try closing those helpers before making an assertion that generates TAP.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\"0 tests found\" fails the suite?\u003c/summary\u003e\n\nYes. At least one passing test is required to pass the suite.  \nThis helps ensures there wasn't a silent, catastrophic failure in the test suite.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWhy does \u003ccode\u003etap-arc\u003c/code\u003e get to decide these things?\u003c/summary\u003e\n\n`tap-arc` is responsible for the test suite's exit code. If your entire CI stack is piped to a reporter, it's an important job. So `tap-arc` is a bit skeptical by default to help ensure your suite is passing.\n\nIf you'd like to see different behavior from `tap-arc`, please open an issue or PR. We'd love to hear your use case.\n\n\u003c/details\u003e\n\n## Credit \u0026 Inspiration\n\n- [tap-spec](https://github.com/scottcorgan/tap-spec) ol' reliable, but a bit stale and vulnerable\n- [tap-difflet](https://github.com/namuol/tap-difflet) inspired output and diffing, also vulnerable\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchitect%2Ftap-arc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farchitect%2Ftap-arc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farchitect%2Ftap-arc/lists"}