Report structure and artifact formats
Choose the right format before building a parser or integration.
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.
Runtime Report
Section titled “Runtime Report”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.
Identifiers and timestamps
Section titled “Identifiers and timestamps”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.
Local artifact formats
Section titled “Local artifact formats”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.
Sample reproduction bundle
Section titled “Sample reproduction bundle”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.
About Quackban and credits
Section titled “About Quackban and credits”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.
Compatibility
Section titled “Compatibility”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.