executable-stories-react 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +216 -270
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -235
- package/dist/index.d.ts +6 -235
- package/dist/index.js +208 -262
- package/dist/index.js.map +1 -1
- package/dist/interactive.cjs +266 -476
- package/dist/interactive.cjs.map +1 -1
- package/dist/interactive.d.cts +1 -233
- package/dist/interactive.d.ts +1 -233
- package/dist/interactive.js +258 -468
- package/dist/interactive.js.map +1 -1
- package/dist/parse.cjs +40 -1
- package/dist/parse.cjs.map +1 -1
- package/dist/parse.d.cts +3 -234
- package/dist/parse.d.ts +3 -234
- package/dist/parse.js +40 -1
- package/dist/parse.js.map +1 -1
- package/dist/report-island.global.js +23 -21
- package/dist/ssr.cjs +143 -236
- package/dist/ssr.cjs.map +1 -1
- package/dist/ssr.d.cts +1 -232
- package/dist/ssr.d.ts +1 -232
- package/dist/ssr.js +135 -228
- package/dist/ssr.js.map +1 -1
- package/dist/tailwind.css +1 -1
- package/package.json +4 -4
package/dist/parse.d.ts
CHANGED
|
@@ -1,238 +1,7 @@
|
|
|
1
|
+
import { StoryReport } from 'executable-stories-core';
|
|
2
|
+
export { StoryReport, ReportDocEntry as StoryReportDocEntry, ReportFeature as StoryReportFeature, ReportScenario as StoryReportScenario, ReportStep as StoryReportStep, ReportSummary as StoryReportSummary } from 'executable-stories-core';
|
|
1
3
|
import { z } from 'zod';
|
|
2
4
|
|
|
3
|
-
/**
|
|
4
|
-
* OTel span types for trace waterfall rendering.
|
|
5
|
-
*
|
|
6
|
-
* Structurally compatible with autotel's SerializedSpan
|
|
7
|
-
* and raw OTel nanosecond formats. No import dependency on autotel.
|
|
8
|
-
*/
|
|
9
|
-
type OtelAttributeValue = string | number | boolean | string[] | number[] | boolean[];
|
|
10
|
-
interface OtelSpan {
|
|
11
|
-
spanId: string;
|
|
12
|
-
parentSpanId?: string;
|
|
13
|
-
name: string;
|
|
14
|
-
/** Preferred: epoch-based milliseconds (from autotel's SerializedSpan) */
|
|
15
|
-
startTimeMs?: number;
|
|
16
|
-
durationMs?: number;
|
|
17
|
-
/** Compatibility: raw OTel nanosecond timestamps */
|
|
18
|
-
startTimeUnixNano?: number;
|
|
19
|
-
endTimeUnixNano?: number;
|
|
20
|
-
status: "ok" | "error" | "unset";
|
|
21
|
-
statusMessage?: string;
|
|
22
|
-
attributes?: Record<string, OtelAttributeValue>;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/** Phase tracks when the doc entry was added */
|
|
26
|
-
type DocPhase = "static" | "runtime";
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* StoryReport — public, frozen contract for UI renderers.
|
|
30
|
-
*
|
|
31
|
-
* Distinct from internal TestRunResult. Pre-grouped feature → scenario tree,
|
|
32
|
-
* with pre-computed summaries at every level. Adapter concerns (rawStatus,
|
|
33
|
-
* projectName, titlePath) are stripped at the toStoryReport boundary.
|
|
34
|
-
*
|
|
35
|
-
* Versioning: semver-style "<major>.<minor>". Additive-only within a major.
|
|
36
|
-
* Source of truth: schemas/story-report-v1.json. Types here must stay in sync.
|
|
37
|
-
*/
|
|
38
|
-
|
|
39
|
-
type StoryReportSchemaVersion = `1.${number}`;
|
|
40
|
-
type TestStatus = "passed" | "failed" | "skipped" | "pending";
|
|
41
|
-
type StepKeyword = "Given" | "When" | "Then" | "And" | "But";
|
|
42
|
-
type StepMode = "normal" | "skip" | "only" | "todo" | "fails" | "concurrent";
|
|
43
|
-
interface ReportSummary {
|
|
44
|
-
total: number;
|
|
45
|
-
passed: number;
|
|
46
|
-
failed: number;
|
|
47
|
-
skipped: number;
|
|
48
|
-
pending: number;
|
|
49
|
-
durationMs: number;
|
|
50
|
-
}
|
|
51
|
-
interface ReportTicket {
|
|
52
|
-
id: string;
|
|
53
|
-
url?: string;
|
|
54
|
-
}
|
|
55
|
-
interface ReportAttachment {
|
|
56
|
-
name: string;
|
|
57
|
-
mediaType: string;
|
|
58
|
-
body: string;
|
|
59
|
-
contentEncoding: "BASE64" | "IDENTITY";
|
|
60
|
-
}
|
|
61
|
-
interface ReportCIInfo {
|
|
62
|
-
name: string;
|
|
63
|
-
url?: string;
|
|
64
|
-
buildNumber?: string;
|
|
65
|
-
branch?: string;
|
|
66
|
-
commitSha?: string;
|
|
67
|
-
prNumber?: string;
|
|
68
|
-
}
|
|
69
|
-
interface ReportCoverageSummary {
|
|
70
|
-
linesPct?: number;
|
|
71
|
-
branchesPct?: number;
|
|
72
|
-
functionsPct?: number;
|
|
73
|
-
statementsPct?: number;
|
|
74
|
-
}
|
|
75
|
-
type ReportDocEntry = ReportDocNote | ReportDocTag | ReportDocKv | ReportDocCode | ReportDocTable | ReportDocLink | ReportDocSection | ReportDocMermaid | ReportDocScreenshot | ReportDocVideo | ReportDocHtml | ReportDocState | ReportDocCustom;
|
|
76
|
-
interface ReportDocNote {
|
|
77
|
-
kind: "note";
|
|
78
|
-
text: string;
|
|
79
|
-
phase: DocPhase;
|
|
80
|
-
children?: ReportDocEntry[];
|
|
81
|
-
}
|
|
82
|
-
interface ReportDocTag {
|
|
83
|
-
kind: "tag";
|
|
84
|
-
names: string[];
|
|
85
|
-
phase: DocPhase;
|
|
86
|
-
children?: ReportDocEntry[];
|
|
87
|
-
}
|
|
88
|
-
interface ReportDocKv {
|
|
89
|
-
kind: "kv";
|
|
90
|
-
label: string;
|
|
91
|
-
value: unknown;
|
|
92
|
-
phase: DocPhase;
|
|
93
|
-
children?: ReportDocEntry[];
|
|
94
|
-
}
|
|
95
|
-
interface ReportDocCode {
|
|
96
|
-
kind: "code";
|
|
97
|
-
label: string;
|
|
98
|
-
content: string;
|
|
99
|
-
lang?: string;
|
|
100
|
-
phase: DocPhase;
|
|
101
|
-
children?: ReportDocEntry[];
|
|
102
|
-
}
|
|
103
|
-
interface ReportDocTable {
|
|
104
|
-
kind: "table";
|
|
105
|
-
label: string;
|
|
106
|
-
columns: string[];
|
|
107
|
-
rows: string[][];
|
|
108
|
-
phase: DocPhase;
|
|
109
|
-
children?: ReportDocEntry[];
|
|
110
|
-
}
|
|
111
|
-
interface ReportDocLink {
|
|
112
|
-
kind: "link";
|
|
113
|
-
label: string;
|
|
114
|
-
url: string;
|
|
115
|
-
phase: DocPhase;
|
|
116
|
-
children?: ReportDocEntry[];
|
|
117
|
-
}
|
|
118
|
-
interface ReportDocSection {
|
|
119
|
-
kind: "section";
|
|
120
|
-
title: string;
|
|
121
|
-
markdown: string;
|
|
122
|
-
phase: DocPhase;
|
|
123
|
-
children?: ReportDocEntry[];
|
|
124
|
-
}
|
|
125
|
-
interface ReportDocMermaid {
|
|
126
|
-
kind: "mermaid";
|
|
127
|
-
code: string;
|
|
128
|
-
title?: string;
|
|
129
|
-
phase: DocPhase;
|
|
130
|
-
children?: ReportDocEntry[];
|
|
131
|
-
}
|
|
132
|
-
interface ReportDocScreenshot {
|
|
133
|
-
kind: "screenshot";
|
|
134
|
-
path: string;
|
|
135
|
-
alt?: string;
|
|
136
|
-
phase: DocPhase;
|
|
137
|
-
children?: ReportDocEntry[];
|
|
138
|
-
}
|
|
139
|
-
interface ReportDocVideo {
|
|
140
|
-
kind: "video";
|
|
141
|
-
path: string;
|
|
142
|
-
caption?: string;
|
|
143
|
-
poster?: string;
|
|
144
|
-
phase: DocPhase;
|
|
145
|
-
children?: ReportDocEntry[];
|
|
146
|
-
}
|
|
147
|
-
interface ReportDocHtml {
|
|
148
|
-
kind: "html";
|
|
149
|
-
/** Local HTML file path (exactly one of path/url/content) */
|
|
150
|
-
path?: string;
|
|
151
|
-
/** Remote URL rendered via iframe src (exactly one of path/url/content) */
|
|
152
|
-
url?: string;
|
|
153
|
-
/** Inline HTML content rendered via iframe srcdoc (exactly one of path/url/content) */
|
|
154
|
-
content?: string;
|
|
155
|
-
title?: string;
|
|
156
|
-
/** Iframe height: number → px, string passed through (e.g. "60vh"). Default 400px. */
|
|
157
|
-
height?: number | string;
|
|
158
|
-
phase: DocPhase;
|
|
159
|
-
children?: ReportDocEntry[];
|
|
160
|
-
}
|
|
161
|
-
interface ReportDocState {
|
|
162
|
-
kind: "state";
|
|
163
|
-
/** Entity name ("Basket") — diff identity across steps. Unlabeled states share one lane. */
|
|
164
|
-
label?: string;
|
|
165
|
-
/** JSON-serializable snapshot of the state at this step. */
|
|
166
|
-
value: unknown;
|
|
167
|
-
phase: DocPhase;
|
|
168
|
-
children?: ReportDocEntry[];
|
|
169
|
-
}
|
|
170
|
-
interface ReportDocCustom {
|
|
171
|
-
kind: "custom";
|
|
172
|
-
type: string;
|
|
173
|
-
data: unknown;
|
|
174
|
-
phase: DocPhase;
|
|
175
|
-
children?: ReportDocEntry[];
|
|
176
|
-
}
|
|
177
|
-
interface ReportStep {
|
|
178
|
-
id: string;
|
|
179
|
-
index: number;
|
|
180
|
-
keyword: StepKeyword;
|
|
181
|
-
text: string;
|
|
182
|
-
status: TestStatus;
|
|
183
|
-
durationMs: number;
|
|
184
|
-
errorMessage?: string;
|
|
185
|
-
mode?: StepMode;
|
|
186
|
-
docEntries: ReportDocEntry[];
|
|
187
|
-
}
|
|
188
|
-
interface ReportScenario {
|
|
189
|
-
id: string;
|
|
190
|
-
title: string;
|
|
191
|
-
status: TestStatus;
|
|
192
|
-
/**
|
|
193
|
-
* True for scenarios authored with the framework's todo modifier
|
|
194
|
-
* (e.g. `it.todo`): specified behavior with no implementation yet.
|
|
195
|
-
* Canonical status stays "pending"; this flags why.
|
|
196
|
-
*/
|
|
197
|
-
planned?: boolean;
|
|
198
|
-
durationMs: number;
|
|
199
|
-
tags: string[];
|
|
200
|
-
tickets?: ReportTicket[];
|
|
201
|
-
/** Product-code paths/globs this scenario exercises (project-root-relative). */
|
|
202
|
-
covers?: string[];
|
|
203
|
-
sourceLine?: number;
|
|
204
|
-
errorMessage?: string;
|
|
205
|
-
errorStack?: string;
|
|
206
|
-
retry: number;
|
|
207
|
-
retries: number;
|
|
208
|
-
docEntries: ReportDocEntry[];
|
|
209
|
-
steps: ReportStep[];
|
|
210
|
-
attachments: ReportAttachment[];
|
|
211
|
-
/** OTel spans for the trace waterfall (carried through from the run). */
|
|
212
|
-
otelSpans?: OtelSpan[];
|
|
213
|
-
}
|
|
214
|
-
interface ReportFeature {
|
|
215
|
-
id: string;
|
|
216
|
-
title: string;
|
|
217
|
-
sourceFile: string;
|
|
218
|
-
summary: ReportSummary;
|
|
219
|
-
scenarios: ReportScenario[];
|
|
220
|
-
}
|
|
221
|
-
interface StoryReport {
|
|
222
|
-
schemaVersion: StoryReportSchemaVersion;
|
|
223
|
-
runId: string;
|
|
224
|
-
startedAtMs: number;
|
|
225
|
-
finishedAtMs: number;
|
|
226
|
-
durationMs: number;
|
|
227
|
-
projectRoot: string;
|
|
228
|
-
packageVersion?: string;
|
|
229
|
-
gitSha?: string;
|
|
230
|
-
ci?: ReportCIInfo;
|
|
231
|
-
coverage?: ReportCoverageSummary;
|
|
232
|
-
summary: ReportSummary;
|
|
233
|
-
features: ReportFeature[];
|
|
234
|
-
}
|
|
235
|
-
|
|
236
5
|
/**
|
|
237
6
|
* Result<T> — explicit success/error type matching the cookbook convention.
|
|
238
7
|
*
|
|
@@ -287,4 +56,4 @@ declare const STORY_REPORT_SCHEMA_MAJOR: 1;
|
|
|
287
56
|
|
|
288
57
|
declare const storyReportSchema: z.ZodType<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>;
|
|
289
58
|
|
|
290
|
-
export { type ReportParseError, type ReportParseErrorCode, type Result, STORY_REPORT_SCHEMA_MAJOR,
|
|
59
|
+
export { type ReportParseError, type ReportParseErrorCode, type Result, STORY_REPORT_SCHEMA_MAJOR, err, ok, parseStoryReport, storyReportSchema };
|
package/dist/parse.js
CHANGED
|
@@ -137,7 +137,7 @@ var story_report_v1_default = {
|
|
|
137
137
|
title: {
|
|
138
138
|
type: "string",
|
|
139
139
|
minLength: 1,
|
|
140
|
-
description: "Display title.
|
|
140
|
+
description: "Display title. Comes from story.feature(...) when declared, otherwise the describe block or file basename."
|
|
141
141
|
},
|
|
142
142
|
sourceFile: {
|
|
143
143
|
type: "string",
|
|
@@ -153,6 +153,26 @@ var story_report_v1_default = {
|
|
|
153
153
|
$ref: "#/$defs/Scenario"
|
|
154
154
|
},
|
|
155
155
|
description: "Scenarios in this feature, in declaration order."
|
|
156
|
+
},
|
|
157
|
+
kind: {
|
|
158
|
+
type: "string",
|
|
159
|
+
enum: [
|
|
160
|
+
"feature",
|
|
161
|
+
"ability",
|
|
162
|
+
"business-need"
|
|
163
|
+
],
|
|
164
|
+
description: "How the feature was declared. Absent when the title was derived rather than declared."
|
|
165
|
+
},
|
|
166
|
+
narrative: {
|
|
167
|
+
type: "string",
|
|
168
|
+
description: "Markdown explaining why the feature exists and who it serves."
|
|
169
|
+
},
|
|
170
|
+
glossary: {
|
|
171
|
+
type: "array",
|
|
172
|
+
items: {
|
|
173
|
+
$ref: "#/$defs/GlossaryTerm"
|
|
174
|
+
},
|
|
175
|
+
description: "Terms this feature defines, linked wherever they appear in scenario text."
|
|
156
176
|
}
|
|
157
177
|
},
|
|
158
178
|
required: [
|
|
@@ -964,6 +984,25 @@ var story_report_v1_default = {
|
|
|
964
984
|
}
|
|
965
985
|
},
|
|
966
986
|
additionalProperties: false
|
|
987
|
+
},
|
|
988
|
+
GlossaryTerm: {
|
|
989
|
+
type: "object",
|
|
990
|
+
description: "One glossary entry: a term the scenarios use and what it means.",
|
|
991
|
+
properties: {
|
|
992
|
+
term: {
|
|
993
|
+
type: "string",
|
|
994
|
+
minLength: 1
|
|
995
|
+
},
|
|
996
|
+
definition: {
|
|
997
|
+
type: "string",
|
|
998
|
+
minLength: 1
|
|
999
|
+
}
|
|
1000
|
+
},
|
|
1001
|
+
required: [
|
|
1002
|
+
"term",
|
|
1003
|
+
"definition"
|
|
1004
|
+
],
|
|
1005
|
+
additionalProperties: false
|
|
967
1006
|
}
|
|
968
1007
|
}
|
|
969
1008
|
};
|
package/dist/parse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/result.ts","../src/schema/story-report.schema.ts","../../executable-stories-core/schemas/story-report-v1.json","../src/schema/version.ts","../src/schema/parse.ts"],"sourcesContent":["/**\n * Result<T> — explicit success/error type matching the cookbook convention.\n *\n * Used at the boundary where a StoryReport is parsed: the consumer hands us\n * an unknown value (file contents, fetch body, prop) and we return a Result.\n */\nimport type { StoryReport } from \"executable-stories-core\";\n\nexport type Result<T, E = ReportParseError> =\n | { ok: true; data: T }\n | { ok: false; error: E };\n\nexport interface ReportParseError {\n message: string;\n code: ReportParseErrorCode;\n issues?: readonly { path: string; message: string }[];\n}\n\nexport type ReportParseErrorCode =\n | \"INVALID_INPUT\"\n | \"SCHEMA_VERSION_MISMATCH\"\n | \"VALIDATION_FAILED\";\n\nexport const ok = <T>(data: T): Result<T> => ({ ok: true, data });\nexport const err = (error: ReportParseError): Result<never> => ({ ok: false, error });\n\n/**\n * Normalize the `StoryReport | Result<StoryReport>` prop accepted across the\n * render entrypoints (`Report`, `ReportInteractive`, `renderReportToHtml`) into\n * a single `Result`. A bare report becomes `ok(report)`; an already-wrapped\n * value passes through. One place owns the \"is this a Result?\" discrimination.\n */\nexport function unwrapReport(value: StoryReport | Result<StoryReport>): Result<StoryReport> {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"ok\" in value &&\n typeof (value as { ok: unknown }).ok === \"boolean\"\n ) {\n return value as Result<StoryReport>;\n }\n return ok(value as StoryReport);\n}\n","/**\n * StoryReport runtime Zod schema, derived from the canonical JSON Schema\n * at executable-stories-core/schemas/story-report-v1.json.\n *\n * Uses z.fromJSONSchema (experimental in Zod 4.x). If the API changes upstream,\n * only this file needs updating — the rest of the package consumes\n * `storyReportSchema` and `StoryReportSchemaShape` via parse.ts.\n *\n * The JSON Schema is bundled at build time by tsup (resolveJsonModule).\n */\n\nimport { z } from \"zod\";\nimport schemaJson from \"executable-stories-core/schemas/story-report-v1.json\" with { type: \"json\" };\n\nexport { STORY_REPORT_SCHEMA_MAJOR } from \"./version\";\n\n// z.fromJSONSchema (experimental in Zod 4.x) can't translate DocHtml's nested\n// `oneOf` (the exactly-one-of path/url/content constraint) and rejects every\n// html doc entry. The on-disk schema keeps that constraint for Ajv + the\n// machine contract; here we drop it from the in-memory copy the runtime\n// validator is built from. The React DocHtml component already resolves\n// precedence (content → url → path), so the looser runtime check is safe.\nconst schemaForZod = structuredClone(schemaJson) as {\n $defs?: { DocHtml?: { oneOf?: unknown } };\n};\nif (schemaForZod.$defs?.DocHtml) {\n delete schemaForZod.$defs.DocHtml.oneOf;\n}\n\nconst compiled = z.fromJSONSchema(schemaForZod as Parameters<typeof z.fromJSONSchema>[0]);\n\nexport const storyReportSchema = compiled;\nexport type StoryReportSchemaShape = z.infer<typeof compiled>;\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://executable-stories.dev/schemas/story-report-v1.schema.json\",\n \"title\": \"StoryReport\",\n \"description\": \"Pre-grouped, denormalized report shape consumed by UI renderers (React, Svelte, Vue, etc.). Stable public contract \\u2014 additive-only within a major. Distinct from internal TestRunResult.\",\n \"type\": \"object\",\n \"$ref\": \"#/$defs/StoryReport\",\n \"$defs\": {\n \"StoryReport\": {\n \"type\": \"object\",\n \"description\": \"Top-level report containing all features, runtime metadata, and a pre-computed summary.\",\n \"properties\": {\n \"schemaVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^1\\\\.[0-9]+$\",\n \"description\": \"Schema version as 'major.minor'. Major bumps are breaking; minors are additive-only. UI packages must accept any 1.x.\"\n },\n \"runId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Unique deterministic identifier for this run.\"\n },\n \"startedAtMs\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"description\": \"Run start time as Unix epoch milliseconds.\"\n },\n \"finishedAtMs\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"description\": \"Run finish time as Unix epoch milliseconds.\"\n },\n \"durationMs\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"description\": \"Total run duration in milliseconds.\"\n },\n \"projectRoot\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Absolute path to the project root (for context only; relative paths in features.sourceFile are preferred).\"\n },\n \"packageVersion\": {\n \"type\": \"string\",\n \"description\": \"Version of the package under test, if known.\"\n },\n \"gitSha\": {\n \"type\": \"string\",\n \"description\": \"Git commit SHA at the time of the run.\"\n },\n \"ci\": {\n \"$ref\": \"#/$defs/CIInfo\"\n },\n \"coverage\": {\n \"$ref\": \"#/$defs/CoverageSummary\"\n },\n \"summary\": {\n \"$ref\": \"#/$defs/Summary\",\n \"description\": \"Pre-computed counts across all features and scenarios.\"\n },\n \"features\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Feature\"\n },\n \"description\": \"Features grouped by sourceFile, sorted by title.\"\n }\n },\n \"required\": [\n \"schemaVersion\",\n \"runId\",\n \"startedAtMs\",\n \"finishedAtMs\",\n \"durationMs\",\n \"projectRoot\",\n \"summary\",\n \"features\"\n ],\n \"additionalProperties\": false\n },\n \"Summary\": {\n \"type\": \"object\",\n \"description\": \"Counts by status. Sums equal 'total'.\",\n \"properties\": {\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"passed\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"failed\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"skipped\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"pending\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"durationMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"required\": [\n \"total\",\n \"passed\",\n \"failed\",\n \"skipped\",\n \"pending\",\n \"durationMs\"\n ],\n \"additionalProperties\": false\n },\n \"Feature\": {\n \"type\": \"object\",\n \"description\": \"A group of scenarios from the same source file.\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Stable slug derived from the relative source path. Suitable for use as a deep-link anchor.\"\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Display title. Derived from describe block when present, otherwise the file basename.\"\n },\n \"sourceFile\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Source path, relative to projectRoot when possible.\"\n },\n \"summary\": {\n \"$ref\": \"#/$defs/Summary\"\n },\n \"scenarios\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Scenario\"\n },\n \"description\": \"Scenarios in this feature, in declaration order.\"\n }\n },\n \"required\": [\n \"id\",\n \"title\",\n \"sourceFile\",\n \"summary\",\n \"scenarios\"\n ],\n \"additionalProperties\": false\n },\n \"Scenario\": {\n \"type\": \"object\",\n \"description\": \"A single scenario with its steps, story-level doc entries, and attachments.\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Stable identifier: '<feature.id>--<slug-of-title>'. Suitable for use as a deep-link anchor.\"\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"status\": {\n \"$ref\": \"#/$defs/TestStatus\"\n },\n \"planned\": {\n \"type\": \"boolean\",\n \"description\": \"True for scenarios authored with the framework's todo modifier (e.g. it.todo): specified behavior with no implementation yet. Canonical status stays 'pending'; this flags why.\"\n },\n \"durationMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Normalized tags, deduplicated, lowercased.\"\n },\n \"tickets\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Ticket\"\n }\n },\n \"covers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Product-code paths/globs this scenario exercises.\"\n },\n \"sourceLine\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"errorMessage\": {\n \"type\": \"string\"\n },\n \"errorStack\": {\n \"type\": \"string\"\n },\n \"retry\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"retries\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"docEntries\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n },\n \"description\": \"Story-level doc entries (rendered before steps).\"\n },\n \"steps\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Step\"\n }\n },\n \"attachments\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Attachment\"\n }\n },\n \"otelSpans\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/OtelSpan\"\n }\n }\n },\n \"required\": [\n \"id\",\n \"title\",\n \"status\",\n \"durationMs\",\n \"tags\",\n \"retry\",\n \"retries\",\n \"docEntries\",\n \"steps\",\n \"attachments\"\n ],\n \"additionalProperties\": false\n },\n \"Step\": {\n \"type\": \"object\",\n \"description\": \"A single BDD step.\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"index\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"keyword\": {\n \"$ref\": \"#/$defs/StepKeyword\"\n },\n \"text\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"$ref\": \"#/$defs/TestStatus\"\n },\n \"durationMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"errorMessage\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"$ref\": \"#/$defs/StepMode\"\n },\n \"docEntries\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n },\n \"description\": \"Doc entries attached to this step.\"\n }\n },\n \"required\": [\n \"id\",\n \"index\",\n \"keyword\",\n \"text\",\n \"status\",\n \"durationMs\",\n \"docEntries\"\n ],\n \"additionalProperties\": false\n },\n \"StepKeyword\": {\n \"type\": \"string\",\n \"enum\": [\n \"Given\",\n \"When\",\n \"Then\",\n \"And\",\n \"But\"\n ]\n },\n \"StepMode\": {\n \"type\": \"string\",\n \"enum\": [\n \"normal\",\n \"skip\",\n \"only\",\n \"todo\",\n \"fails\",\n \"concurrent\"\n ]\n },\n \"TestStatus\": {\n \"type\": \"string\",\n \"enum\": [\n \"passed\",\n \"failed\",\n \"skipped\",\n \"pending\"\n ]\n },\n \"Ticket\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"additionalProperties\": false\n },\n \"Attachment\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"mediaType\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"body\": {\n \"type\": \"string\"\n },\n \"contentEncoding\": {\n \"type\": \"string\",\n \"enum\": [\n \"BASE64\",\n \"IDENTITY\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"mediaType\",\n \"body\",\n \"contentEncoding\"\n ],\n \"additionalProperties\": false\n },\n \"CIInfo\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n },\n \"buildNumber\": {\n \"type\": \"string\"\n },\n \"branch\": {\n \"type\": \"string\"\n },\n \"commitSha\": {\n \"type\": \"string\"\n },\n \"prNumber\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"additionalProperties\": false\n },\n \"CoverageSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"linesPct\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 100\n },\n \"branchesPct\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 100\n },\n \"functionsPct\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 100\n },\n \"statementsPct\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 100\n }\n },\n \"additionalProperties\": false\n },\n \"DocPhase\": {\n \"type\": \"string\",\n \"enum\": [\n \"static\",\n \"runtime\"\n ]\n },\n \"DocEntry\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/DocNote\"\n },\n {\n \"$ref\": \"#/$defs/DocTag\"\n },\n {\n \"$ref\": \"#/$defs/DocKv\"\n },\n {\n \"$ref\": \"#/$defs/DocCode\"\n },\n {\n \"$ref\": \"#/$defs/DocTable\"\n },\n {\n \"$ref\": \"#/$defs/DocLink\"\n },\n {\n \"$ref\": \"#/$defs/DocSection\"\n },\n {\n \"$ref\": \"#/$defs/DocMermaid\"\n },\n {\n \"$ref\": \"#/$defs/DocScreenshot\"\n },\n {\n \"$ref\": \"#/$defs/DocVideo\"\n },\n {\n \"$ref\": \"#/$defs/DocHtml\"\n },\n {\n \"$ref\": \"#/$defs/DocState\"\n },\n {\n \"$ref\": \"#/$defs/DocCustom\"\n }\n ]\n },\n \"DocNote\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"note\"\n },\n \"text\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"text\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocTag\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"tag\"\n },\n \"names\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"names\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocKv\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"kv\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"value\": {},\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"label\",\n \"value\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocCode\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"code\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"content\": {\n \"type\": \"string\"\n },\n \"lang\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"label\",\n \"content\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocTable\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"table\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"columns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"rows\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"label\",\n \"columns\",\n \"rows\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocLink\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"link\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"label\",\n \"url\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocSection\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"section\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"markdown\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"title\",\n \"markdown\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocMermaid\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"mermaid\"\n },\n \"code\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"code\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocScreenshot\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"screenshot\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"alt\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"path\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocVideo\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"video\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"caption\": {\n \"type\": \"string\"\n },\n \"poster\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"path\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocHtml\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"html\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n },\n \"content\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"height\": {\n \"oneOf\": [\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"string\"\n }\n ]\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"phase\"\n ],\n \"additionalProperties\": false,\n \"oneOf\": [\n {\n \"required\": [\n \"path\"\n ]\n },\n {\n \"required\": [\n \"url\"\n ]\n },\n {\n \"required\": [\n \"content\"\n ]\n }\n ]\n },\n \"DocState\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"state\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"value\": {},\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"value\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocCustom\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"custom\"\n },\n \"type\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"data\": {},\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"type\",\n \"data\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"OtelSpan\": {\n \"type\": \"object\",\n \"required\": [\n \"spanId\",\n \"name\",\n \"status\"\n ],\n \"properties\": {\n \"spanId\": {\n \"type\": \"string\"\n },\n \"parentSpanId\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"startTimeMs\": {\n \"type\": \"number\"\n },\n \"durationMs\": {\n \"type\": \"number\"\n },\n \"startTimeUnixNano\": {\n \"type\": \"number\"\n },\n \"endTimeUnixNano\": {\n \"type\": \"number\"\n },\n \"status\": {\n \"enum\": [\n \"ok\",\n \"error\",\n \"unset\"\n ]\n },\n \"statusMessage\": {\n \"type\": \"string\"\n },\n \"attributes\": {\n \"type\": \"object\"\n }\n },\n \"additionalProperties\": false\n }\n }\n}\n","/**\n * The supported StoryReport schema major version, factored out of\n * story-report.schema.ts so the client island can do a cheap version check\n * WITHOUT importing the Zod schema module (which evaluates z.fromJSONSchema at\n * module load and pulls ~315kb of zod + locales into the bundle).\n */\nexport const STORY_REPORT_SCHEMA_MAJOR = 1 as const;\n","/**\n * parseStoryReport — boundary validator. Accepts unknown input (file contents,\n * fetch body, prop) and returns a Result-typed StoryReport.\n */\n\nimport type { StoryReport } from \"executable-stories-core\";\nimport type { Result } from \"../result\";\nimport { ok, err } from \"../result\";\nimport { storyReportSchema, STORY_REPORT_SCHEMA_MAJOR } from \"./story-report.schema\";\n\nexport function parseStoryReport(input: unknown): Result<StoryReport> {\n if (input === null || typeof input !== \"object\") {\n return err({\n message: \"Expected a StoryReport object.\",\n code: \"INVALID_INPUT\",\n });\n }\n\n const versionRaw = (input as { schemaVersion?: unknown }).schemaVersion;\n if (typeof versionRaw === \"string\") {\n const major = versionRaw.split(\".\")[0];\n if (major !== String(STORY_REPORT_SCHEMA_MAJOR)) {\n return err({\n message: `Schema major ${major} is not supported by this version of executable-stories-react (expected ${STORY_REPORT_SCHEMA_MAJOR}.x). Upgrade the package.`,\n code: \"SCHEMA_VERSION_MISMATCH\",\n });\n }\n }\n\n const parsed = storyReportSchema.safeParse(input);\n if (parsed.success) {\n return ok(parsed.data as StoryReport);\n }\n\n const issues = parsed.error.issues.map((i) => ({\n path: i.path.join(\".\") || \"/\",\n message: i.message,\n }));\n\n return err({\n message: `StoryReport failed validation (${issues.length} issue${issues.length === 1 ? \"\" : \"s\"}).`,\n code: \"VALIDATION_FAILED\",\n issues,\n });\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/result.ts","../src/schema/story-report.schema.ts","../../executable-stories-core/schemas/story-report-v1.json","../src/schema/version.ts","../src/schema/parse.ts"],"sourcesContent":["/**\n * Result<T> — explicit success/error type matching the cookbook convention.\n *\n * Used at the boundary where a StoryReport is parsed: the consumer hands us\n * an unknown value (file contents, fetch body, prop) and we return a Result.\n */\nimport type { StoryReport } from \"executable-stories-core\";\n\nexport type Result<T, E = ReportParseError> =\n | { ok: true; data: T }\n | { ok: false; error: E };\n\nexport interface ReportParseError {\n message: string;\n code: ReportParseErrorCode;\n issues?: readonly { path: string; message: string }[];\n}\n\nexport type ReportParseErrorCode =\n | \"INVALID_INPUT\"\n | \"SCHEMA_VERSION_MISMATCH\"\n | \"VALIDATION_FAILED\";\n\nexport const ok = <T>(data: T): Result<T> => ({ ok: true, data });\nexport const err = (error: ReportParseError): Result<never> => ({ ok: false, error });\n\n/**\n * Normalize the `StoryReport | Result<StoryReport>` prop accepted across the\n * render entrypoints (`Report`, `ReportInteractive`, `renderReportToHtml`) into\n * a single `Result`. A bare report becomes `ok(report)`; an already-wrapped\n * value passes through. One place owns the \"is this a Result?\" discrimination.\n */\nexport function unwrapReport(value: StoryReport | Result<StoryReport>): Result<StoryReport> {\n if (\n typeof value === \"object\" &&\n value !== null &&\n \"ok\" in value &&\n typeof (value as { ok: unknown }).ok === \"boolean\"\n ) {\n return value as Result<StoryReport>;\n }\n return ok(value as StoryReport);\n}\n","/**\n * StoryReport runtime Zod schema, derived from the canonical JSON Schema\n * at executable-stories-core/schemas/story-report-v1.json.\n *\n * Uses z.fromJSONSchema (experimental in Zod 4.x). If the API changes upstream,\n * only this file needs updating — the rest of the package consumes\n * `storyReportSchema` and `StoryReportSchemaShape` via parse.ts.\n *\n * The JSON Schema is bundled at build time by tsup (resolveJsonModule).\n */\n\nimport { z } from \"zod\";\nimport schemaJson from \"executable-stories-core/schemas/story-report-v1.json\" with { type: \"json\" };\n\nexport { STORY_REPORT_SCHEMA_MAJOR } from \"./version\";\n\n// z.fromJSONSchema (experimental in Zod 4.x) can't translate DocHtml's nested\n// `oneOf` (the exactly-one-of path/url/content constraint) and rejects every\n// html doc entry. The on-disk schema keeps that constraint for Ajv + the\n// machine contract; here we drop it from the in-memory copy the runtime\n// validator is built from. The React DocHtml component already resolves\n// precedence (content → url → path), so the looser runtime check is safe.\nconst schemaForZod = structuredClone(schemaJson) as {\n $defs?: { DocHtml?: { oneOf?: unknown } };\n};\nif (schemaForZod.$defs?.DocHtml) {\n delete schemaForZod.$defs.DocHtml.oneOf;\n}\n\nconst compiled = z.fromJSONSchema(schemaForZod as Parameters<typeof z.fromJSONSchema>[0]);\n\nexport const storyReportSchema = compiled;\nexport type StoryReportSchemaShape = z.infer<typeof compiled>;\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://executable-stories.dev/schemas/story-report-v1.schema.json\",\n \"title\": \"StoryReport\",\n \"description\": \"Pre-grouped, denormalized report shape consumed by UI renderers (React, Svelte, Vue, etc.). Stable public contract \\u2014 additive-only within a major. Distinct from internal TestRunResult.\",\n \"type\": \"object\",\n \"$ref\": \"#/$defs/StoryReport\",\n \"$defs\": {\n \"StoryReport\": {\n \"type\": \"object\",\n \"description\": \"Top-level report containing all features, runtime metadata, and a pre-computed summary.\",\n \"properties\": {\n \"schemaVersion\": {\n \"type\": \"string\",\n \"pattern\": \"^1\\\\.[0-9]+$\",\n \"description\": \"Schema version as 'major.minor'. Major bumps are breaking; minors are additive-only. UI packages must accept any 1.x.\"\n },\n \"runId\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Unique deterministic identifier for this run.\"\n },\n \"startedAtMs\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"description\": \"Run start time as Unix epoch milliseconds.\"\n },\n \"finishedAtMs\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"description\": \"Run finish time as Unix epoch milliseconds.\"\n },\n \"durationMs\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"description\": \"Total run duration in milliseconds.\"\n },\n \"projectRoot\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Absolute path to the project root (for context only; relative paths in features.sourceFile are preferred).\"\n },\n \"packageVersion\": {\n \"type\": \"string\",\n \"description\": \"Version of the package under test, if known.\"\n },\n \"gitSha\": {\n \"type\": \"string\",\n \"description\": \"Git commit SHA at the time of the run.\"\n },\n \"ci\": {\n \"$ref\": \"#/$defs/CIInfo\"\n },\n \"coverage\": {\n \"$ref\": \"#/$defs/CoverageSummary\"\n },\n \"summary\": {\n \"$ref\": \"#/$defs/Summary\",\n \"description\": \"Pre-computed counts across all features and scenarios.\"\n },\n \"features\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Feature\"\n },\n \"description\": \"Features grouped by sourceFile, sorted by title.\"\n }\n },\n \"required\": [\n \"schemaVersion\",\n \"runId\",\n \"startedAtMs\",\n \"finishedAtMs\",\n \"durationMs\",\n \"projectRoot\",\n \"summary\",\n \"features\"\n ],\n \"additionalProperties\": false\n },\n \"Summary\": {\n \"type\": \"object\",\n \"description\": \"Counts by status. Sums equal 'total'.\",\n \"properties\": {\n \"total\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"passed\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"failed\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"skipped\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"pending\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"durationMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n }\n },\n \"required\": [\n \"total\",\n \"passed\",\n \"failed\",\n \"skipped\",\n \"pending\",\n \"durationMs\"\n ],\n \"additionalProperties\": false\n },\n \"Feature\": {\n \"type\": \"object\",\n \"description\": \"A group of scenarios from the same source file.\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Stable slug derived from the relative source path. Suitable for use as a deep-link anchor.\"\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Display title. Comes from story.feature(...) when declared, otherwise the describe block or file basename.\"\n },\n \"sourceFile\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Source path, relative to projectRoot when possible.\"\n },\n \"summary\": {\n \"$ref\": \"#/$defs/Summary\"\n },\n \"scenarios\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Scenario\"\n },\n \"description\": \"Scenarios in this feature, in declaration order.\"\n },\n \"kind\": {\n \"type\": \"string\",\n \"enum\": [\n \"feature\",\n \"ability\",\n \"business-need\"\n ],\n \"description\": \"How the feature was declared. Absent when the title was derived rather than declared.\"\n },\n \"narrative\": {\n \"type\": \"string\",\n \"description\": \"Markdown explaining why the feature exists and who it serves.\"\n },\n \"glossary\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/GlossaryTerm\"\n },\n \"description\": \"Terms this feature defines, linked wherever they appear in scenario text.\"\n }\n },\n \"required\": [\n \"id\",\n \"title\",\n \"sourceFile\",\n \"summary\",\n \"scenarios\"\n ],\n \"additionalProperties\": false\n },\n \"Scenario\": {\n \"type\": \"object\",\n \"description\": \"A single scenario with its steps, story-level doc entries, and attachments.\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1,\n \"description\": \"Stable identifier: '<feature.id>--<slug-of-title>'. Suitable for use as a deep-link anchor.\"\n },\n \"title\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"status\": {\n \"$ref\": \"#/$defs/TestStatus\"\n },\n \"planned\": {\n \"type\": \"boolean\",\n \"description\": \"True for scenarios authored with the framework's todo modifier (e.g. it.todo): specified behavior with no implementation yet. Canonical status stays 'pending'; this flags why.\"\n },\n \"durationMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"tags\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Normalized tags, deduplicated, lowercased.\"\n },\n \"tickets\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Ticket\"\n }\n },\n \"covers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"description\": \"Product-code paths/globs this scenario exercises.\"\n },\n \"sourceLine\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"errorMessage\": {\n \"type\": \"string\"\n },\n \"errorStack\": {\n \"type\": \"string\"\n },\n \"retry\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"retries\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"docEntries\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n },\n \"description\": \"Story-level doc entries (rendered before steps).\"\n },\n \"steps\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Step\"\n }\n },\n \"attachments\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/Attachment\"\n }\n },\n \"otelSpans\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/OtelSpan\"\n }\n }\n },\n \"required\": [\n \"id\",\n \"title\",\n \"status\",\n \"durationMs\",\n \"tags\",\n \"retry\",\n \"retries\",\n \"docEntries\",\n \"steps\",\n \"attachments\"\n ],\n \"additionalProperties\": false\n },\n \"Step\": {\n \"type\": \"object\",\n \"description\": \"A single BDD step.\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"index\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"keyword\": {\n \"$ref\": \"#/$defs/StepKeyword\"\n },\n \"text\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"$ref\": \"#/$defs/TestStatus\"\n },\n \"durationMs\": {\n \"type\": \"number\",\n \"minimum\": 0\n },\n \"errorMessage\": {\n \"type\": \"string\"\n },\n \"mode\": {\n \"$ref\": \"#/$defs/StepMode\"\n },\n \"docEntries\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n },\n \"description\": \"Doc entries attached to this step.\"\n }\n },\n \"required\": [\n \"id\",\n \"index\",\n \"keyword\",\n \"text\",\n \"status\",\n \"durationMs\",\n \"docEntries\"\n ],\n \"additionalProperties\": false\n },\n \"StepKeyword\": {\n \"type\": \"string\",\n \"enum\": [\n \"Given\",\n \"When\",\n \"Then\",\n \"And\",\n \"But\"\n ]\n },\n \"StepMode\": {\n \"type\": \"string\",\n \"enum\": [\n \"normal\",\n \"skip\",\n \"only\",\n \"todo\",\n \"fails\",\n \"concurrent\"\n ]\n },\n \"TestStatus\": {\n \"type\": \"string\",\n \"enum\": [\n \"passed\",\n \"failed\",\n \"skipped\",\n \"pending\"\n ]\n },\n \"Ticket\": {\n \"type\": \"object\",\n \"properties\": {\n \"id\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"url\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\"\n ],\n \"additionalProperties\": false\n },\n \"Attachment\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"mediaType\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"body\": {\n \"type\": \"string\"\n },\n \"contentEncoding\": {\n \"type\": \"string\",\n \"enum\": [\n \"BASE64\",\n \"IDENTITY\"\n ]\n }\n },\n \"required\": [\n \"name\",\n \"mediaType\",\n \"body\",\n \"contentEncoding\"\n ],\n \"additionalProperties\": false\n },\n \"CIInfo\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n },\n \"buildNumber\": {\n \"type\": \"string\"\n },\n \"branch\": {\n \"type\": \"string\"\n },\n \"commitSha\": {\n \"type\": \"string\"\n },\n \"prNumber\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\"\n ],\n \"additionalProperties\": false\n },\n \"CoverageSummary\": {\n \"type\": \"object\",\n \"properties\": {\n \"linesPct\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 100\n },\n \"branchesPct\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 100\n },\n \"functionsPct\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 100\n },\n \"statementsPct\": {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 100\n }\n },\n \"additionalProperties\": false\n },\n \"DocPhase\": {\n \"type\": \"string\",\n \"enum\": [\n \"static\",\n \"runtime\"\n ]\n },\n \"DocEntry\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/$defs/DocNote\"\n },\n {\n \"$ref\": \"#/$defs/DocTag\"\n },\n {\n \"$ref\": \"#/$defs/DocKv\"\n },\n {\n \"$ref\": \"#/$defs/DocCode\"\n },\n {\n \"$ref\": \"#/$defs/DocTable\"\n },\n {\n \"$ref\": \"#/$defs/DocLink\"\n },\n {\n \"$ref\": \"#/$defs/DocSection\"\n },\n {\n \"$ref\": \"#/$defs/DocMermaid\"\n },\n {\n \"$ref\": \"#/$defs/DocScreenshot\"\n },\n {\n \"$ref\": \"#/$defs/DocVideo\"\n },\n {\n \"$ref\": \"#/$defs/DocHtml\"\n },\n {\n \"$ref\": \"#/$defs/DocState\"\n },\n {\n \"$ref\": \"#/$defs/DocCustom\"\n }\n ]\n },\n \"DocNote\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"note\"\n },\n \"text\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"text\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocTag\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"tag\"\n },\n \"names\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"names\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocKv\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"kv\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"value\": {},\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"label\",\n \"value\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocCode\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"code\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"content\": {\n \"type\": \"string\"\n },\n \"lang\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"label\",\n \"content\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocTable\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"table\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"columns\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"rows\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"label\",\n \"columns\",\n \"rows\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocLink\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"link\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"label\",\n \"url\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocSection\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"section\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"markdown\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"title\",\n \"markdown\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocMermaid\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"mermaid\"\n },\n \"code\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"code\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocScreenshot\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"screenshot\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"alt\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"path\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocVideo\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"video\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"caption\": {\n \"type\": \"string\"\n },\n \"poster\": {\n \"type\": \"string\"\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"path\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocHtml\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"html\"\n },\n \"path\": {\n \"type\": \"string\"\n },\n \"url\": {\n \"type\": \"string\"\n },\n \"content\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"height\": {\n \"oneOf\": [\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"string\"\n }\n ]\n },\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"phase\"\n ],\n \"additionalProperties\": false,\n \"oneOf\": [\n {\n \"required\": [\n \"path\"\n ]\n },\n {\n \"required\": [\n \"url\"\n ]\n },\n {\n \"required\": [\n \"content\"\n ]\n }\n ]\n },\n \"DocState\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"state\"\n },\n \"label\": {\n \"type\": \"string\"\n },\n \"value\": {},\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"value\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"DocCustom\": {\n \"type\": \"object\",\n \"properties\": {\n \"kind\": {\n \"const\": \"custom\"\n },\n \"type\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"data\": {},\n \"phase\": {\n \"$ref\": \"#/$defs/DocPhase\"\n },\n \"children\": {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/$defs/DocEntry\"\n }\n }\n },\n \"required\": [\n \"kind\",\n \"type\",\n \"data\",\n \"phase\"\n ],\n \"additionalProperties\": false\n },\n \"OtelSpan\": {\n \"type\": \"object\",\n \"required\": [\n \"spanId\",\n \"name\",\n \"status\"\n ],\n \"properties\": {\n \"spanId\": {\n \"type\": \"string\"\n },\n \"parentSpanId\": {\n \"type\": \"string\"\n },\n \"name\": {\n \"type\": \"string\"\n },\n \"startTimeMs\": {\n \"type\": \"number\"\n },\n \"durationMs\": {\n \"type\": \"number\"\n },\n \"startTimeUnixNano\": {\n \"type\": \"number\"\n },\n \"endTimeUnixNano\": {\n \"type\": \"number\"\n },\n \"status\": {\n \"enum\": [\n \"ok\",\n \"error\",\n \"unset\"\n ]\n },\n \"statusMessage\": {\n \"type\": \"string\"\n },\n \"attributes\": {\n \"type\": \"object\"\n }\n },\n \"additionalProperties\": false\n },\n \"GlossaryTerm\": {\n \"type\": \"object\",\n \"description\": \"One glossary entry: a term the scenarios use and what it means.\",\n \"properties\": {\n \"term\": {\n \"type\": \"string\",\n \"minLength\": 1\n },\n \"definition\": {\n \"type\": \"string\",\n \"minLength\": 1\n }\n },\n \"required\": [\n \"term\",\n \"definition\"\n ],\n \"additionalProperties\": false\n }\n }\n}\n","/**\n * The supported StoryReport schema major version, factored out of\n * story-report.schema.ts so the client island can do a cheap version check\n * WITHOUT importing the Zod schema module (which evaluates z.fromJSONSchema at\n * module load and pulls ~315kb of zod + locales into the bundle).\n */\nexport const STORY_REPORT_SCHEMA_MAJOR = 1 as const;\n","/**\n * parseStoryReport — boundary validator. Accepts unknown input (file contents,\n * fetch body, prop) and returns a Result-typed StoryReport.\n */\n\nimport type { StoryReport } from \"executable-stories-core\";\nimport type { Result } from \"../result\";\nimport { ok, err } from \"../result\";\nimport { storyReportSchema, STORY_REPORT_SCHEMA_MAJOR } from \"./story-report.schema\";\n\nexport function parseStoryReport(input: unknown): Result<StoryReport> {\n if (input === null || typeof input !== \"object\") {\n return err({\n message: \"Expected a StoryReport object.\",\n code: \"INVALID_INPUT\",\n });\n }\n\n const versionRaw = (input as { schemaVersion?: unknown }).schemaVersion;\n if (typeof versionRaw === \"string\") {\n const major = versionRaw.split(\".\")[0];\n if (major !== String(STORY_REPORT_SCHEMA_MAJOR)) {\n return err({\n message: `Schema major ${major} is not supported by this version of executable-stories-react (expected ${STORY_REPORT_SCHEMA_MAJOR}.x). Upgrade the package.`,\n code: \"SCHEMA_VERSION_MISMATCH\",\n });\n }\n }\n\n const parsed = storyReportSchema.safeParse(input);\n if (parsed.success) {\n return ok(parsed.data as StoryReport);\n }\n\n const issues = parsed.error.issues.map((i) => ({\n path: i.path.join(\".\") || \"/\",\n message: i.message,\n }));\n\n return err({\n message: `StoryReport failed validation (${issues.length} issue${issues.length === 1 ? \"\" : \"s\"}).`,\n code: \"VALIDATION_FAILED\",\n issues,\n });\n}\n"],"mappings":"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","names":[]}
|