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

{
  "context": "Tests whether the agent sets up a complete testing foundation including all three required npm scripts, correct vitest configuration, proper app export pattern, and database isolation — as required for a team-ready setup.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "test:coverage script",
      "description": "package.json scripts includes 'test:coverage' with value 'vitest run --coverage'",
      "max_score": 12
    },
    {
      "name": "test:watch script",
      "description": "package.json scripts includes 'test:watch' with value 'vitest'",
      "max_score": 10
    },
    {
      "name": "test script",
      "description": "package.json scripts includes 'test' with value 'vitest run'",
      "max_score": 8
    },
    {
      "name": "vitest installed",
      "description": "package.json devDependencies includes 'vitest'",
      "max_score": 5
    },
    {
      "name": "supertest installed",
      "description": "package.json devDependencies includes 'supertest' and '@types/supertest'",
      "max_score": 5
    },
    {
      "name": "vitest globals enabled",
      "description": "vitest.config.ts sets globals: true in the test config",
      "max_score": 5
    },
    {
      "name": "vitest node environment",
      "description": "vitest.config.ts sets environment: 'node' in the test config",
      "max_score": 5
    },
    {
      "name": "conditional listen",
      "description": "src/server.ts only calls app.listen() when NOT in test mode (guards with NODE_ENV check or equivalent) — does NOT call listen unconditionally",
      "max_score": 10
    },
    {
      "name": "app exported",
      "description": "src/server.ts exports the app (e.g. 'export const app' or default export)",
      "max_score": 5
    },
    {
      "name": "in-memory SQLite",
      "description": "src/db.ts uses ':memory:' as the SQLite path when NODE_ENV === 'test'",
      "max_score": 8
    },
    {
      "name": "no database mock",
      "description": "Test file does NOT use vi.mock or jest.mock to stub the database module",
      "max_score": 8
    },
    {
      "name": "beforeEach reset",
      "description": "Test file includes a beforeEach hook that resets or clears database state between tests",
      "max_score": 7
    },
    {
      "name": "supertest usage",
      "description": "Tests use request(app) from supertest for HTTP calls",
      "max_score": 7
    },
    {
      "name": "5 or fewer tests",
      "description": "Test file contains 5 or fewer it() / test() blocks",
      "max_score": 5
    }
  ]
}

evals

tile.json