QE Contract Testing
Consumer-driven contract testing for APIs including REST, GraphQL, and event-driven systems with schema validation.
Best use case
QE Contract Testing is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Consumer-driven contract testing for APIs including REST, GraphQL, and event-driven systems with schema validation.
Teams using QE Contract Testing should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/qe-contract-testing/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How QE Contract Testing Compares
| Feature / Agent | QE Contract Testing | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Consumer-driven contract testing for APIs including REST, GraphQL, and event-driven systems with schema validation.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# QE Contract Testing
## Purpose
Guide the use of v3's contract testing capabilities including consumer-driven contracts, schema validation, backward compatibility checking, and API versioning verification.
## Activation
- When testing API contracts
- When validating schema changes
- When checking backward compatibility
- When testing GraphQL APIs
- When verifying event schemas
## Quick Start
```bash
# Generate contract from API
aqe contract generate --api openapi.yaml --output contracts/
# Verify provider against contracts
aqe contract verify --provider http://localhost:3000 --contracts contracts/
# Check breaking changes
aqe contract breaking --old api-v1.yaml --new api-v2.yaml
# Test GraphQL schema
aqe contract graphql --schema schema.graphql --operations queries/
```
## Agent Workflow
```typescript
// Contract generation
Task("Generate API contracts", `
Analyze the REST API and generate consumer contracts:
- Parse OpenAPI specification
- Identify critical endpoints
- Generate Pact contracts
- Include example requests/responses
Output to contracts/ directory.
`, "qe-api-contract")
// Breaking change detection
Task("Check API compatibility", `
Compare API v2.0 against v1.0:
- Detect removed endpoints
- Check parameter changes
- Verify response schema changes
- Identify deprecations
Report breaking vs non-breaking changes.
`, "qe-api-compatibility")
```
## Contract Testing Types
### 1. Consumer-Driven Contracts (Pact)
```typescript
await contractTester.consumerDriven({
consumer: 'web-app',
provider: 'user-service',
contracts: 'contracts/web-app-user-service.json',
verification: {
providerBaseUrl: 'http://localhost:3000',
providerStates: providerStateHandlers,
publishResults: true
}
});
```
### 2. Schema Validation
```typescript
await contractTester.validateSchema({
type: 'openapi',
schema: 'api/openapi.yaml',
requests: actualRequests,
validation: {
requestBody: true,
responseBody: true,
headers: true,
statusCodes: true
}
});
```
### 3. GraphQL Contract Testing
```typescript
await graphqlTester.testContracts({
schema: 'schema.graphql',
operations: 'queries/**/*.graphql',
validation: {
queryValidity: true,
responseShapes: true,
nullability: true,
deprecations: true
}
});
```
### 4. Event Contract Testing
```typescript
await contractTester.eventContracts({
schema: 'events/schemas/',
events: {
'user.created': {
schema: 'UserCreatedEvent.json',
examples: ['examples/user-created.json']
},
'order.completed': {
schema: 'OrderCompletedEvent.json',
examples: ['examples/order-completed.json']
}
},
compatibility: 'backward'
});
```
## Breaking Change Detection
```yaml
breaking_changes:
always_breaking:
- endpoint_removed
- required_param_added
- response_field_removed
- type_changed
potentially_breaking:
- optional_param_removed
- response_field_added
- enum_value_removed
non_breaking:
- endpoint_added
- optional_param_added
- response_field_made_optional
- documentation_changed
```
## Contract Report
```typescript
interface ContractReport {
summary: {
contracts: number;
passed: number;
failed: number;
warnings: number;
};
consumers: {
name: string;
contracts: ContractResult[];
compatibility: 'compatible' | 'breaking' | 'unknown';
}[];
breakingChanges: {
type: string;
location: string;
description: string;
impact: 'high' | 'medium' | 'low';
migration: string;
}[];
deprecations: {
item: string;
deprecatedIn: string;
removeIn: string;
replacement: string;
}[];
}
```
## CI/CD Integration
```yaml
contract_verification:
consumer_side:
- generate_contracts
- publish_to_broker
- can_i_deploy_check
provider_side:
- fetch_contracts_from_broker
- verify_against_provider
- publish_results
pre_release:
- check_breaking_changes
- verify_all_consumers
- update_compatibility_matrix
```
## Pact Broker Integration
```typescript
await contractTester.withBroker({
brokerUrl: 'https://pact-broker.example.com',
auth: { token: process.env.PACT_TOKEN },
operations: {
publish: true,
canIDeploy: true,
webhooks: true
}
});
```
## Coordination
**Primary Agents**: qe-api-contract, qe-api-compatibility, qe-graphql-tester
**Coordinator**: qe-contract-coordinator
**Related Skills**: qe-test-generation, qe-security-complianceRelated Skills
qa-api-testing-contracts
API testing and contract validation. Design and execute schema validation, contract tests, negative testing, and change safety for REST, GraphQL, and gRPC APIs. Use when you need API test plans, contract testing, or CI quality gates.
python-testing
Use when implementing new Python code (follow TDD), designing test suites, reviewing test coverage, setting up pytest infrastructure, writing fixtures, mocking dependencies, or performing parametrized testing
python-testing-patterns
Implement comprehensive testing strategies with pytest, fixtures, mocking, and test-driven development. Use when writing Python tests, setting up test suites, or implementing testing best practices.
property-based-testing
Use when writing tests for serialization, validation, normalization, or pure functions - provides property catalog, pattern detection, and library reference for property-based testing
playwright-app-testing
Test the Expensify App using Playwright browser automation. Use when user requests browser testing, after making frontend changes, or when debugging UI issues
pgsql-parser-testing
Test the pgsql-parser repository (SQL parser/deparser). Use when working in the pgsql-parser repo, fixing deparser issues, running parser tests, or validating SQL round-trips. Scoped specifically to the constructive-io/pgsql-parser repository.
performance-testing-review-multi-agent-review
Use when working with performance testing review multi agent review
performance-testing-review-ai-review
You are an expert AI-powered code review specialist combining automated static analysis, intelligent pattern recognition, and modern DevOps practices. Leverage AI tools (GitHub Copilot, Qodo, GPT-5, C
mobile-app-testing
Comprehensive mobile app testing strategies for iOS and Android. Covers unit tests, UI tests, integration tests, performance testing, and test automation with Detox, Appium, and XCTest.
moai-workflow-testing
Comprehensive development workflow specialist combining TDD, debugging, performance optimization, code review, PR review, and quality assurance into unified development workflows
k6 Performance Testing
Modern load testing with k6 including thresholds, scenarios, and custom metrics
javascript-testing-patterns
Implement comprehensive testing strategies using Jest, Vitest, and Testing Library for unit tests, integration tests, and end-to-end testing with mocking, fixtures, and test-driven development. Use...