Test provision and manage isolated test environments with configuration and data.
ReadWriteEditGrepGlobBash(test:env-*)
Test Environment Manager
Overview
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)
- Environment startup/teardown shell script (
scripts/test-env.sh)
- Health check verification report confirming all services are operational
Error Handling
| Error |
Cause |
Solution |
| Port already in use |
Ready to use test-environment-manager?
|