home / skills / fortiumpartners / ai-mesh / jest-test

jest-test skill

/skills/jest-test

This skill generates and runs Jest tests for JavaScript and TypeScript projects, streamlining unit, integration, and E2E testing.

npx playbooks add skill fortiumpartners/ai-mesh --skill jest-test

Review the files below or copy the command above to add this skill to your agents.

Files (6)
SKILL.md
4.6 KB
---
name: Jest Test Framework
description: Execute and generate Jest tests for JavaScript/TypeScript projects with support for unit, integration, and E2E testing
version: 1.0.0
---

# Jest Test Framework

## Purpose

Provide comprehensive Jest test execution and generation capabilities for JavaScript and TypeScript projects, supporting:
- Test file generation from bug reports
- Test execution with detailed output parsing
- Unit, integration, and E2E test patterns
- TypeScript and modern JavaScript syntax

## Usage

### Generate Test File

Create a test file from a bug report or feature description:

```bash
node generate-test.js \
  --source src/components/Button.js \
  --output tests/components/Button.test.js \
  --type unit \
  --description "Button component fails to handle click events"
```

### Execute Tests

Run Jest tests and return structured results:

```bash
node run-test.js \
  --file tests/components/Button.test.js \
  --config jest.config.js
```

## Command Line Options

### generate-test.js

- `--source <path>` - Source file to test (required)
- `--output <path>` - Output test file path (required)
- `--type <unit|integration|e2e>` - Test type (default: unit)
- `--description <text>` - Bug description or test purpose
- `--framework <react|node|express>` - Framework-specific patterns

### run-test.js

- `--file <path>` - Test file to execute (required)
- `--config <path>` - Jest config file (optional)
- `--coverage` - Run with coverage report
- `--watch` - Run in watch mode (not recommended for CI)

## Output Format

### Test Generation

Returns JSON with generated test file information:

```json
{
  "success": true,
  "testFile": "tests/components/Button.test.js",
  "testCount": 3,
  "template": "unit-test",
  "framework": "react"
}
```

### Test Execution

Returns JSON with test results:

```json
{
  "success": false,
  "passed": 2,
  "failed": 1,
  "total": 3,
  "duration": 1.234,
  "failures": [
    {
      "test": "Button handles click events",
      "error": "Expected onClick to be called",
      "file": "tests/components/Button.test.js",
      "line": 15
    }
  ]
}
```

## Templates

### Unit Test Template

For testing individual functions or components in isolation:
- Minimal dependencies
- Fast execution
- Focused on single responsibility

### Integration Test Template

For testing multiple components working together:
- Real dependencies (minimal mocking)
- Database/API integration
- Multi-component workflows

### E2E Test Template

For testing complete user journeys:
- Full application stack
- Browser automation (if applicable)
- End-to-end scenarios

## Framework-Specific Patterns

### React Components

```javascript
import { render, fireEvent, screen } from '@testing-library/react';
import { Button } from '../components/Button';

describe('Button', () => {
  it('handles click events', () => {
    const onClick = jest.fn();
    render(<Button onClick={onClick}>Click me</Button>);
    fireEvent.click(screen.getByText('Click me'));
    expect(onClick).toHaveBeenCalled();
  });
});
```

### Node.js/Express

```javascript
const request = require('supertest');
const app = require('../app');

describe('GET /api/users', () => {
  it('returns list of users', async () => {
    const res = await request(app).get('/api/users');
    expect(res.status).toBe(200);
    expect(res.body).toBeInstanceOf(Array);
  });
});
```

## Integration with deep-debugger

The deep-debugger agent uses this skill for:

1. **Test Recreation**: Generate failing test from bug report
2. **Test Validation**: Execute test to verify it fails consistently
3. **Fix Verification**: Re-run test after fix to ensure it passes

Example workflow:
```markdown
1. deep-debugger receives bug report
2. Invokes test-detector to identify Jest
3. Invokes jest-test/generate-test.js to create failing test
4. Invokes jest-test/run-test.js to validate test fails
5. Delegates fix to appropriate specialist agent
6. Invokes jest-test/run-test.js to verify fix
```

## Dependencies

Requires Jest to be installed in the project:

```bash
npm install --save-dev jest @types/jest
```

For React testing:
```bash
npm install --save-dev @testing-library/react @testing-library/jest-dom
```

## Error Handling

### Test Generation Errors

```json
{
  "success": false,
  "error": "Source file not found",
  "file": "src/components/Missing.js"
}
```

### Test Execution Errors

```json
{
  "success": false,
  "error": "Jest configuration not found",
  "config": "jest.config.js"
}
```

## See Also

- [REFERENCE.md](REFERENCE.md) - Detailed Jest API reference and best practices
- [templates/](templates/) - Test file templates for different scenarios

Overview

This skill provides end-to-end Jest test generation and execution for JavaScript and TypeScript projects. It supports unit, integration, and end-to-end test patterns, handles modern JS/TS syntax, and offers framework-specific templates for React, Node, and Express. The skill returns structured JSON output for both generated test files and test run results to integrate with automated workflows.

How this skill works

Generate-test reads a source file and a bug description or feature note, then emits a Jest test file using a chosen template (unit, integration, or e2e) and framework pattern. Run-test executes specified Jest tests (optionally with a config, coverage, or watch mode) and parses Jest output into a concise JSON summary with pass/fail counts, duration, and failure details. Both commands surface clear error objects when inputs or configurations are missing.

When to use it

  • Create a reproducible failing test from a bug report to drive fixes.
  • Automatically generate test scaffolding for new components or endpoints.
  • Run targeted tests during CI steps and collect structured results.
  • Validate that a proposed fix resolves a failing test case.
  • Execute integration or E2E scenarios that require framework-specific patterns.

Best practices

  • Provide a concise --description when generating tests to clarify intent and assertions.
  • Select the appropriate template type: unit for isolated logic, integration for multi-component flows, and e2e for full-stack journeys.
  • Include a project Jest config when running tests in nonstandard setups to avoid false negatives.
  • Install required dev dependencies (jest, @types/jest, testing-library or supertest) before use.
  • Prefer generated tests as starting points; refine mocks and assertions for deterministic results.

Example use cases

  • Turn a user bug report about a React Button into a failing unit test that reproduces the click-handling bug.
  • Generate integration tests for an Express route that validates database responses and middleware behavior.
  • Run a focused test file in CI to verify a fix before merging a pull request.
  • Create E2E test scaffolding for a user signup flow that will later be wired to browser automation.
  • Automate test recreation in a debugging pipeline: generate failing test, run it, apply fix, re-run to confirm pass.

FAQ

What output do the commands return?

Generate-test returns JSON with success, testFile path, testCount, template and framework; run-test returns success, passed, failed, total, duration and failure details.

Which dependencies are required?

At minimum install jest and @types/jest for TypeScript. For React use @testing-library/react and @testing-library/jest-dom; for HTTP routes use supertest.

Can I run integration or E2E tests with this skill?

Yes. Use --type integration or --type e2e when generating tests and ensure the environment supports required services and browser automation if applicable.