view mrjunejune/test/snapshots/README.md @ 163:058de208e640

[Config] Adding os ignore files.
author June Park <parkjune1995@gmail.com>
date Mon, 19 Jan 2026 04:52:02 -0800
parents 6626ec933933
children
line wrap: on
line source

# Test Snapshots

This directory contains expected HTTP response snapshots for integration tests.

## How It Works

Each test case generates a snapshot file based on its URL path:

- `/` → `root.snapshot`
- `/index.html` → `index.html.snapshot`
- `/api/users` → `api_users.snapshot`
- `/path/to/resource` → `path_to_resource.snapshot`

## Workflow

### First time (no snapshots exist):

1. Create snapshots:
```bash
bazel run //mrjunejune:create_snapshots
```

This will:
- Start the test server
- Make HTTP requests to all test paths
- Save responses to `mrjunejune/test/snapshots/`

2. Verify tests pass:
```bash
bazel test //mrjunejune:integration_test
```

All tests should now pass since snapshots exist.

### Updating Snapshots

When you change the server response format:

1. Regenerate snapshots:
```bash
bazel run //mrjunejune:create_snapshots
```

2. Verify tests still pass:
```bash
bazel test //mrjunejune:integration_test
```

3. Commit the updated snapshot files

## Two Separate Commands

- **`bazel run //mrjunejune:create_snapshots`** - Creates/updates snapshot files (uses seobeo snapshot creator library)
- **`bazel test //mrjunejune:integration_test`** - Verifies responses match snapshots

This separation makes it clear when you're creating new snapshots vs. verifying against existing ones.

## Implementation Details

The snapshot creation is implemented in the seobeo library:
- `seobeo/snapshot_creator.h` - Snapshot creation API
- `seobeo/snapshot_creator.c` - Implementation
- `mrjunejune/test/create_snapshots.c` - Binary that uses the library

This makes snapshot creation reusable across different projects.

## Special Cases

### 200 OK Responses
Only 200 OK responses are verified against snapshots. This ensures successful responses remain consistent.

### Redirects (3xx status codes)
Redirect responses skip content comparison - only the status code is verified.

### Error Responses (4xx, 5xx)
Error status codes are verified but content comparison is skipped to allow for response format flexibility.