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-1/

{
  "context": "Tests whether the agent writes PATCH and query-parameter tests following the skill's recommended patterns: creating a resource before patching it, verifying the updated value, rejecting invalid values, and verifying all filtered results match the filter.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "PATCH creates resource first",
      "description": "The PATCH success test first creates an order via POST (or equivalent setup), then uses the created resource's ID in the PATCH request — does NOT hardcode an assumed ID like 1 or use an ID that may not exist",
      "max_score": 20
    },
    {
      "name": "PATCH verifies updated value",
      "description": "The PATCH success test checks that the response body contains the updated status value (e.g. res.body.data.status equals the value sent)",
      "max_score": 15
    },
    {
      "name": "PATCH rejects invalid status",
      "description": "A test sends a PATCH request with an invalid status value (e.g. 'flying', 'unknown') and asserts the response status is 400",
      "max_score": 15
    },
    {
      "name": "query filter test exists",
      "description": "A test makes a GET request to /api/orders with a status query parameter (e.g. ?status=received or ?status=preparing)",
      "max_score": 15
    },
    {
      "name": "query filter verifies all results",
      "description": "The query parameter test iterates over all items in the response array (e.g. using a for loop or forEach) and checks that each item's status matches the filter value",
      "max_score": 20
    },
    {
      "name": "supertest used",
      "description": "New tests use request(app) from supertest for HTTP calls (not direct function calls or other HTTP libraries)",
      "max_score": 15
    }
  ]
}

evals

scenario-1

criteria.json

task.md

tile.json