{"_id":"ctrf-cli","_rev":"10-7aee96ccf26e93c1a979854679ccca8b","name":"ctrf-cli","dist-tags":{"next":"0.0.5-next-1","latest":"0.3.1"},"versions":{"0.0.1":{"name":"ctrf-cli","version":"0.0.1","author":{"name":"Matthew Thomas"},"license":"MIT","_id":"ctrf-cli@0.0.1","maintainers":[{"name":"matthewthomasdev","email":"matthewthomasgb@gmail.com"}],"homepage":"https://ctrf.io","bugs":{"url":"https://github.com/ctrf-io/ctrf-cli/issues"},"bin":{"ctrf":"dist/cli.js"},"dist":{"shasum":"096b531dce92cbd8f35d61a49ca331342341fc79","tarball":"https://registry.npmjs.org/ctrf-cli/-/ctrf-cli-0.0.1.tgz","fileCount":21,"integrity":"sha512-SEIT4MxoWltTCuYJwJtWk5hfZhw+YETjTVwQX4Hw3E7hYtYP1yRXN8FVxXo2pxxylVlaT3NLU72rXFRK/46IlQ==","signatures":[{"sig":"MEQCIBoqeXRVugqGoa4LkbhBaxuTlAFnjJIZUYMnWN+i9an/AiAL52/is4TuwqwuNVTH44WF9Owd7+7UqiBqid6kxr0XNQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61970},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"ac6c20e8ba47df2b27157fefe09d1de27442bba8","scripts":{"build":"tsc"},"_npmUser":{"name":"matthewthomasdev","email":"matthewthomasgb@gmail.com"},"repository":{"url":"git+https://github.com/ctrf-io/ctrf-cli.git","type":"git"},"_npmVersion":"10.2.3","description":"Various CTRF utilities available by command line","directories":{},"_nodeVersion":"20.10.0","dependencies":{"glob":"^11.0.1","yargs":"^17.7.2","typescript":"^5.4.5"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.12.7","@types/yargs":"^17.0.32"},"_npmOperationalInternal":{"tmp":"tmp/ctrf-cli_0.0.1_1753036554129_0.7732500919046905","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"ctrf-cli","version":"0.0.2","author":{"name":"Matthew Thomas"},"license":"MIT","_id":"ctrf-cli@0.0.2","maintainers":[{"name":"matthewthomasdev","email":"matthewthomasgb@gmail.com"}],"homepage":"https://ctrf.io","bugs":{"url":"https://github.com/ctrf-io/ctrf-cli/issues"},"bin":{"ctrf":"dist/cli.js"},"dist":{"shasum":"6a4232d46d4bca71922b7de1aab181153e0e5765","tarball":"https://registry.npmjs.org/ctrf-cli/-/ctrf-cli-0.0.2.tgz","fileCount":3,"integrity":"sha512-OOpxWdBohiThUqgy0IvpjBp6rrZwx2xuE8EIJzGcBPoO8jWNTGeCdN2Nytaa1BRAcEO3I8G6oDbG+AeOsiX+pA==","signatures":[{"sig":"MEUCIDc2d9OVyFhx1nQNsKX1xXlBx0lcocLrSHhh3IOB7p9mAiEAu8ES9oZoRnw3jJSpzkRWsH3ORqAYOxf9WDUss/6NqTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ctrf-cli@0.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5725},"main":"dist/index.js","gitHead":"8f880270923fe3b5b8497cea60471af904ad3aee","scripts":{"all":"npm run build","build":"tsc"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d9805df2-3483-4754-97b4-014d72fc1e19"}},"repository":{"url":"git+https://github.com/ctrf-io/ctrf-cli.git","type":"git"},"_npmVersion":"11.6.1","description":"Various CTRF utilities available from the command line","directories":{},"_nodeVersion":"24.10.0","dependencies":{"glob":"^11.0.1","yargs":"^17.7.2","typescript":"^5.4.5"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.4.5","@types/node":"^20.12.7","@types/yargs":"^17.0.32"},"_npmOperationalInternal":{"tmp":"tmp/ctrf-cli_0.0.2_1760728161809_0.42853813385979356","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"ctrf-cli","version":"0.0.3","author":{"name":"Matthew Thomas"},"license":"MIT","_id":"ctrf-cli@0.0.3","maintainers":[{"name":"matthewthomasdev","email":"matthewthomasgb@gmail.com"}],"homepage":"https://ctrf.io","bugs":{"url":"https://github.com/ctrf-io/ctrf-cli/issues"},"bin":{"ctrf":"dist/cli.js"},"dist":{"shasum":"f6618be8f834f942807c01af6ca951b9bf576daf","tarball":"https://registry.npmjs.org/ctrf-cli/-/ctrf-cli-0.0.3.tgz","fileCount":3,"integrity":"sha512-S0rhEY90EvQVW89kenBJDagQlC3Zfet0f5bcvUbZgvXoUMmI9dNwiLx7NmXXwlfyaIoK0HJS2FRH6/S3fdKyGw==","signatures":[{"sig":"MEQCIH9l802FJhLQsGigdWQc2euEKuZDopMdGaF4qFYX/ZRbAiBg9vuIbHmHNi05pWM/A9kU6jiHAzgFX+hzW71cpBmjQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ctrf-cli@0.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6807},"main":"dist/index.js","gitHead":"a699ec5bf67f8adf1844244d26cf19570081708f","scripts":{"all":"npm run lint && npm run format:check && npm run test && npm run build","lint":"eslint . --ext .ts --fix","test":"vitest run","build":"tsc","format":"prettier --write .","lint:check":"eslint . --ext .ts","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d9805df2-3483-4754-97b4-014d72fc1e19"}},"repository":{"url":"git+https://github.com/ctrf-io/ctrf-cli.git","type":"git"},"_npmVersion":"11.6.1","description":"Various CTRF utilities available from the command line","directories":{},"_nodeVersion":"24.11.0","dependencies":{"glob":"^11.0.1","yargs":"^17.7.2","typescript":"^5.4.5"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.32.0","vitest":"^3.2.4","prettier":"^3.5.3","@eslint/js":"^9.32.0","typescript":"^5.4.5","@types/node":"^20.12.7","@types/yargs":"^17.0.32","typescript-eslint":"^8.38.0","@vitest/coverage-v8":"^3.2.4","@d2t/vitest-ctrf-json-reporter":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ctrf-cli_0.0.3_1762008746044_0.7120725104112566","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"ctrf-cli","version":"0.0.4","author":{"name":"Matthew Thomas"},"license":"MIT","_id":"ctrf-cli@0.0.4","maintainers":[{"name":"matthewthomasdev","email":"matthewthomasgb@gmail.com"}],"homepage":"https://ctrf.io","bugs":{"url":"https://github.com/ctrf-io/ctrf-cli/issues"},"bin":{"ctrf-cli":"dist/cli.js"},"dist":{"shasum":"b98a39df438b1f7904be97abede09152d08853c7","tarball":"https://registry.npmjs.org/ctrf-cli/-/ctrf-cli-0.0.4.tgz","fileCount":15,"integrity":"sha512-MXwbD/QJpBFQOuhZcqr7blY4G6kh46KDnmaRt3IkYrXcEzDubdzHPOyLcDZICP+Uk/lUOq7og67wziZdrskKbQ==","signatures":[{"sig":"MEUCIAPkDv/va+o5GpzjCHC5Xq1htvPBysiUqE7YXuDZmdWcAiEA/eKxTTSqC69d53CJ/H27ew0EZlQxaHR+MXey2VuHQss=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ctrf-cli@0.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27332},"main":"dist/index.js","types":"./dist/index.d.ts","gitHead":"2a77b6301066ebcb94b13797f81d81f47b4b34a7","scripts":{"all":"npm run lint && npm run format:check && npm run test && npm run build","lint":"eslint . --ext .ts --fix","test":"vitest run","build":"tsc","format":"prettier --write .","lint:check":"eslint . --ext .ts","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:d9805df2-3483-4754-97b4-014d72fc1e19"}},"repository":{"url":"git+https://github.com/ctrf-io/ctrf-cli.git","type":"git"},"_npmVersion":"11.6.1","description":"Various CTRF utilities available from the command line","directories":{},"_nodeVersion":"24.11.0","dependencies":{"glob":"^11.0.1","yargs":"^17.7.2","typescript":"^5.4.5"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.32.0","vitest":"^3.2.4","prettier":"^3.5.3","@eslint/js":"^9.32.0","typescript":"^5.4.5","@types/node":"^20.12.7","@types/yargs":"^17.0.32","typescript-eslint":"^8.38.0","@vitest/coverage-v8":"^3.2.4","@d2t/vitest-ctrf-json-reporter":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ctrf-cli_0.0.4_1762017197941_0.9209754160769819","host":"s3://npm-registry-packages-npm-production"}},"0.0.5-next-1":{"name":"ctrf-cli","version":"0.0.5-next-1","author":{"name":"Matthew Thomas"},"license":"MIT","_id":"ctrf-cli@0.0.5-next-1","maintainers":[{"name":"ctrf-io","email":"m.poulton@live.co.uk"}],"homepage":"https://ctrf.io","bugs":{"url":"https://github.com/ctrf-io/ctrf-cli/issues"},"bin":{"ctrf":"dist/cli.js","ctrf-cli":"dist/cli.js"},"dist":{"shasum":"f7487eee717cede6d0a66be3d7a879662966eb65","tarball":"https://registry.npmjs.org/ctrf-cli/-/ctrf-cli-0.0.5-next-1.tgz","fileCount":37,"integrity":"sha512-tqmChqXTrqZpd0DETtSF1nux+toPAcMZiX1ICVAC4s4cx+vTRiWHsmEmHx/9w6MlLi+Sh1OuoVIRODdsTDuzvA==","signatures":[{"sig":"MEYCIQD5KDu/7SfLZxD9uOiTcKCyfQ8hXkOAsMw+Y5+hnyZwRQIhAKIHkn3ZYUC5vu+cAI9WmT8nwdOToaObtYKrQmHlsvts","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86077},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"ef7e5e7cfe938f1771f6138dc1510426a2e45eb0","scripts":{"all":"npm run lint && npm run format:check && npm run test:coverage && npm run build","lint":"eslint . --ext .ts --fix","test":"vitest run","build":"tsc","format":"prettier --write .","lint:check":"eslint . --ext .ts","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"ctrf-io","email":"m.poulton@live.co.uk"},"repository":{"url":"git+https://github.com/ctrf-io/ctrf-cli.git","type":"git"},"_npmVersion":"11.3.0","description":"Various CTRF utilities available from the command line","directories":{},"_nodeVersion":"24.2.0","dependencies":{"ctrf":"^0.0.18-next-1","glob":"^11.0.1","yargs":"^17.7.2","typescript":"^5.4.5"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"eslint":"^9.32.0","vitest":"^3.2.4","prettier":"^3.5.3","@eslint/js":"^9.32.0","typescript":"^5.4.5","@types/node":"^25.0.10","@types/yargs":"^17.0.32","typescript-eslint":"^8.38.0","@vitest/coverage-v8":"^3.2.4","@d2t/vitest-ctrf-json-reporter":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ctrf-cli_0.0.5-next-1_1769348379093_0.6731736830558437","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"ctrf-cli","version":"0.0.5","keywords":["test","testing","ctrf","reporter","report","json","standard","cli","command-line","test-results"],"author":{"name":"Matthew Poulton-White"},"license":"MIT","_id":"ctrf-cli@0.0.5","maintainers":[{"name":"ctrf-io","email":"m.poulton@live.co.uk"}],"homepage":"https://ctrf.io","bugs":{"url":"https://github.com/ctrf-io/ctrf-cli/issues"},"bin":{"ctrf":"dist/cli.js","ctrf-cli":"dist/cli.js"},"dist":{"shasum":"0f2f4d52d98486f33f78304aff2030db30762f83","tarball":"https://registry.npmjs.org/ctrf-cli/-/ctrf-cli-0.0.5.tgz","fileCount":37,"integrity":"sha512-p949wuP+XstdpV+z5DszoBYfew8zjUz7W0RMNFeXLPI23V7tsKAjT/aIbwnQIWVcQ6LAkBWfKBo0scjA1CJ7rg==","signatures":[{"sig":"MEQCIClcYO22+3Nrj78z0uYxOtwNQYKgGphJa5prbaAcd2TAAiAitu7yr9INMjOQUunc2Gmm910QrHu9J5hyvTE0GxRm0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86576},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","gitHead":"bb04eb34ce98dc61c258b906b728630ea9408ddb","scripts":{"all":"npm run lint && npm run format:check && npm run test:coverage && npm run build","lint":"eslint . --ext .ts --fix","test":"vitest run","build":"tsc","format":"prettier --write .","lint:check":"eslint . --ext .ts","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"ctrf-io","email":"m.poulton@live.co.uk"},"security":{"url":"https://github.com/ctrf-io/security/blob/main/SECURITY.md","email":"security@ctrf.io"},"repository":{"url":"git+https://github.com/ctrf-io/ctrf-cli.git","type":"git"},"_npmVersion":"11.3.0","description":"Various CTRF utilities available from the command line","directories":{},"_nodeVersion":"24.2.0","dependencies":{"ctrf":"^0.1.0","glob":"^13.0.1","yargs":"^17.7.2","typescript":"^5.4.5"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.32.0","vitest":"^4.0.18","prettier":"^3.5.3","@eslint/js":"^9.32.0","typescript":"^5.4.5","@types/node":"^25.0.10","@types/yargs":"^17.0.32","typescript-eslint":"^8.38.0","@vitest/coverage-v8":"^4.0.18","@d2t/vitest-ctrf-json-reporter":"^1.2.0"},"_npmOperationalInternal":{"tmp":"tmp/ctrf-cli_0.0.5_1770562550104_0.5307590394008412","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"ctrf-cli","version":"0.3.0","keywords":["test","testing","ctrf","reporter","report","json","standard","cli","command-line","test-results"],"author":{"name":"Matthew Poulton-White"},"license":"MIT","_id":"ctrf-cli@0.3.0","maintainers":[{"name":"ctrf-io","email":"m.poulton@live.co.uk"}],"homepage":"https://ctrf.io","bugs":{"url":"https://github.com/ctrf-io/ctrf-cli/issues"},"bin":{"ctrf":"dist/cli.js","ctrf-cli":"dist/cli.js"},"dist":{"shasum":"f62a416b7c97b90259ab68c2793d9826996aa1e1","tarball":"https://registry.npmjs.org/ctrf-cli/-/ctrf-cli-0.3.0.tgz","fileCount":37,"integrity":"sha512-dWB17KL3JLIM1RhpFCuG8HM+i5gGfVqgItLY+0dJj8P+Uu/KmBO50Sh7tRtMVUZ+BcxJxXgdTKeZGA1M4UWRMg==","signatures":[{"sig":"MEQCIGupoR5gHenNi5Sb45Pm2Gth3qA9f4DJRCHgGLoRZztHAiAPPAw8dMzOPaLUmCpjE+i/8nte33vsi2izPQjkSIoMIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ctrf-cli@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":87924},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.19.0"},"gitHead":"c05776a3474de2cd952cc054887303587000974f","scripts":{"all":"npm run lint && npm run format:check && npm run test:coverage && npm run build","lint":"biome lint --write . --unsafe","test":"vitest run","build":"tsc","check":"biome check .","format":"biome format --write .","lint:check":"biome lint .","format:check":"biome format .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"ctrf-io","email":"m.poulton@live.co.uk"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:2a6ab521-1655-4e03-b284-e80146236bb4"}},"security":{"url":"https://github.com/ctrf-io/security/blob/main/SECURITY.md","email":"security@ctrf.io"},"repository":{"url":"git+https://github.com/ctrf-io/ctrf-cli.git","type":"git"},"_npmVersion":"11.19.0","description":"Various CTRF utilities available from the command line","directories":{},"_nodeVersion":"26.7.0","dependencies":{"ctrf":"0.3.0","glob":"13.0.6","yargs":"18.1.0"},"publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"devDependencies":{"vitest":"4.1.10","typescript":"7.0.2","@types/node":"26.2.0","@types/yargs":"17.0.35","@biomejs/biome":"2.5.8","@vitest/coverage-v8":"4.1.10","@d2t/vitest-ctrf-json-reporter":"1.3.0"},"_npmOperationalInternal":{"tmp":"tmp/ctrf-cli_0.3.0_1786802863970_0.7802463756344922","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"_id":"ctrf-cli@0.3.1","bin":{"ctrf":"dist/cli.js","ctrf-cli":"dist/cli.js"},"bugs":{"url":"https://github.com/ctrf-io/ctrf-cli/issues"},"dist":{"shasum":"b7c095e7cfa5b72ed9ed865eb5dfbd970cef64d3","tarball":"https://registry.npmjs.org/ctrf-cli/-/ctrf-cli-0.3.1.tgz","integrity":"sha512-HsBdYsXRHimfvmn0Z9zFTvZ/Vt/asF+de2TOUOF2imyzuFhDK62PxDHV8EXAvYgXMFDcAF0Ob9k+mAuuSRm+1g==","fileCount":38,"unpackedSize":155227,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/ctrf-cli@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDZHRds6QAOIo4FyCAovBg/lEJ2qaRsKjn0Rk6LQjG5swIgSPjNomg6PlWF8D8MVnBTx5+YLGllzsILM+yP8oysqqc="}]},"main":"dist/index.js","name":"ctrf-cli","type":"module","types":"./dist/index.d.ts","author":{"name":"Matthew Poulton-White"},"engines":{"node":">=20.19.0"},"gitHead":"643f8f54e8eab9f7889f84123d2a3400c738bcb6","license":"MIT","scripts":{"all":"npm run lint && npm run format:check && npm run test:coverage && npm run build && npm run test:package","lint":"biome lint --write . --unsafe","test":"vitest run","build":"tsc && node scripts/bundle.mjs","check":"biome check .","format":"biome format --write .","lint:check":"biome lint .","format:check":"biome format .","test:package":"node scripts/package-smoke.mjs","test:coverage":"vitest run --coverage"},"version":"0.3.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:2a6ab521-1655-4e03-b284-e80146236bb4"},"approver":{"name":"ctrf-io","email":"m.poulton@live.co.uk"}},"homepage":"https://ctrf.io","keywords":["test","testing","ctrf","reporter","report","json","standard","cli","command-line","test-results"],"security":{"url":"https://github.com/ctrf-io/security/blob/main/SECURITY.md","email":"security@ctrf.io"},"repository":{"url":"git+https://github.com/ctrf-io/ctrf-cli.git","type":"git"},"_npmVersion":"11.19.0","description":"Various CTRF utilities available from the command line","directories":{},"maintainers":[{"name":"ctrf-io","email":"m.poulton@live.co.uk"}],"_nodeVersion":"26.7.0","dependencies":{"ajv":"8.20.0","yargs":"18.1.0","ajv-formats":"3.0.1"},"publishConfig":{"access":"public","provenance":true},"devDependencies":{"ctrf":"0.3.0","vitest":"4.1.10","esbuild":"0.28.2","typescript":"7.0.2","@types/node":"26.2.0","@types/yargs":"17.0.35","@biomejs/biome":"2.5.8","@vitest/coverage-v8":"4.1.10","@d2t/vitest-ctrf-json-reporter":"1.3.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ctrf-cli_0.3.1_1786806440234_0.3391476404629148"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-20T18:35:54.128Z","modified":"2026-08-15T15:07:20.627Z","0.0.1":"2025-07-20T18:35:54.331Z","0.0.2":"2025-10-17T19:09:21.994Z","0.0.3":"2025-11-01T14:52:26.256Z","0.0.4":"2025-11-01T17:13:18.173Z","0.0.5-next-1":"2026-01-25T13:39:39.291Z","0.0.5":"2026-02-08T14:55:50.259Z","0.3.0":"2026-08-15T14:07:44.065Z","0.3.1":"2026-08-15T15:07:20.332Z"},"bugs":{"url":"https://github.com/ctrf-io/ctrf-cli/issues"},"author":{"name":"Matthew Poulton-White"},"license":"MIT","homepage":"https://ctrf.io","keywords":["test","testing","ctrf","reporter","report","json","standard","cli","command-line","test-results"],"repository":{"url":"git+https://github.com/ctrf-io/ctrf-cli.git","type":"git"},"description":"Various CTRF utilities available from the command line","maintainers":[{"name":"ctrf-io","email":"m.poulton@live.co.uk"}],"readme":"# CTRF CLI Reference Implementation\n\nCommand line tooling for the [Common Test Report Format (CTRF)](https://github.com/ctrf-io/ctrf) specification.\n\n## CTRF Open Standard\n\nCTRF is a community-driven open standard for test reporting.\n\nBy standardizing test results, reports can be validated, merged, compared, and analyzed consistently across languages and frameworks.\n\n- **CTRF Specification**: https://github.com/ctrf-io/ctrf  \n  The official specification defining the format and semantics\n- **Discussions**: https://github.com/orgs/ctrf-io/discussions  \n  Community forum for questions, ideas, and support\n\n> [!NOTE]  \n> ⭐ Starring the **CTRF specification repository** (https://github.com/ctrf-io/ctrf)\n> helps support the standard.\n\n## Usage\n\n### Without Installation\n\nUse `npx` to run the CLI without installing:\n\n```bash\nnpx ctrf-cli@0.3.1 validate report.json\n```\n\n### Global Installation\n\nOr install globally for repeated use:\n\n```bash [npm]\nnpm install -g ctrf-cli@0.3.1\n```\n\nAfter global installation, use the `ctrf` command:\n\n```bash\nctrf validate report.json\n```\n\n## Commands\n\n| Command | Purpose |\n|---------|---------|\n| `merge` | Merge multiple CTRF reports into a single report |\n| `validate` | Validate a CTRF report against the JSON schema |\n| `validate-strict` | Strict validation with additionalProperties enforcement |\n| `filter` | Filter tests from a CTRF report based on criteria |\n| `generate-test-ids` | Generate deterministic UUIDs for all tests |\n| `generate-report-id` | Generate a unique UUID v4 identifier for report |\n| `add-insights` | Analyze trends and add insights across multiple reports |\n| `flaky` | Identify and output flaky tests |\n\n## Exit Codes\n\n- `0`: Command completed successfully\n- `1`: General error\n- `2`: Validation failed\n- `3`: File or directory not found\n- `4`: Invalid CTRF report\n- `5`: No CTRF reports found in directory\n\n## merge\n\nCombines multiple CTRF reports into a single unified report. **Writes to file.**\n\n**Syntax:**\n\n```sh\nctrf merge <directory> [--output <path>] [--keep-reports]\n```\n\n**Parameters:**\n\n- `directory`: Path to directory containing CTRF reports (required)\n- `--output, -o`: Output file path (default: ctrf-report.json)\n- `--keep-reports, -k`: Preserve original reports after merging\n\n**Example:**\n\n```sh\nctrf merge ./reports --output ./merged.json\n```\n\n## validate\n\nValidates CTRF report conformance to the JSON Schema specification. **Outputs to stdout.**\n\n**Syntax:**\n\n```sh\nctrf validate <file-path>\nctrf validate-strict <file-path>\n```\n\n**Parameters:**\n\n- `file-path`: Path to CTRF report file (required)\n\n**Modes:**\n\n- `validate`: Standard validation allowing additional properties\n- `validate-strict`: Strict validation enforcing additionalProperties: false\n\n**Example:**\n\n```sh\nctrf validate report.json\nctrf validate-strict report.json\n```\n\n## filter\n\nExtracts a subset of tests from a CTRF report based on specified criteria. **Outputs to stdout or file.**\n\n**Syntax:**\n\n```sh\nctrf filter <file-path> [options]\n```\n\n**Parameters:**\n\n- `file-path`: Path to CTRF report (use `-` for stdin) (required)\n- `--id <uuid>`: Filter by test ID\n- `--name <string>`: Filter by test name (exact match)\n- `--status <statuses>`: Filter by status (comma-separated: passed,failed,skipped,pending,other)\n- `--tags <tags>`: Filter by tags (comma-separated)\n- `--suite <string>`: Filter by suite name (exact match)\n- `--type <string>`: Filter by test type\n- `--browser <string>`: Filter by browser\n- `--device <string>`: Filter by device\n- `--flaky`: Filter to flaky tests only\n- `--output, -o`: Output file path (optional; defaults to stdout)\n\n**Examples:**\n\n```sh\n# Filter failed tests to stdout\nctrf filter report.json --status failed\n\n# Filter by multiple criteria and save to file\nctrf filter report.json --status failed,skipped --tags critical --output filtered.json\n\n# Filter flaky tests and save\nctrf filter report.json --flaky --output flaky-report.json\n\n# Read from stdin\ncat report.json | ctrf filter - --status failed\n```\n\n## generate-test-ids\n\nGenerates deterministic UUID v5 identifiers for all tests in a report. **Outputs to stdout or file.**\n\n**Syntax:**\n\n```sh\nctrf generate-test-ids <file-path> [--output <path>]\n```\n\n**Parameters:**\n\n- `file-path`: Path to CTRF report (use `-` for stdin) (required)\n- `--output, -o`: Output file path (optional; defaults to stdout)\n\n**Example:**\n\n```sh\n# Output to stdout\nctrf generate-test-ids report.json\n\n# Save to file\nctrf generate-test-ids report.json --output report-with-ids.json\n```\n\n## generate-report-id\n\nGenerates a unique UUID v4 identifier for a CTRF report. **Outputs to stdout or file.**\n\n**Syntax:**\n\n```sh\nctrf generate-report-id <file-path> [--output <path>]\n```\n\n**Parameters:**\n\n- `file-path`: Path to CTRF report (required)\n- `--output, -o`: Output file path (optional; defaults to stdout)\n\n**Example:**\n\n```sh\n# Output to stdout\nctrf generate-report-id report.json\n\n# Save to file\nctrf generate-report-id report.json --output report-with-id.json\n```\n\n## add-insights\n\nAnalyzes historical test reports and adds insights metrics to the current report. **Writes to file (or stdout for piping).**\n\nReads all CTRF reports in the historical reports directory and calculates trends, patterns, and metrics. Writes the enhanced current report with insights appended.\n\n**Syntax:**\n\n```sh\nctrf add-insights <current-report> <historical-reports> [--output <path>]\n```\n\n**Parameters:**\n\n- `current-report`: Path to the CTRF report file to enhance (required)\n- `historical-reports`: Path to directory containing historical CTRF reports for analysis (required)\n- `--output, -o`: Output file path for the report with insights (optional; defaults to stdout)\n\n**Example:**\n\n```sh\n# Analyze historical reports and enhance current report\nctrf add-insights ./report.json ./historical-reports --output ./report-with-insights.json\n\n# Output enhanced report to stdout for piping\nctrf add-insights ./report.json ./historical-reports | jq .\n```\n\n## flaky\n\nIdentifies and reports tests marked as flaky in a CTRF report. **Outputs to stdout.**\n\n**Syntax:**\n\n```sh\nctrf flaky <file-path>\n```\n\n**Parameters:**\n\n- `file-path`: Path to CTRF report file (required)\n\n**Example:**\n\n```sh\nctrf flaky reports/sample-report.json\n```\n\n**Output:**\n\n```bash\nProcessing report: reports/sample-report.json\nFound 1 flaky test(s) in reports/sample-report.json:\n- Test Name: Test 1, Retries: 2\n```\n","readmeFilename":"README.md"}