Skip to main content
Annotations let you attach metadata directly to your Playwright tests. Tag each test with priority, feature area, owner, ticket links, Slack targets, and custom metrics. TestDino displays them in the UI next to each test case.

Quick Reference

Supported Annotations

Annotations use the standard Playwright annotation array. All types use the testdino: prefix.
Notetestdino:notify-slack triggers Slack notifications when configured. testdino:metric tracks numeric values over time with charts. All other annotation types display in the TestDino UI for reference.

Add Annotations to Tests

Add the annotation array to any Playwright test. Each entry has a type (the annotation name) and a description (the value):
tests/navbar.spec.ts
You can notify multiple channels and users from a single annotation by separating them with commas:
For better readability, use separate entries:

Slack Notification Targets

TipSeparate entries per target are recommended for readability and easier maintenance.

Custom Metrics

The metric annotation type tracks custom numeric values across test runs. Unlike other annotations that store text, metrics store structured data (name, value, unit, optional threshold). TestDino shows each metric in the Annotations panel on the test case and plots a time-series chart per metric name. Use metrics to track anything you measure during a test: page load time, API latency, memory usage, bundle size, Lighthouse scores, or business numbers like conversion rate.

Metric Format

The testdino:metric annotation uses a JSON string as the description:

Supported Units

Static vs. Runtime Metrics

You can set metric values in two ways depending on your use case. Static values go in the annotation array at test declaration. Use this for values you know ahead of time or compute before the test:
tests/static-metric.spec.ts
Runtime values are measured during the test and pushed with test.info().annotations.push(). Use this for performance timings, API latency, or anything captured at execution time:
tests/performance.spec.ts
TipUse test.info().annotations.push() for any metric that depends on runtime measurement. The annotation array on the test declaration runs before the test body, so it cannot access runtime values.

Example: Track Multiple Metrics at Runtime

A single test can report multiple metrics. Push each one after you capture the value:
tests/checkout.spec.ts

Common Metric Examples

These show the annotation format for different categories. Replace the value with your actual measurement.

How Metrics Display in TestDino

Metric values appear on the test case detail page in two places:
  • Annotations panel on the test case overview. Each metric shows its name and a value unit / threshold badge, for example page-load-time with 1234 ms / 2000. A threshold of 0 (or omitted) shows the value alone.
  • Custom Runtime Metrics chart in the Specs Explorer. TestDino plots a time-series chart for each metric name, with the X-axis showing test run timestamps and the Y-axis showing the metric value. Filter by metric name to focus on a specific measurement, and the chart updates as new test runs report values for that metric.
TipKeep metric names consistent across runs. Use the exact same name string every time (for example, always page-load-time, not sometimes pageLoadTime). This ensures all data points appear on the same trend line.

View Annotations in TestDino

Once your tests run, annotations appear in two places in TestDino.

Test Case Detail

Open any test case from a test run. Below the KPI tiles, the Annotations panel lists every annotation on that test: priority, feature, link, owner, Slack targets, context, and flaky reason. Metric values also appear with their name, value, and unit.

Detailed Analysis Table

In the Test Runs > Summary > Detailed Analysis table, each test row has an Annotations badge. Click it to expand and see annotation chips (priority, feature, owner, Slack targets) inline with the test result. This makes it easy to scan annotations across all tests in a run without opening each one.

Annotation-Based Slack Notifications

When a test with a testdino:notify-slack annotation fails, TestDino sends a Slack alert to the mapped channel or user. This works independently from test run alerts, which notify on every run completion regardless of annotations. The notification flow:
  1. Your test has testdino:notify-slack set to @ashish or #e2e-alerts.
  2. The test fails during a run.
  3. TestDino looks up the Annotation-Slack mapping in your Slack App configuration.
  4. If there is a mapping for that target, the alert goes to the configured Slack destination.
WarningAnnotation-based Slack notifications require the Slack App to be connected to your project. The Slack Webhook integration does not support annotation-based alerts.

Configure Annotation-Slack Mapping

The mapping connects the testdino:notify-slack values you write in your test code to actual Slack channels and users in your workspace.
1

Connect the Slack App

Go to Project Settings > Integrations > Communication > Slack App and connect your Slack workspace. See Slack App setup if you have not connected yet.
2

Open Annotation Alerts tab

In the Slack Notification Configuration dialog, switch to the Annotation Alerts tab. This is where you define which annotation targets map to which Slack destinations.
3

Add your mappings

For each annotation target in your test code, add a row and pick the Slack channel or user it should notify:Type in the search box and select from the dropdown. The dropdown lists all channels and users from your connected Slack workspace.
4

Save the configuration

Click Save. From now on, when a test with a matching testdino:notify-slack annotation fails, the alert is sent to the mapped Slack destination.

Things to Know

  • Mapping is stored at the integration level, not at the project level.
  • Disconnecting Slack removes all mappings. If you disconnect the Slack App, all Annotation-Slack mappings are deleted. You need to set them up again after reconnecting.
  • One test can notify multiple targets. Add separate testdino:notify-slack entries for each channel or user you want to alert.

Example: Full Annotation Setup

This test uses all supported annotation types, including a runtime metric:
tests/order.spec.ts
When this test runs:
  • TestDino shows all annotations in the test case Annotations panel.
  • The order-flow-time metric appears on the test detail page and is plotted on a trend chart across runs.
  • If the test fails, Slack alerts go to #ch-td-extra and @ashish (if mapped in the Slack App configuration).
  • The Detailed Analysis table shows annotation chips for quick scanning across all tests in the run.

Slack App

Connect Slack and configure notification channels

Test Cases

View test case details and annotations

Test Runs Summary

Detailed analysis with annotation chips

Node.js CLI

Reporter configuration and CLI options