CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl-labs/api-testing-first-steps

Get test coverage on an Express/Node API fast — the first 5 tests that catch

94

1.26x
Quality

90%

Does it follow best practices?

Impact

100%

1.26x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-2/

{
  "context": "Tests whether the agent writes error format consistency tests following the skill's pattern: checking that multiple distinct error conditions (validation failure and 404) all return responses with the same shape, specifically an error object with a message string.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "tests multiple error types",
      "description": "The test file (or a single test within it) exercises at least two different error conditions — at minimum one 400 (validation) response and one 404 (not found) response",
      "max_score": 20
    },
    {
      "name": "error.message checked",
      "description": "Tests assert that the response body contains an 'error' object with a 'message' property that is a string (e.g. expect(res.body.error.message).toBeDefined() and/or typeof check)",
      "max_score": 25
    },
    {
      "name": "consistent shape assertion",
      "description": "Both error types are checked for the SAME shape (the test doesn't allow different structures for different error types — both must have error.message)",
      "max_score": 20
    },
    {
      "name": "supertest usage",
      "description": "Tests use request(app) from supertest to make HTTP requests to the API",
      "max_score": 10
    },
    {
      "name": "error-format-spec created",
      "description": "A separate documentation file (error-format-spec.md or similar) describes the expected error response shape",
      "max_score": 10
    },
    {
      "name": "no Express internals tested",
      "description": "Tests do NOT assert that responses are JSON (e.g. no check that res.type === 'application/json' or that res.headers['content-type'] contains 'json') — focuses on the body shape only",
      "max_score": 15
    }
  ]
}

evals

tile.json