{"ref":"artifact:cap-js-cds-test","page":"/artifacts/cap-js-cds-test","json":"/artifacts/cap-js-cds-test.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"cap-js-cds-test","name":"@cap-js/cds-test","artifact_type":"package","ecosystem":"cap","flavors":[{"key":"node","source":{"url":"https://github.com/cap-js/cds-test","title":"cap-js/cds-test — repository","checked":"2026-10-02","quote":"Test Support for CAP Node.js"}}],"domain":"developer-experience","origin_ring":"sap-official","description":{"one_line":"Test support for CAP Node.js, installed as a dev dependency: it starts the project's server for the test, hands the test an HTTP client bound to it, and carries the assertions.","short":"Test support for CAP Node.js: server start, HTTP client, assertions","what_it_solves":"The code that starts a CAP server for a test, points an HTTP client at it and carries the assertions used to ship inside [@sap/cds](artifact:sap-cds). It is this package now, added as a dev dependency and reached from a test file through `cds.test()`, which launches the project under test and returns helpers already bound to its URL and port. It covers the service boundary, so a handler and a query can be asserted in the same test without a deployed system. It picks no test runner: capire names Vitest, Jest, Mocha and Node's own runner, and a project keeps whichever it has. Driving a UI, and anything needing a real BTP binding, stays outside it."},"links":{"npm":"https://www.npmjs.com/package/@cap-js/cds-test","repo":"https://github.com/cap-js/cds-test","docs":"https://cap.cloud.sap/docs/node.js/cds-test"},"identity":{"author":"SAP SE (https://www.sap.com)","license":"Apache-2.0"},"compat":{"runtimes":["node"],"cds_range":">=9.8"},"type_properties":{"distribution":{"value":["npm"],"sources":[{"url":"https://github.com/cap-js/cds-test","title":"@cap-js/cds-test — README","checked":"2026-10-18","quote":"npm add -D @cap-js/cds-test"}]}},"provides":[{"capability":"capability:testing","what_it_does":"cds.test() launches the CAP project under test and returns helpers bound to it, the GET, POST and PUT shortcuts against its URL and port and the expect() assertions, so a test asserts against a running service rather than against a deployed one. Added as a dev dependency; capire names Vitest, Jest, Mocha and Node's own runner as the runners it runs under.","sources":[{"url":"https://cap.cloud.sap/docs/node.js/cds-test","title":"Testing with cds.test — capire","checked":"2026-10-02","quote":"CAP's testing utility for writing and running tests against CAP services."},{"url":"https://cap.cloud.sap/docs/node.js/cds-test","title":"Testing with cds.test — capire","checked":"2026-10-02","quote":"Add `@cap-js/cds-test` as a dev dependency to your project:"},{"url":"https://cap.cloud.sap/docs/releases/2025/feb25","title":"CAP release notes, February 2025 — test support moves to its own package","checked":"2026-09-08","quote":"The test support for CAP Node.js applications moves to its own package @cap-js/cds-test."}]}],"provenance":{"discovered_via":[{"source":"source:npm"},{"source":"source:github","channel":"cap-js"}],"first_seen":"2026-09-08"},"maintainers":["actor:cap-js"],"drafted_with_ai":true,"contributors":["actor:bobdenos","actor:chgeo","actor:cschuerings","actor:danjoa","actor:johannes-vogel","actor:mauriciolauffer","actor:patricebender","actor:pdt42","actor:sjvans","actor:stefanrudi"],"changed_in":[{"version":"1.0.0","date":"2026-04-23","what_changed":"`cds.test` sends its requests with the Fetch API and no longer depends on axios, which a project installs itself if it still wants it. `cds.test.axios.defaults` is deprecated in favour of `cds.test.defaults`, and Vitest is supported as a runner.","invalidates":"Test setups that rely on axios arriving with cds-test, or that set `cds.test.axios.defaults`.","source":{"url":"https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md#100---2026-04-23","title":"cap-js/cds-test changelog, 1.0.0","checked":"2026-10-19","quote":"Dependencies to `axios` -> install it yourself if you want to use `axios`."}}]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"good","evidence":"3 months since release"},{"label":"Continuity","tier":"good","evidence":"11 contributors, 3 publishers, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-10, not archived"}],"compatibility":[{"label":"Declared for","tier":"good","evidence":">=9.8 — includes cds 10 and 9"},{"label":"Survived majors","tier":"good","evidence":"released before and after @sap/cds 10"},{"label":"Maintainer's CI","tier":"good","evidence":"CI green, 2026-10-13"}],"practice":[{"label":"Tests","tier":"good","evidence":"16 test files, npm test"},{"label":"Docs","tier":"good","evidence":"docs site, README 2 KB"},{"label":"Changelog","tier":"good","evidence":"CHANGELOG in the repo"}],"reach":[{"value":18292,"unit":"installs/week","note":"Installs far exceed the number of people watching it — usually a sign it arrives as somebody else's dependency rather than by choice."},{"value":6,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-24","latest_version":"1.0.2","majors":{"1":{"version":"1.0.0","date":"2026-04-23"},"0.1":{"version":"0.1.0","date":"2025-02-21"},"0.2":{"version":"0.2.0","date":"2025-03-04"},"0.3":{"version":"0.3.0","date":"2025-04-03"},"0.4":{"version":"0.4.0","date":"2025-06-24"}},"license":"Apache-2.0","first_release":"2025-02-21","last_release":"2026-08-04","releases":10,"cadence_days":30,"maintainers":3,"repository":"git+https://github.com/cap-js/cds-test.git","repository_directory":null,"peer_cds":">=9.8","dependencies":0,"node_engine":">=22","test_script":true,"types":false,"downloads_weekly":18292,"downloads_monthly":100046,"stars":6,"forks":5,"open_issues":13,"archived":false,"pushed_at":"2026-10-19","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","created_at":"2025-02-19T07:43:54Z","open_prs":8,"tree_truncated":false,"test_files":16,"workflows":2,"other_ci":false,"readme_bytes":2432,"docs_files":0,"changelog":true,"license_file":true,"dts_files":0,"first_commit":"2024-02-07","last_commit":"2026-10-13","commits":125,"contributors":11,"ci_status":"success","ci_run_at":"2026-10-13","ci_workflow":"CI","ci_event":"push","readme_path":"README.md","readme_sha":"07c6001a098ad89c8f788c49b4b6d9655a598b4d","months_since_release":3,"dormant":false,"repo_read":"2026-10-24"},"release_notes":{"license":"Apache-2.0","quotable":true,"source":{"kind":"repo","path":"CHANGELOG.md","ref":"main","url":"https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md"},"format":"keep-a-changelog","releases":[{"version":"1.0.2","date":"2026-08-04","date_source":"heading","heading":"[1.0.2] - 2026-08-04","url":"https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md#102---2026-08-04","sections":[{"kind":"fix","heading":"Fixed","items":3}],"hash":"52df382eb4422bc4"},{"version":"1.0.1","date":"2026-04-29","date_source":"heading","heading":"[1.0.1] - 2026-04-29","url":"https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md#101---2026-04-29","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"ee82dac01b3163fa"},{"version":"1.0.0","date":"2026-04-23","date_source":"heading","heading":"[1.0.0] - 2026-04-23","url":"https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md#100---2026-04-23","sections":[{"kind":"change","heading":"Changed","items":3},{"kind":"removal","heading":"Removed","items":1},{"kind":"feature","heading":"Added","items":3},{"kind":"fix","heading":"Fixed","items":2}],"hash":"f03311709a0a5277","cited_by":[{"version":"1.0.0","date":"2026-04-23"}]},{"version":"0.4.1","date":"2025-11-10","date_source":"heading","heading":"[0.4.1] - 2025-11-10","url":"https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md#041---2025-11-10","sections":[{"kind":"fix","heading":"Fixed","items":2},{"kind":"fix","heading":"Fixed","items":0}],"hash":"bffc5b0159856201"},{"version":"0.4.0","date":"2025-06-24","date_source":"heading","heading":"[0.4.0] - 2025-06-24","url":"https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md#040---2025-06-24","sections":[{"kind":"feature","heading":"Added","items":2}],"hash":"50339496dce2b106"},{"version":"0.3.0","date":"2025-04-03","date_source":"heading","heading":"[0.3.0] - 2025-04-03","url":"https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md#030---2025-04-03","sections":[{"kind":"feature","heading":"Added","items":1},{"kind":"change","heading":"Changed","items":1},{"kind":"fix","heading":"Fixed","items":1}],"hash":"80d253430769397f"},{"version":"0.2.0","date":"2025-03-04","date_source":"heading","heading":"[0.2.0] - 2025-03-04","url":"https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md#020---2025-03-04","sections":[{"kind":"change","heading":"Changed","items":1}],"hash":"8f3bc9656a833311"},{"version":"0.1.2","date":"2025-02-21","date_source":"heading","heading":"[0.1.2] - 2025-02-21","url":"https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md#012---2025-02-21","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"cd128d500875e980"},{"version":"0.1.1","date":"2025-02-21","date_source":"heading","heading":"[0.1.1] - 2025-02-21","url":"https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md#011---2025-02-21","sections":[{"kind":"fix","heading":"Fixed","items":1}],"hash":"fbad7485960d904f"},{"version":"0.1.0","date":"2025-02-21","date_source":"heading","heading":"[0.1.0] - 2025-02-21","url":"https://github.com/cap-js/cds-test/blob/main/CHANGELOG.md#010---2025-02-21","sections":[{"kind":"feature","heading":"Added","items":1}],"hash":"d5cc783b6156d88d"}],"versions":[{"version":"1.0.2","date":"2026-08-04"},{"version":"1.0.1","date":"2026-04-29"},{"version":"1.0.0","date":"2026-04-23"},{"version":"0.4.1","date":"2025-11-10"},{"version":"0.4.0","date":"2025-06-24"},{"version":"0.3.0","date":"2025-04-03"},{"version":"0.2.0","date":"2025-03-04"},{"version":"0.1.2","date":"2025-02-21"},{"version":"0.1.1","date":"2025-02-21"},{"version":"0.1.0","date":"2025-02-21"}],"crawled_at":"2026-10-25"},"edges":{"maintainers":[{"ref":"actor:cap-js","name":"SAP Cloud Application Programming Model","json":"/actors/cap-js.json"}],"contributors":[{"ref":"actor:bobdenos","name":"Bob den Os","json":"/actors/bobdenos.json"},{"ref":"actor:chgeo","name":"Christian Georgi","json":"/actors/chgeo.json"},{"ref":"actor:cschuerings","name":"Christian Schürings","json":"/actors/cschuerings.json"},{"ref":"actor:danjoa","name":"Daniel Hutzel","json":"/actors/danjoa.json"},{"ref":"actor:johannes-vogel","name":"Johannes Vogel","json":"/actors/johannes-vogel.json"},{"ref":"actor:mauriciolauffer","name":"Mauricio Lauffer","json":"/actors/mauriciolauffer.json"},{"ref":"actor:patricebender","name":"Patrice Bender","json":"/actors/patricebender.json"},{"ref":"actor:pdt42","name":"Paul","json":"/actors/pdt42.json"},{"ref":"actor:sjvans","name":"sjvans","json":"/actors/sjvans.json"},{"ref":"actor:stefanrudi","name":"Stefan Rudi","json":"/actors/stefanrudi.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}