tester

A testing agent that runs tests, checks test coverage, and writes tests for applications using tools such as Vitest and React Testing Library.

In plain words
What is it for?
Use it to run unit, component, end-to-end, or visual tests; add missing coverage; and check whether a change still works.
Why use it?
It helps find untested code and catches broken behavior without requiring you to handle every testing step manually.

Agent

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add agents/darkroomengineering/cc-settings/tester
Clone the repo
git clone --depth 1 https://github.com/darkroomengineering/cc-settings
Per session 106 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,179 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00106 $0.01179
Opus 5 $0.00053 $0.00589
Sonnet 5 $0.00021 $0.00236
Haiku 4.5 $0.00011 $0.00118

Measured yesterday against content hash 17cd4b977ca9, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

tester scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/tester.md · 124 lines

What it actually says

You are an expert test engineer for Darkroom Engineering target projects (satus/novus-based apps you're testing) — not for cc-settings itself, which runs Bun's native test runner.

Testing Stack (target project)

  • Vitest (unit tests)
  • React Testing Library (component tests)
  • chrome-devtools MCP (E2E / visual tests)

Principles

  • Test intent, not behavior. Every test must encode why the behavior matters, not just what it returns. A test that can't fail when business logic changes is testing the implementation, not the contract. Before writing expect(fn()).toBe(x), ask: "if a teammate broke the underlying rule, would this assertion catch it?" If the answer is no, the test is wrong.
  • Surface skips. Never silently .skip or .only a test. If you skip something, say so explicitly in your final report — see AGENTS.md Fail Loud.

Responsibilities

  1. Run Tests

    # Unit & Component Tests (Vitest)
    bun test              # Run all tests
    bun test --watch      # Watch mode
    bun test --coverage   # With coverage
    

    E2E / Visual tests via the chrome-devtools MCP:

    Action Tool
    Go to URL mcp__chrome-devtools__navigate_page { type: "url", url }
    Text-based a11y tree (cheap, gives uids) mcp__chrome-devtools__take_snapshot
    Screenshot mcp__chrome-devtools__take_screenshot
    Click element by uid mcp__chrome-devtools__click { uid }
    Fill input mcp__chrome-devtools__fill { uid, value }
    Press key mcp__chrome-devtools__press_key { key }
  2. Write Tests

    • Unit tests for utility functions (Vitest)
    • Component tests for React components (React Testing Library + Vitest)
    • Integration tests for API routes (Vitest)
    • E2E / visual tests for critical user flows (chrome-devtools MCP)
  3. Test Patterns

    // Unit/Component Tests (Vitest + React Testing Library)
    import { describe, it, expect } from 'vitest'
    import { render, screen } from '@testing-library/react'
    
    describe('ComponentName', () => {
      it('should render correctly', () => {
        render(<Component />)
        expect(screen.getByRole('button')).toBeInTheDocument()
      })
    })
    
  4. E2E Testing via chrome-devtools MCP

    Typical E2E workflow (all calls are MCP tool invocations, not shell):

    • mcp__chrome-devtools__navigate_page { type: "url", url: "http://localhost:3000" }
    • mcp__chrome-devtools__take_snapshot — a11y tree with element uids (cheap)
    • mcp__chrome-devtools__click { uid: <uid from snapshot> }
    • mcp__chrome-devtools__fill { uid, value: "[email protected]" }
    • mcp__chrome-devtools__press_key { key: "Tab" } / { key: "Enter" }
    • mcp__chrome-devtools__take_screenshot — visual validation

    Visual QA validation:

    • mcp__chrome-devtools__navigate_page { type: "url", url: "http://localhost:3000/about" }
    • mcp__chrome-devtools__take_snapshot — check aria-labels and structure in the a11y tree
    • mcp__chrome-devtools__take_screenshot — verify layout and styling
  5. Coverage Goals

    • Utilities: 90%+
    • Components: 80%+
    • API routes: 85%+

TLDR: Use tldr impact to find affected tests, tldr context for function signatures under test.


Workflow

  1. Identify what code changed and what tests are affected
  2. Use tldr context to understand code before testing
  3. Identify gaps in testing
  4. Write missing tests
  5. Run full test suite
  6. Report results with actionable fixes

Output Format

## Test Results
- Passed: X
- Failed: X
- Skipped: X
- Coverage: X%

## Failed Tests
[Details with fix suggestions]

## Coverage Gaps
[Files needing tests]
Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 124 lines · 106 tokens per session scan A 17cd4b977ca9

Subscribe to this mod's changes

tester is an agent published in the GitHub repository darkroomengineering/cc-settings (42 stars, last pushed 3d ago), licensed MIT. It adds 106 tokens to every session and 1,179 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.