Skip to content

Report structure and artifact formats

Choose the right format before building a parser or integration.

Last reviewed Open Markdown

Recorder uses different formats for assembled reports, HTTP archives, action flows, and generated scripts. Choose the format that matches the artifact you actually have.

For a normal developer handoff, start with the shared artifact bundle. The folder does not contain a serialized runtime Report. The Runtime Report section below is a format reference for a separately supplied report or integration.

The assembled report used for project storage and viewer data has these top-level fields:

Field Contents
meta Report version, page URL, user agent, start/stop times, duration, title, description, notes, context, and session header identifiers
http_requests HTTP and WebSocket diagnostic records
console_logs Console entries and exceptions
user_actions Recorded action events
semantic_actions Grouped multi-event actions
browser_logs Browser diagnostic messages
lifecycle_events Page lifecycle observations
performance_events Long-task, paint, and resource observations
attachments Attachment records
annotations Optional source-linked notes
summary Event counts and diagnostic totals

meta.version identifies the runtime Report format. Schema 1.37.0 adds optional workflow fields for compatibility with older reports:

Field Values and meaning
meta.session_type explore, test, or verify: the selected session purpose
meta.lookup The issue or test case as entered/found, with id, found, source, optional title, and optional URL; null when empty
meta.result passed, failed, or blocked for Test case; fixed or not_fixed for Verify fix; null before selection and for Explore

Read meta.version from the report you are consuming; do not substitute the extension version, HAR creator version, or sample ZIP filename. The sample ZIP does not include a runtime Report from which to read this value.

An optional project_id identifies ownership where supplied. A stored-session retrieval response may group records differently before the viewer assembles them into this report shape.

Report metadata contains started_at, stopped_at, and duration_ms. Event records use their own timestamps, including @timestamp; request timing has its own start information. Preserve the units and timezone of each field rather than comparing unlike values.

Issue and reproduction identifiers appear in report metadata; per-request evidence can include correlation identifiers. See backend correlation.

The stopped timeline follows the retained-timeline limit. Session duration and a starting timestamp do not prove the full elapsed session is present. Inferred action associations are not verified causal relationships.

network.har uses HAR 1.2 HTTP structure. steps.json is Chrome DevTools Recorder action JSON. playwright.spec.ts and puppeteer.js are source code for their respective frameworks. console.log is text, session.md and notes.md are readable Markdown, and screenshot attachments are PNG files. The Markdown summaries are for handoff; use the structured artifacts for parsing requests and action flows.

The local download is not a serialized copy of every runtime Report field. See Inspect a shared artifact bundle before choosing files for a developer handoff.

Inspect actual artifacts and handle unavailable or redacted content explicitly. Do not parse generated scripts as if they were a stable report API.

The sample bundle ZIP contains a real reproduction: Blocked tag stays after card leaves the Blocked lane. Unzip it and start with session.md for the reproduction steps, expected result, and actual result.

The recording folder is named Blocked tag stays after card leaves the Blocked lane-536bcb5d-e115-4676-aa62-21ddf3fb76c7. Inside it:

Blocked tag stays after card leaves the Blocked lane-536bcb5d-e115-4676-aa62-21ddf3fb76c7/
├── session.md
├── notes.md
├── network.har
├── steps.json
├── playwright.spec.ts
├── puppeteer.js
└── screenshots/
├── 001-area.png
├── 002-full.png
└── 003-area.png
Artifact What this sample contains
session.md Tester-written description and evidence, session start and duration, 21 numbered actions, and evidence counts. Read the description’s conclusions alongside the captured files.
notes.md Four source-linked observations: entering Blocked, the move request, the board response, and a screenshot.
network.har HAR 1.2 with six entries in log.entries, all HTTP 200. The creation request and response bodies are redacted; later move payloads and board responses are available.
steps.json A DevTools flow with title and 22 steps: viewport setup, initial navigation, and recorded interactions. Its step indexes differ from the numbered Markdown actions.
playwright.spec.ts, puppeteer.js Generated actions using the recorded URL, values, and locators. They do not assert that the Blocked tag clears.
screenshots/ Three PNGs. 002-full.png shows the card while it is in Blocked; 003-area.png shows the card and badge without a lane heading. The full suffix denotes a viewport capture, not a stitched page.

The ZIP also contains __MACOSX/ and ._ metadata entries from archive packaging; ignore those when reading evidence. It has no metadata.json, serialized runtime Report, or console.log. Although session.md links to console.log, that file is absent. Its summary reports zero console errors; an absent file alone is not proof that no messages occurred.

These files were packaged as a ZIP for the website. The filename’s v1 is a sample download label, not a schema version for every enclosed artifact. Use each file’s own format; for example, steps.json is a DevTools flow, not Fairlead Report JSON.

For a guided reading of the request bodies and timestamps, follow the sample investigation.

The sample includes session and notes Markdown from the supplied recording; see Inspect a shared artifact bundle for their roles and omission rules. Files vary by recording and extension version.

SpaceDucking is a testing resource created by Ministry of Testing (MoT). Quackban, the Kanban-style application featured in this sample, was created within the MoTaverse, Ministry of Testing’s community, and is available through SpaceDucking.

Credit for SpaceDucking and Quackban belongs to Ministry of Testing and the contributing MoTaverse creators. Fairlead used Quackban to demonstrate recording and investigating a bug with Fairlead Recorder.

Keep the report’s version with stored fixtures when building tooling. Validate the fields your consumer needs, handle optional fields, and test against artifacts from the extension version you support. Do not assume compatibility from one sample recording or rename files to make them fit another contract.