Adding Screenshot Metadata
Enrich your screenshots in Argos with metadata by adding a companion JSON file. This metadata appears on the build page and helps contextualize how and why a screenshot was generated.
How It Works
For each screenshot file, you can create a metadata file with the same name and the .argos.json suffix:
myscreenshot.png
myscreenshot.png.argos.json
The .argos.json file must be valid JSON following the Argos metadata schema.
If you use an official Argos SDK like @argos-ci/playwright, @argos-ci/cypress, @argos-ci/puppeteer or @argos-ci/storybook, the SDK automatically generates and uploads this metadata for you. If you don't use any SDK you may want to implement your own metadata generation and using @argos-ci/core or @argos-ci/cli.
Schema Autocomplete
To enable autocompletion, type checking, and schema validation in editors like VS Code, you can add a $schema field at the top of your .argos.json file:
{
  "$schema": "https://api.argos-ci.com/v2/screenshot-metadata.json"
}
Top-Level Fields
| Field | Type | Description | 
|---|---|---|
$schema | string? | Ignored. Can be set to get completions, validations and documentation in some editors. | 
url | string? | The URL of the page that was screenshotted. | 
previewUrl | string? | A URL to an accessible preview of the screenshot. | 
viewport | Viewport? | The viewport dimensions when the screenshot was taken. | 
colorScheme | "light" | "dark"  | The color scheme when the screenshot was taken. | 
mediaType | "screen" | "print"  | The media type when the screenshot was taken. | 
test | Test? | Information about the test that generated the screenshot. | 
browser | Browser? | The browser that generated the screenshot. | 
automationLibrary | Automation Library | The automation library that generated the screenshot. (Required) | 
sdk | SDK | The Argos SDK that generated the screenshot. (Required) | 
Viewport
{
  "width": 1280,
  "height": 720
}
width(number): Width of the viewport.height(number): Height of the viewport.
Test
{
  "id": "test-id",
  "title": "should render homepage correctly",
  "titlePath": ["E2E", "Homepage"],
  "retries": 1,
  "retry": 0,
  "repeat": 0,
  "location": { "file": "tests/homepage.spec.ts", "line": 42, "column": 3 },
  "annotations": [
    {
      "type": "slow",
      "description": "Known performance issue",
      "location": { "file": "tests/homepage.spec.ts", "line": 40, "column": 1 }
    }
  ]
}
id(string?): The unique identifier of the test.title(string): The title of the test.titlePath(string[]): The hierarchy of titles leading to the test.retries(number?): Number of retries for the test.retry(number?): The current retry count.repeat(number?): The repeat count for the test.location(Location?): Where the test is located in the source code.annotations(Test Annotation[]?): Extra information about the test.
Location
{
  "file": "src/components/Button.tsx",
  "line": 10,
  "column": 5
}
file(string): The source file.line(number): The line number.column(number): The column number.
Test Annotation
{
  "type": "skip",
  "description": "Flaky test",
  "location": { "file": "tests/button.spec.ts", "line": 12, "column": 1 }
}
type(string): Type of annotation.description(string?): Optional explanation.location(Location?): Where the annotation is located in the source code.
Browser
{
  "name": "chromium",
  "version": "112.0.0"
}
name(string): Browser name.version(string): Browser version.
Automation Library
{
  "name": "playwright",
  "version": "1.45.0"
}
name(string): The name of the automation library (e.g.playwright,cypress).version(string): The version of the automation library.
SDK
{
  "name": "@argos-ci/playwright",
  "version": "2.0.0"
}
name(string): The name of the Argos SDK.version(string): The version of the Argos SDK.
Complete Example
Here’s a full example of myscreenshot.png.argos.json:
{
  "url": "https://example.com/home",
  "viewport": { "width": 1280, "height": 720 },
  "colorScheme": "light",
  "mediaType": "screen",
  "test": {
    "title": "renders homepage correctly",
    "titlePath": ["E2E", "Homepage"],
    "location": { "file": "tests/homepage.spec.ts", "line": 42, "column": 3 }
  },
  "browser": { "name": "chromium", "version": "112.0.0" },
  "automationLibrary": { "name": "playwright", "version": "1.45.0" },
  "sdk": { "name": "@argos-ci/playwright", "version": "2.0.0" }
}
Notes
- Fields marked as required must be included.
 - Unknown fields are ignored.
 - Each screenshot can have its own metadata file.