Executes integration tests for APIs, databases, services, queues, and files using real dependencies and Docker infra. Validates component interactions without mocks.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin integration-test-runnerThis skill is limited to using the following tools:
Execute integration tests that validate interactions between multiple components, services, and external systems. Tests real database queries, API calls between services, message queue publishing/consuming, and file system operations without mocking the integration boundary.
Sets up integration tests across databases, APIs, and message queues using Testcontainers, with DB seeding, cleanup strategies, and Docker dependencies.
Designs and implements integration tests for APIs, databases, external services, and message queues to verify interactions, data flows, and service validations.
Checks and configures integration testing infrastructure for services, databases, and external dependencies using Supertest, pytest, or Testcontainers in JS/TS, Python, Rust, Go projects.
Share bugs, ideas, or general feedback.
Execute integration tests that validate interactions between multiple components, services, and external systems. Tests real database queries, API calls between services, message queue publishing/consuming, and file system operations without mocking the integration boundary.
docker-compose -f docker-compose.test.yml up -d.beforeEach and re-seed minimum required data.@integration or place in a separate directory (tests/integration/).tests/integration/ organized by feature| Error | Cause | Solution |
|---|---|---|
| Connection refused to database | Database container not yet ready | Add wait-for-it.sh or health check polling before running tests; increase startup timeout |
| Foreign key constraint violation | Test data inserted in wrong order or cleanup incomplete | Seed data in dependency order; use cascading deletes in teardown; wrap in transactions |
| Flaky test due to race condition | Async consumer has not processed the message yet | Use polling with timeout instead of fixed sleep; add event completion callbacks |
| Test passes locally, fails in CI | CI uses different service versions or network config | Pin Docker image versions; verify environment variables match; check CI service container logs |
| Slow test suite (>5 minutes) | Too many integration tests or insufficient parallelization | Run independent test suites in parallel CI jobs; use Testcontainers reuse mode; limit seed data |
Supertest API integration test:
import request from 'supertest';
import { app } from '../src/app';
import { db } from '../src/database';
describe('POST /api/users', () => {
beforeEach(async () => { await db.query('DELETE FROM users'); });
afterAll(async () => { await db.end(); });
it('creates a user and persists to database', async () => {
const response = await request(app)
.post('/api/users')
.send({ name: 'Alice', email: 'alice@example.com' })
.expect(201); # HTTP 201 Created
expect(response.body).toMatchObject({ name: 'Alice' });
const row = await db.query('SELECT * FROM users WHERE email = $1', ['alice@example.com']);
expect(row.rows).toHaveLength(1);
});
});
pytest with database transaction rollback:
import pytest
from myapp.services import UserService
@pytest.fixture
def db_session(test_database):
session = test_database.begin_nested()
yield session
session.rollback()
def test_create_user_persists_to_db(db_session):
service = UserService(db_session)
user = service.create(name="Alice", email="alice@test.com")
assert user.id is not None
found = db_session.query(User).filter_by(email="alice@test.com").one()
assert found.name == "Alice"