# QA Agent and TDD Framework

This directory contains the QA Agent and TDD Framework for the Neo System, which provides comprehensive testing capabilities for software development projects.

## Overview

The QA Agent and TDD Framework provide the following features:

- **Multiple Test Frameworks**: Support for Jest, Vitest, Mocha, Cypress, Playwright, and more
- **AI-Powered Test Generation**: Uses AI to generate sophisticated test cases and code
- **TDD Workflow**: Implements the Test-Driven Development workflow with maker-checker pattern
- **CI/CD Integration**: Connects with CI/CD systems for automated testing
- **Test Metrics and Reporting**: Collects, analyzes, and reports test metrics

## Components

### QA Agent

The QA Agent is a specialized agent that focuses on testing and quality assurance. It can:

- Create tests for components and modules
- Validate implementations against tests
- Generate refactoring suggestions
- Collect and analyze test metrics

### TDD Framework

The TDD Framework coordinates the Test-Driven Development workflow between developer agents and QA agents. It manages:

- TDD workflow creation and execution
- Step dependencies and sequencing
- Test generation, implementation, validation, and refactoring

### Test Frameworks

The system supports multiple test frameworks, including:

- **Jest**: For unit and integration testing
- **Vitest**: For unit and integration testing with Vite
- **Mocha**: For unit and integration testing
- **Cypress**: For end-to-end testing
- **Playwright**: For end-to-end and visual testing
- **Puppeteer**: For end-to-end and performance testing
- **Supertest**: For API testing
- **Storybook**: For visual and component testing

### AI Test Generation

The system uses AI to generate sophisticated test cases and code based on:

- Component/module analysis
- Acceptance criteria
- Implementation details
- Test framework best practices

### CI/CD Integration

The system integrates with CI/CD systems, including:

- GitHub Actions
- GitLab CI
- Jenkins
- CircleCI
- Travis CI

### Test Metrics and Reporting

The system collects, analyzes, and reports test metrics, including:

- Coverage metrics (statements, branches, functions, lines)
- Performance metrics (execution time, memory usage)
- Reliability metrics (failure rate, uptime)
- Maintainability metrics (complexity, duplication)

## Usage

### Creating a QA Agent

```javascript
import { QAAgent } from '../agents/qa-agent.js';

// Create a QA agent
const qaAgent = new QAAgent('qa-1', {
  capabilities: ['testing', 'quality-assurance', 'tdd'],
  knowledgeDomains: ['jest', 'testing-library', 'react-testing'],
  preferredFramework: 'jest',
  coverageThreshold: 80,
  useAI: true,
  cicdIntegration: true,
  collectMetrics: true
});
```

### Creating a TDD Workflow

```javascript
import { TDDFramework } from '../tdd-framework.js';

// Create a TDD workflow
const workflow = await tddFramework.createTDDWorkflow({
  id: 'tdd-workflow-1',
  taskMasterId: '1',
  makerAgentId: 'dev-1',
  checkerAgentId: 'qa-1',
  testConfig: {
    framework: 'jest',
    coverage: 80,
    testTypes: ['unit', 'integration'],
    useAI: true,
    setupCICD: true,
    collectMetrics: true
  }
});
```

### Executing a TDD Workflow

```javascript
// Execute a TDD workflow
const result = await tddFramework.executeTDDWorkflow('tdd-workflow-1');

// Check the result
if (result.success) {
  console.log('TDD workflow completed successfully');
} else {
  console.log('TDD workflow failed');
}
```

## Configuration

### Test Framework Configuration

The system automatically detects and recommends test frameworks based on the project type and features. You can also specify a preferred framework:

```javascript
const qaAgent = new QAAgent('qa-1', {
  preferredFramework: 'jest'
});
```

### Test Types Configuration

You can specify the types of tests to create:

```javascript
const workflow = await tddFramework.createTDDWorkflow({
  testConfig: {
    testTypes: ['unit', 'integration', 'e2e']
  }
});
```

### Coverage Configuration

You can specify the coverage threshold:

```javascript
const workflow = await tddFramework.createTDDWorkflow({
  testConfig: {
    coverage: 80
  }
});
```

### AI Configuration

You can enable or disable AI-powered test generation:

```javascript
const qaAgent = new QAAgent('qa-1', {
  useAI: true
});
```

### CI/CD Configuration

You can enable or disable CI/CD integration:

```javascript
const workflow = await tddFramework.createTDDWorkflow({
  testConfig: {
    setupCICD: true
  }
});
```

### Metrics Configuration

You can enable or disable metrics collection:

```javascript
const workflow = await tddFramework.createTDDWorkflow({
  testConfig: {
    collectMetrics: true
  }
});
```

## Testing

The system includes comprehensive tests for the QA Agent and TDD Framework:

```bash
# Run all tests
npm test

# Run QA Agent tests
npm test -- src/core/neo/agents/__tests__/qa-agent.test.js

# Run TDD Framework tests
npm test -- src/core/neo/__tests__/tdd-framework.test.js
```
