A toolkit for automating exploratory testing of web applications.
The project produces three Docker images, each serving a distinct purpose:
| Image | Base | Purpose | Port |
|---|---|---|---|
| development | dockette/vagrant:debian-12 |
Full local development environment with all tools | 22 (SSH) |
| builder | debian:12-slim |
CI/CD build and test environment | 22 (SSH) |
| service | debian:12-slim |
Lightweight runtime for exploratory testing capabilities |
The service container is the core runtime where the exploratory testing capabilities are installed. It uses Claude Code to drive browser-based exploratory testing via Playwright MCP. Infrastructure is defined as code via Packer HCL configurations that use the Ansible provisioner to configure each image through playbooks and reusable roles.
.
├── bin/
│ ├── create-image # Packer build wrapper
│ └── setup-image-requirements # Base image setup (SSH, Python)
├── infrastructure/
│ ├── packer/
│ │ ├── development.pkr.hcl # Development image definition
│ │ ├── builder.pkr.hcl # Builder image definition
│ │ └── service.pkr.hcl # Service image definition
│ ├── ansible/
│ │ ├── playbook-development.yml # Development provisioning
│ │ ├── playbook-builder.yml # Builder provisioning
│ │ ├── playbook-service.yml # Service provisioning
│ │ └── roles/ # Reusable Ansible roles
├── .github/workflows/ # CI/CD pipelines
├── Vagrantfile # Local development via Docker provider
├── build.sh # Build images
├── push.sh # Push images to Docker Hub
└── create-latest.sh # Create multi-arch manifests
The Vagrant environment uses the Docker provider to run the development image locally:
vagrant up
vagrant sshImages are built using the build.sh script, which runs Packer inside the builder container:
# Build for a specific architecture
./build.sh service arm64
./build.sh service amd64
# Build for all architectures
./build.sh service
# Push to Docker Hub
./push.sh service arm64
./push.sh service amd64
# Create and push multi-arch manifest
./create-latest.sh serviceReplace service with development or builder to build the other images.
docker run --rm \
-e TARGET_URL=https://example.com \
-e ANTHROPIC_API_KEY=sk-... \
-v $(pwd)/output:/output \
svanosselaer/exploratory-tester-service:latest| Variable | Required | Description |
|---|---|---|
TARGET_URL |
Yes | URL of the web application to test |
ANTHROPIC_API_KEY |
Yes | Anthropic API key for Claude Code |
TEST_PROMPT |
No | Custom testing instructions (defaults to general exploratory testing) |
Results and screenshots are written to the /output directory.