CodeVetter · Repo Unpack · Testing signals
koajs/koa
Tests and CI were inspected, not executed; test existence is not a passing result. The inspected suites combine Node's test runner, strict assertions, Supertest requests, and synthetic HTTP wrappers. This is a bounded inventory, with explicit limits around mocked integrations and the declared CI matrix.
- The test script uses node --test and coverage uses c8 with lcov/text-summary; application suites import node:test, Supertest, and node:assert/strict rather than relying on the test config's Jest label.
- Application composition tests assert downstream/upstream order and a configurable composer; currentContext tests check concurrent requests, timer/immediate boundaries, disabled mode, and error-event context.
- Response integration tests assert HEAD suppression with preserved JSON/string/buffer lengths, Blob length, ReadableStream chunks, and Response status/header/body forwarding.
- Response-body unit tests exercise custom stream detection, deferred pipeline error ownership, stream-to-stream preservation, stream-to-null destruction, and errors from a replaced stream.
- Cookie and error suites assert missing signing-key errors, .sig output, proxy-derived secure cookies, outgoing-header clearing, err.headers replacement, and errors after headers were flushed.
- Query tests cover repeated keys and unsupported nested-object serialization; back tests cover external and scheme-relative referrers; ESM tests compare default identity and exported property names.
- Integration limits are visible: snapshot tests replace v8.startupSnapshot, HTTP/2 host tests use synthetic request fields, and tests labeled 'from fetch()' locally construct Response objects rather than performing fetch.
- CI declares npm ci, lint, coverage, and Codecov on Node 22/24/26; Node 18/20 are outside this matrix despite the >=18 engine range, and the publish workflow has no explicit lint/test step.