Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion index.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ Angles is an open-source, centralised test dashboard. You store your automated t
- the test phase (e.g. smoke, regression)
- artifact versions of the system under test
- platform details (platform, browser, device, screen size, etc.)
- Test attachments: console logs, network HAR files, videos, Playwright traces, page HTML snapshots and images, attached to a test or a single step and shown in the UI with a viewer for each
- Batch mode in the clients, which stores every test execution for a build in a single request
- Test execution history, which follows a single test case over time
- Test run comparison (a test matrix of multiple runs side by side)
Expand Down Expand Up @@ -149,6 +150,7 @@ As with the Docker Compose setup, review the config manifest first. Set the envi
| `TRUST_PROXY` | `false` | Set to `true` when running behind a TLS-terminating reverse proxy. |
| `BUILD_CLEAN_UP_AGE_IN_DAYS` | `90` | Age after which the nightly clean-up removes builds. |
| `ANGLES_MANUAL_TESTING_ENABLED` | `true` | *Seed* for the manual testing feature toggle (only used on first run). |
| `ANGLES_ATTACHMENT_MAX_SIZE_MB` | `100` | Largest file a test can attach (logs, HAR files, videos, traces, HTML snapshots). |
| `IMAGE_ENGINE_WORKERS` | 1–2, based on CPU count | Size of the image engine worker pool. |
| `IMAGE_ENGINE_TASK_TIMEOUT_MS` | `120000` | Timeout for a single image task. |
| `ANGLES_METRICS_TOKEN` / `ANGLES_METRICS_PUBLIC` | unset | Enable the Prometheus endpoint (see [Monitoring](#monitoring-with-prometheus--grafana)). |
Expand Down Expand Up @@ -263,6 +265,32 @@ All API requests require authentication. Before storing any results, configure t
#### Batch mode (single request for all executions)
By default the reporter sends each test execution to the Angles API as soon as `saveTest()` is called. If you enable batch mode with `setBatchMode(true)`, the reporter collects the executions instead. Calling `saveAllTests()` at the end of the run then stores all of them against the current build in a single request (`PUT /build/{buildId}/executions`). For large test runs this cuts the number of API calls significantly. The build is still created up-front, and screenshots are still uploaded one at a time as the tests run.

#### Attachments (logs, HAR files, videos, traces, HTML)
A test can attach files to its results, for the whole test or for one step. Each client has the same four methods (`attach_file`, `attach_data`, `attach_file_to_last_step` and `attach_data_to_last_step` in Python):

```javascript
anglesReporter.fail('Order confirmation', 'Order confirmed', 'Payment declined', '');
await anglesReporter.attachDataToLastStep(await page.content(), 'page.html'); // this step
await anglesReporter.attachFile('/path/to/trace.zip'); // the whole test
await anglesReporter.attachFile('/path/to/network.har');
await anglesReporter.saveTest();
```

Files are uploaded against the build as soon as you attach them (`POST /build/{buildId}/attachment`), and linked to the test when it's saved, so this works in batch mode too. The file extension decides how the UI shows it:

| Extension | Shown as |
| --- | --- |
| `.log`, `.txt` | Text with line numbers and a filter |
| `.json` | Formatted JSON with a filter |
| `.har` | A table of requests, with failed ones highlighted |
| `.webm`, `.mp4` | A video player |
| `.zip` with "trace" in the name | A Playwright trace (download it and open it at [trace.playwright.dev](https://trace.playwright.dev)) |
| other `.zip` | A download |
| `.html`, `.htm` | The page, with scripts disabled |
| `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp` | The image |

The size limit is `ANGLES_ATTACHMENT_MAX_SIZE_MB` (100 MB by default). Attachments are stored on the same volume as manual-testing attachments.

#### Execution type
Automated clients never set `executionType`: builds they create are always `automated`. Manual runs are created only through the manual test management API, so a manual build on the dashboard always has a real manual run behind it.

Expand Down Expand Up @@ -343,7 +371,7 @@ scrape_configs:
A [ready-to-import Grafana dashboard](https://github.com/AnglesHQ/angles/tree/master/docs/grafana) is included. For the full metric list and suggested alerts, see [prometheus-metrics.md](https://github.com/AnglesHQ/angles/blob/master/docs/prometheus-metrics.md).

## Angles clean-up (cron)
Storing all your test data (and screenshots) without any clean-up can fill up your instance of Angles quickly. That's why the back-end container runs a nightly cron job (01:00) that uses the build delete API to remove any builds and screenshots **older than 90 days**. To change this number, update the `BUILD_CLEAN_UP_AGE_IN_DAYS` value in the docker-compose file (or the Kubernetes config) and redeploy.
Storing all your test data (and screenshots) without any clean-up can fill up your instance of Angles quickly. That's why the back-end container runs a nightly cron job (01:00) that uses the build delete API to remove any builds, screenshots and test attachments **older than 90 days**. To change this number, update the `BUILD_CLEAN_UP_AGE_IN_DAYS` value in the docker-compose file (or the Kubernetes config) and redeploy.
To keep specific builds, set their "keep" flag (from the UI or with `PUT /build/{buildId}/keep`). Builds with this flag set aren't removed by the nightly run, even once they reach the configured age.

**NOTE:** The clean-up doesn't remove builds that contain a "baseline" image, so these can still be used for comparisons.
Expand Down