executable-stories-formatters 1.5.0 → 1.8.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "executable-stories-formatters",
3
- "version": "1.5.0",
3
+ "version": "1.8.0",
4
4
  "description": "Cucumber-compatible report formats (HTML, Markdown, JUnit XML, Cucumber JSON) for executable-stories test results.",
5
5
  "author": "Jag Reehal <jag@jagreehal.com>",
6
6
  "license": "Apache-2.0",
@@ -62,7 +62,7 @@
62
62
  "yaml": "^2.9.0",
63
63
  "react": "^19.2.7",
64
64
  "react-dom": "^19.2.7",
65
- "executable-stories-react": "0.6.0"
65
+ "executable-stories-react": "0.8.0"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@faker-js/faker": "^10.4.0",
@@ -117,7 +117,18 @@
117
117
  "steps": [
118
118
  {
119
119
  "keyword": "Given",
120
- "text": "a cart with 2 items totaling $59.98"
120
+ "text": "a cart with 2 items totaling $59.98",
121
+ "docs": [
122
+ {
123
+ "kind": "state",
124
+ "label": "Basket",
125
+ "value": {
126
+ "items": 2,
127
+ "total": 59.98
128
+ },
129
+ "phase": "runtime"
130
+ }
131
+ ]
121
132
  },
122
133
  {
123
134
  "keyword": "When",
@@ -125,7 +136,26 @@
125
136
  },
126
137
  {
127
138
  "keyword": "Then",
128
- "text": "the order is confirmed"
139
+ "text": "the order is confirmed",
140
+ "docs": [
141
+ {
142
+ "kind": "state",
143
+ "label": "Basket",
144
+ "value": {
145
+ "items": 0,
146
+ "total": 0,
147
+ "orderId": "ORD-1001"
148
+ },
149
+ "phase": "runtime"
150
+ },
151
+ {
152
+ "kind": "state",
153
+ "value": {
154
+ "emailQueue": 1
155
+ },
156
+ "phase": "runtime"
157
+ }
158
+ ]
129
159
  },
130
160
  {
131
161
  "keyword": "And",
@@ -117,7 +117,18 @@
117
117
  "steps": [
118
118
  {
119
119
  "keyword": "Given",
120
- "text": "a cart with 2 items totaling $59.98"
120
+ "text": "a cart with 2 items totaling $59.98",
121
+ "docs": [
122
+ {
123
+ "kind": "state",
124
+ "label": "Basket",
125
+ "value": {
126
+ "items": 2,
127
+ "total": 59.98
128
+ },
129
+ "phase": "runtime"
130
+ }
131
+ ]
121
132
  },
122
133
  {
123
134
  "keyword": "When",
@@ -125,7 +136,26 @@
125
136
  },
126
137
  {
127
138
  "keyword": "Then",
128
- "text": "the order is confirmed"
139
+ "text": "the order is confirmed",
140
+ "docs": [
141
+ {
142
+ "kind": "state",
143
+ "label": "Basket",
144
+ "value": {
145
+ "items": 0,
146
+ "total": 0,
147
+ "orderId": "ORD-1001"
148
+ },
149
+ "phase": "runtime"
150
+ },
151
+ {
152
+ "kind": "state",
153
+ "value": {
154
+ "emailQueue": 1
155
+ },
156
+ "phase": "runtime"
157
+ }
158
+ ]
129
159
  },
130
160
  {
131
161
  "keyword": "And",
@@ -727,6 +727,38 @@
727
727
  ],
728
728
  "additionalProperties": false
729
729
  },
730
+ {
731
+ "type": "object",
732
+ "description": "State snapshot captured at a step (data storyboard frame; diffed label-to-label across steps).",
733
+ "properties": {
734
+ "kind": {
735
+ "const": "state"
736
+ },
737
+ "label": {
738
+ "type": "string",
739
+ "description": "Entity name ('Basket') \u2014 diff identity across steps."
740
+ },
741
+ "value": {
742
+ "description": "JSON-serializable snapshot of the state at this step."
743
+ },
744
+ "phase": {
745
+ "$ref": "#/$defs/DocPhase"
746
+ },
747
+ "children": {
748
+ "type": "array",
749
+ "items": {
750
+ "$ref": "#/$defs/DocEntry"
751
+ },
752
+ "description": "Nested child doc entries for grouping."
753
+ }
754
+ },
755
+ "required": [
756
+ "kind",
757
+ "value",
758
+ "phase"
759
+ ],
760
+ "additionalProperties": false
761
+ },
730
762
  {
731
763
  "type": "object",
732
764
  "description": "Custom documentation entry with arbitrary data.",
@@ -32,6 +32,25 @@ export default defineExecutableStories({
32
32
  // { name: 'api', label: 'API', source: '../apps/api/reports/raw-run.json' },
33
33
  // ],
34
34
 
35
+ // Audience lenses (optional): each view mounts a filtered, re-grouped index
36
+ // at its own URL — same tests, a different lens per audience. Tag scenarios
37
+ // in your tests (e.g. tags: ['audience:stakeholder']) and filter on them:
38
+ // views: [
39
+ // { base: '/for/product', include: { tags: ['audience:stakeholder'] }, groupBy: 'tag' },
40
+ // { base: '/for/design', include: { tags: ['storyboard'] } },
41
+ // { base: '/for/support', include: { tags: ['support'] } },
42
+ // ],
43
+
44
+ // Journeys are on by default at /journeys: tag scenarios with
45
+ // `journey:<id>:<order>` (e.g. tags: ['journey:guest-checkout:1']) and each
46
+ // id becomes an ordered multi-scenario walkthrough page.
47
+ // journeysBase: '/journeys',
48
+
49
+ // The UI-state catalog is on by default at /states: tag scenarios with
50
+ // `state:<name>` (plus optional `viewport:mobile` / `viewport:desktop`) and
51
+ // they appear as a thumbnail grid, viewport variants side by side.
52
+ // statesBase: '/states',
53
+
35
54
  // Theme the story pages (optional). `preset` picks a built-in palette
36
55
  // ('default' | 'terminal' | 'minimal' | 'vibrant'); `accent` is a shorthand;
37
56
  // `tokens` overrides any individual token (accent, pass, fail, warn, fg,