plugins/claude-code-expert/skills-old/testing-workflows/SKILL.md
# Claude Code Testing Workflows Complete guide to testing patterns, TDD, and test execution within Claude Code. ## Test Execution ### Running Tests ```bash # Common test commands npm test pnpm test yarn test bun test pytest go test ./... cargo test # Single test file npm test -- path/to/test.ts pytest path/to/test.py # Pattern matching npm test -- --grep "authentication" pytest -k "test_auth" # Watch mode npm test -- --watch pytest --watch ``` ### Claude's Testing Protocol 1. **Before co
npx skillsauth add markus41/claude plugins/claude-code-expert/skills-old/testing-workflowsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Complete guide to testing patterns, TDD, and test execution within Claude Code.
# Common test commands
npm test
pnpm test
yarn test
bun test
pytest
go test ./...
cargo test
# Single test file
npm test -- path/to/test.ts
pytest path/to/test.py
# Pattern matching
npm test -- --grep "authentication"
pytest -k "test_auth"
# Watch mode
npm test -- --watch
pytest --watch
// auth.test.ts
describe('authenticateUser', () => {
it('should return user for valid credentials', async () => {
const result = await authenticateUser('[email protected]', 'password123');
expect(result).toMatchObject({
id: expect.any(String),
email: '[email protected]',
});
});
it('should throw for invalid credentials', async () => {
await expect(
authenticateUser('[email protected]', 'wrong')
).rejects.toThrow('Invalid credentials');
});
});
npm test -- auth.test.ts
# FAIL: authenticateUser is not defined
// auth.ts
export async function authenticateUser(email: string, password: string) {
const user = await db.user.findUnique({ where: { email } });
if (!user || !await bcrypt.compare(password, user.passwordHash)) {
throw new Error('Invalid credentials');
}
return { id: user.id, email: user.email };
}
npm test -- auth.test.ts
# PASS
Claude Code has a specialized test-writing agent:
Agent(
subagent_type="test-writer",
prompt="Write comprehensive tests for the authentication module in src/auth/",
description="Write auth tests"
)
The test-writer agent:
// Test individual functions in isolation
describe('calculateTotal', () => {
it('sums items correctly', () => {
expect(calculateTotal([10, 20, 30])).toBe(60);
});
it('handles empty array', () => {
expect(calculateTotal([])).toBe(0);
});
it('handles negative values', () => {
expect(calculateTotal([10, -5])).toBe(5);
});
});
// Test multiple components together
describe('POST /api/auth/login', () => {
it('returns JWT for valid login', async () => {
const res = await request(app)
.post('/api/auth/login')
.send({ email: '[email protected]', password: 'pass123' });
expect(res.status).toBe(200);
expect(res.body.token).toBeDefined();
});
});
// Test full user flows
describe('User Registration Flow', () => {
it('allows user to register and login', async () => {
// Register
await page.goto('/register');
await page.fill('#email', '[email protected]');
await page.fill('#password', 'secure123');
await page.click('button[type="submit"]');
// Verify redirect to dashboard
await expect(page).toHaveURL('/dashboard');
});
});
| Framework | Command | Config |
|-----------|---------|--------|
| Jest | npx jest | jest.config.js |
| Vitest | npx vitest | vitest.config.ts |
| Mocha | npx mocha | .mocharc.yml |
| Playwright | npx playwright test | playwright.config.ts |
| Cypress | npx cypress run | cypress.config.js |
| Framework | Command | Config |
|-----------|---------|--------|
| pytest | pytest | pytest.ini / pyproject.toml |
| unittest | python -m unittest | N/A |
| Language | Framework | Command |
|----------|-----------|---------|
| Go | testing | go test ./... |
| Rust | built-in | cargo test |
| Java | JUnit | mvn test / gradle test |
it('should return 404 for non-existent user') not it('test 1')# JavaScript/TypeScript
npx jest --coverage
npx vitest --coverage
npx c8 npm test
# Python
pytest --cov=src --cov-report=html
# Go
go test -coverprofile=coverage.out ./...
Claude's approach to test failures:
development
Enhanced plan-authoring skill with Pre-Writing context gathering, task metadata, non-TDD templates, Red Flags, telemetry, and an automated plan linter. Use when you have a spec or requirements for a multi-step task, before touching code.
tools
Documentation intelligence engine with graph-based API docs, algorithm library, and drift detection
tools
Ultraplan cloud planning — kick off a plan in the cloud from your terminal, review and revise in the browser, then execute remotely or send back to CLI
tools
--- name: mcp description: Configure MCP servers for Claude Code — stdio vs HTTP, authentication, Tools/Resources/Prompts distinction, channels (CI webhook, mobile relay, Discord bridge, fakechat), and cost of always-loaded tools. Use this skill whenever adding an MCP server, debugging connection issues, choosing between MCP Tools vs Prompts vs Resources, installing channel servers, or managing .mcp.json. Triggers on: "MCP server", "mcp config", "add Obsidian MCP", "install context7", "channels"