# Quick Start
Get Checkmate running in 5 minutes.
## 1. Install
```bash
# Clone and build
git clone https://github.com/your-org/checkmate
cd checkmate
cargo build --release
# Add to PATH
export PATH="$PATH:$(pwd)/target/release"
```
Verify: `cm --version`
## 2. Initialize
Navigate to your project and initialize:
```bash
cd your-project
cm init --url http://localhost:8080
```
This creates `.checkmate/` with your project configuration.
## 3. Create a Test
Create `.checkmate/tests/health.yaml`:
```yaml
name: "Health Check"
tests:
api_responds:
description: "API should return healthy status"
endpoint: /health
method: GET
expect_status: 200
assertions:
- query: "$[status]"
expect: "ok"
```
## 4. Run Tests
```bash
cm test run
```
Output:
```json
{
"suite": "Health Check",
"summary": {
"total": 1,
"passed": 1,
"failed": 0
}
}
```
## 5. View History
```bash
cm history
```
```
✓ cm-run-a3f 2024-01-15 1/1 passed @ abc1234
```
## Next Steps
- **More assertions**: See [ASSERTIONS.md](ASSERTIONS.md)
- **Multi-request tests**: See [TEST_SPECS.md](TEST_SPECS.md)
- **Configuration**: See [CONFIG.md](CONFIG.md)
- **Full CLI**: See [CLI_REFERENCE.md](CLI_REFERENCE.md)
## Common Patterns
### POST with Body
```yaml
requests:
create_user:
body:
name: "Test User"
email: "test@example.com"
tests:
user_creation:
endpoint: /api/users
method: POST
requests: [create_user]
expect_status: 201
assertions:
- query: "$[id]"
expect_type: string
```
### Authentication
```yaml
requests:
authenticated:
headers:
Authorization: "Bearer your-token"
body:
data: "value"
tests:
protected_endpoint:
endpoint: /api/protected
requests: [authenticated]
```
### Check Field Exists
```yaml
assertions:
- query: "$[optional_field]?"
expect: true
message: "Optional field should be present"
```
## Troubleshooting
**"No .checkmate/ found"**
```bash
cm init --url http://your-api-url
```
**Tests not discovered**
- Check files are in `.checkmate/tests/`
- Check extension is `.yaml` or `.yml`
**Connection refused**
- Verify your API is running at the configured `base_url`
- Check `cm config show` for current settings