Test provision and manage isolated test environments with configuration and data.
Use when performing specialized testing.
Trigger with phrases like "manage test environment", "provision test env", or "setup test infrastructure".
Provision, configure, and manage isolated test environments for reliable test execution. Supports Docker Compose environments, Testcontainers, local service stacks, and ephemeral CI environments.
Prerequisites
Docker and Docker Compose installed (for containerized environments)
Testcontainers library installed if using programmatic container management
Database client tools (psql, mysql, mongosh) for seed data operations
Environment variable management via .env files or secrets manager
Sufficient disk space and memory for running service containers
Instructions
Read the project's existing configuration files (docker-compose.yml, .env.test, jest.config.*, pytest.ini) to understand current environment setup.
Inventory all external dependencies the test suite requires (databases, message queues, cache servers, third-party API stubs).
Create or update a docker-compose.test.yml defining isolated service containers:
Assign non-conflicting ports to avoid collisions with development services.
Configure health checks for each service to prevent tests from starting before services are ready.
Set resource limits (memory, CPU) to match CI runner constraints.
Write seed data scripts that populate databases with baseline test data:
Use idempotent migrations that can run repeatedly without error.
Create separate seed datasets for unit, integration, and E2E test tiers.
Include cleanup scripts that truncate tables without dropping schemas.
Generate environment configuration files (.env.test) with connection strings, API keys, and feature flags appropriate for testing.
Create a startup script that orchestrates the full environment lifecycle:
Start containers and wait for health checks to pass.
Run database migrations and seed data.
Export environment variables for the test runner.
Execute the test suite.
Tear down containers and clean up volumes.
Validate the environment by running a small smoke test suite against the provisioned services.
Output
docker-compose.test.yml with all required service definitions
.env.test with test-specific configuration values
Database seed scripts (seeds/test-data.sql or equivalent)