tuffgal 0.1.0-alpha.11 → 0.1.0-alpha.13
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/CHANGELOG.md +20 -1
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +21 -2
- package/dist/cli.js.map +1 -1
- package/dist/reporter/assets/report.css +130 -52
- package/dist/reporter/assets/report.js +173 -56
- package/dist/reporter/template.d.ts.map +1 -1
- package/dist/reporter/template.js +75 -61
- package/dist/reporter/template.js.map +1 -1
- package/dist/runner/run.d.ts +16 -1
- package/dist/runner/run.d.ts.map +1 -1
- package/dist/runner/run.js +61 -42
- package/dist/runner/run.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,23 @@ this project uses [Pride Versioning](https://pridever.org) → `PROUD.DEFAULT.SH
|
|
|
8
8
|
|
|
9
9
|
_Nothing just yet_
|
|
10
10
|
|
|
11
|
+
## [0.1.0-alpha.13] — 2026-06-30
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
HTML report filters have been merged with the summary row. Plus a few other
|
|
16
|
+
miscellaneous UI/UX improvements.
|
|
17
|
+
|
|
18
|
+
## [0.1.0-alpha.12] — 2026-06-27
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
`tuffgal` did nothing when launched through the installed `.bin` symlink,
|
|
23
|
+
e.g. `npm run`, `npx`, or a bare `tuffgal`. The entry-point check compared
|
|
24
|
+
the unresolved symlink path against the symlink-resolved module URL, so
|
|
25
|
+
`main()` never ran. The script now resolves `argv[1]` through realpath
|
|
26
|
+
before the comparison.
|
|
27
|
+
|
|
11
28
|
## [0.1.0-alpha.11] — 2026-06-26
|
|
12
29
|
|
|
13
30
|
### Added
|
|
@@ -170,7 +187,9 @@ styling or interactivity.
|
|
|
170
187
|
Initial public alpha. Tuffgal extracted from [Linklater](https://github.com/nschneble/linklater)'s
|
|
171
188
|
in-tree visual testing workspace.
|
|
172
189
|
|
|
173
|
-
[Unreleased]: https://github.com/nschneble/tuffgal/compare/v0.1.0-alpha.
|
|
190
|
+
[Unreleased]: https://github.com/nschneble/tuffgal/compare/v0.1.0-alpha.13...HEAD
|
|
191
|
+
[0.1.0-alpha.13]: https://github.com/nschneble/tuffgal/releases/tag/v0.1.0-alpha.13
|
|
192
|
+
[0.1.0-alpha.12]: https://github.com/nschneble/tuffgal/releases/tag/v0.1.0-alpha.12
|
|
174
193
|
[0.1.0-alpha.11]: https://github.com/nschneble/tuffgal/releases/tag/v0.1.0-alpha.11
|
|
175
194
|
[0.1.0-alpha.10]: https://github.com/nschneble/tuffgal/releases/tag/v0.1.0-alpha.10
|
|
176
195
|
[0.1.0-alpha.9]: https://github.com/nschneble/tuffgal/releases/tag/v0.1.0-alpha.9
|
package/dist/cli.d.ts
CHANGED
|
@@ -19,5 +19,6 @@ interface ParsedArguments {
|
|
|
19
19
|
workers?: number;
|
|
20
20
|
}
|
|
21
21
|
export declare function parseArguments(argv: string[]): ParsedArguments;
|
|
22
|
+
export declare function isMainEntry(moduleUrl: string, scriptPath: string | undefined): boolean;
|
|
22
23
|
export {};
|
|
23
24
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAUA,QAAA,MAAM,QAAQ,0DAA2D,CAAC;AAC1E,KAAK,OAAO,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAKzC,UAAU,eAAe;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CAgG9D;AAuID,wBAAgB,WAAW,CACzB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GAAG,SAAS,GAC7B,OAAO,CAWT"}
|
package/dist/cli.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { realpathSync } from 'node:fs';
|
|
2
3
|
import { pathToFileURL } from 'node:url';
|
|
3
4
|
import { approveAll } from "./runner/approve.js";
|
|
4
5
|
import { init } from "./commands/init.js";
|
|
@@ -218,8 +219,26 @@ async function main() {
|
|
|
218
219
|
}
|
|
219
220
|
// Only drive the CLI when run as the entry point. Importing this module (e.g.
|
|
220
221
|
// from a unit test exercising `parseArguments`) must not kick off a real run.
|
|
221
|
-
|
|
222
|
-
|
|
222
|
+
//
|
|
223
|
+
// `argv[1]` must be resolved through realpath before comparing: when installed,
|
|
224
|
+
// the `tuffgal` command is a symlink (`node_modules/.bin/tuffgal` ->
|
|
225
|
+
// `../tuffgal/dist/cli.js`). Node leaves that symlink unresolved in `argv[1]`
|
|
226
|
+
// but resolves it in `import.meta.url`, so a raw comparison never matches and
|
|
227
|
+
// `main()` silently never runs. Resolving both sides to the real file fixes it.
|
|
228
|
+
export function isMainEntry(moduleUrl, scriptPath) {
|
|
229
|
+
if (!scriptPath) {
|
|
230
|
+
return false;
|
|
231
|
+
}
|
|
232
|
+
let resolvedPath;
|
|
233
|
+
try {
|
|
234
|
+
resolvedPath = realpathSync(scriptPath);
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
resolvedPath = scriptPath;
|
|
238
|
+
}
|
|
239
|
+
return moduleUrl === pathToFileURL(resolvedPath).href;
|
|
240
|
+
}
|
|
241
|
+
if (isMainEntry(import.meta.url, process.argv[1])) {
|
|
223
242
|
main().catch((error) => {
|
|
224
243
|
process.stderr.write(`tuffgal error: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
225
244
|
process.exit(1);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -160,7 +160,7 @@ h2 {
|
|
|
160
160
|
.summary-list {
|
|
161
161
|
display: flex;
|
|
162
162
|
flex-wrap: wrap;
|
|
163
|
-
gap:
|
|
163
|
+
gap: 0.5rem;
|
|
164
164
|
margin: 0;
|
|
165
165
|
padding: 0.75rem 1rem;
|
|
166
166
|
list-style: none;
|
|
@@ -168,10 +168,6 @@ h2 {
|
|
|
168
168
|
border: 1px solid var(--border);
|
|
169
169
|
}
|
|
170
170
|
|
|
171
|
-
.summary-item:not(.coverage) + .summary-item.coverage {
|
|
172
|
-
margin-left: auto;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
171
|
.summary-item {
|
|
176
172
|
display: inline-flex;
|
|
177
173
|
align-items: center;
|
|
@@ -181,31 +177,77 @@ h2 {
|
|
|
181
177
|
|
|
182
178
|
.summary-item .count {
|
|
183
179
|
font-weight: 600;
|
|
180
|
+
color: var(--text-subtle);
|
|
184
181
|
}
|
|
185
182
|
|
|
186
|
-
|
|
187
|
-
|
|
183
|
+
/* Each status total is a single-select filter styled as a plain text link. The
|
|
184
|
+
word ("passed") is the only underlined link; its sibling count precedes it
|
|
185
|
+
outside the button. Resting is plain --text (1.4.3 text contrast, not the
|
|
186
|
+
1.4.11 non-text floor — no border to measure); hover and pressed tint the word
|
|
187
|
+
AND its underline the status color (text-decoration inherits currentColor, so
|
|
188
|
+
they carry a same-ratio underline). The visible count + word always show, and
|
|
189
|
+
the pressed state is never color-alone (1.4.1) — bold weight + a double
|
|
190
|
+
underline carry it independently. Target size ≥24×24 via min-height/min-width
|
|
191
|
+
(2.5.8). Stays a <button>: it filters in place, never navigates. */
|
|
192
|
+
.summary-filter {
|
|
193
|
+
display: inline-flex;
|
|
194
|
+
align-items: center;
|
|
195
|
+
gap: 0.5rem;
|
|
196
|
+
min-height: 24px;
|
|
197
|
+
min-width: 24px;
|
|
198
|
+
padding: 0 0.15rem;
|
|
199
|
+
line-height: 1.2;
|
|
200
|
+
background: none;
|
|
201
|
+
border: 0;
|
|
202
|
+
color: var(--text);
|
|
203
|
+
font: inherit;
|
|
204
|
+
cursor: pointer;
|
|
205
|
+
text-decoration: underline;
|
|
206
|
+
text-decoration-thickness: 1px;
|
|
207
|
+
text-underline-offset: 4.5px;
|
|
188
208
|
}
|
|
189
209
|
|
|
190
|
-
.summary-
|
|
191
|
-
|
|
210
|
+
.summary-filter[aria-pressed='true'] {
|
|
211
|
+
cursor: default;
|
|
212
|
+
user-select: none;
|
|
192
213
|
}
|
|
193
214
|
|
|
194
|
-
|
|
195
|
-
|
|
215
|
+
/* Hover + pressed tint the word its status color. The "all" total stays --text
|
|
216
|
+
on both: --accent equals --new, so tinting "all" blue would falsely imply the
|
|
217
|
+
"new" filter. Status colors clear 4.5:1 on --bg-elevated in both themes. */
|
|
218
|
+
.summary-item[data-status='pass'] .summary-filter:hover,
|
|
219
|
+
.summary-item[data-status='pass'] .summary-filter[aria-pressed='true'] {
|
|
220
|
+
color: var(--pass);
|
|
196
221
|
}
|
|
197
222
|
|
|
198
|
-
.summary-item[data-status='changed'] .
|
|
223
|
+
.summary-item[data-status='changed'] .summary-filter:hover,
|
|
224
|
+
.summary-item[data-status='changed'] .summary-filter[aria-pressed='true'] {
|
|
199
225
|
color: var(--changed);
|
|
200
226
|
}
|
|
201
227
|
|
|
202
|
-
.summary-item[data-status='failed'] .
|
|
228
|
+
.summary-item[data-status='failed'] .summary-filter:hover,
|
|
229
|
+
.summary-item[data-status='failed'] .summary-filter[aria-pressed='true'] {
|
|
203
230
|
color: var(--failed);
|
|
204
231
|
}
|
|
205
232
|
|
|
206
|
-
.summary-item
|
|
207
|
-
|
|
208
|
-
|
|
233
|
+
.summary-item[data-status='new'] .summary-filter:hover,
|
|
234
|
+
.summary-item[data-status='new'] .summary-filter[aria-pressed='true'] {
|
|
235
|
+
color: var(--new);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.summary-item[data-status='all'] .summary-filter:hover,
|
|
239
|
+
.summary-item[data-status='all'] .summary-filter[aria-pressed='true'] {
|
|
240
|
+
color: var(--text);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.summary-filter:hover,
|
|
244
|
+
.summary-filter[aria-pressed='true'] {
|
|
245
|
+
text-decoration-style: double;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.summary-filter:focus-visible {
|
|
249
|
+
outline: 2px solid var(--accent);
|
|
250
|
+
outline-offset: 2px;
|
|
209
251
|
}
|
|
210
252
|
|
|
211
253
|
.chip {
|
|
@@ -249,64 +291,72 @@ h2 {
|
|
|
249
291
|
}
|
|
250
292
|
}
|
|
251
293
|
|
|
252
|
-
|
|
294
|
+
/* The expand-all / collapse-all pair now lives at the right end of the summary
|
|
295
|
+
row (the slot the coverage stats vacated), pushed there by margin-left:auto
|
|
296
|
+
while staying the LAST flex children so DOM order matches the visual order. */
|
|
297
|
+
.story-bulk-toggle {
|
|
253
298
|
display: flex;
|
|
254
|
-
flex-wrap: wrap;
|
|
255
299
|
align-items: center;
|
|
256
|
-
gap: 0.
|
|
257
|
-
margin:
|
|
300
|
+
gap: 0.25rem;
|
|
301
|
+
margin-left: auto;
|
|
302
|
+
line-height: 24px;
|
|
303
|
+
font-size: 0.8125rem;
|
|
258
304
|
}
|
|
259
305
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
306
|
+
/* Link-styled verbs ("Expand" / "Collapse") — still <button>s, they act in
|
|
307
|
+
place. The underline is the affordance; verbs exceed 24px wide intrinsically,
|
|
308
|
+
so min-height alone carries 2.5.8. */
|
|
309
|
+
.story-bulk-toggle-button {
|
|
310
|
+
display: inline-flex;
|
|
263
311
|
align-items: center;
|
|
264
|
-
|
|
265
|
-
margin: 0;
|
|
312
|
+
min-height: 24px;
|
|
266
313
|
padding: 0;
|
|
314
|
+
background: none;
|
|
267
315
|
border: 0;
|
|
316
|
+
color: var(--text);
|
|
317
|
+
font: inherit;
|
|
318
|
+
cursor: pointer;
|
|
319
|
+
vertical-align: middle;
|
|
320
|
+
text-decoration: underline;
|
|
321
|
+
text-decoration-thickness: 1px;
|
|
322
|
+
text-underline-offset: 4.5px;
|
|
268
323
|
}
|
|
269
324
|
|
|
270
|
-
.story-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
font-size: 0.75rem;
|
|
274
|
-
letter-spacing: 0.05em;
|
|
275
|
-
text-transform: uppercase;
|
|
325
|
+
.story-bulk-toggle-button:hover:not(:disabled) {
|
|
326
|
+
color: var(--accent);
|
|
327
|
+
text-decoration-thickness: 2px;
|
|
276
328
|
}
|
|
277
329
|
|
|
278
|
-
.story-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
pointer-events: none;
|
|
330
|
+
.story-bulk-toggle-button:focus-visible {
|
|
331
|
+
outline: 2px solid var(--accent);
|
|
332
|
+
outline-offset: 1px;
|
|
282
333
|
}
|
|
283
334
|
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
335
|
+
/* Disabled verb: removing the underline is the color-independent cue (no
|
|
336
|
+
opacity — it can compound below the contrast floor). Disabled controls are
|
|
337
|
+
1.4.3/1.4.11 exempt, but the state stays perceptible without color. */
|
|
338
|
+
.story-bulk-toggle-button:disabled {
|
|
339
|
+
color: var(--text-subtle);
|
|
340
|
+
text-decoration: none;
|
|
341
|
+
cursor: not-allowed;
|
|
289
342
|
}
|
|
290
343
|
|
|
291
|
-
.
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
font-size: 0.8125rem;
|
|
295
|
-
min-height: 24px;
|
|
344
|
+
.bulk-scope,
|
|
345
|
+
.bulk-sep {
|
|
346
|
+
color: var(--text-subtle);
|
|
296
347
|
}
|
|
297
348
|
|
|
298
|
-
.story-bulk-toggle-
|
|
299
|
-
|
|
300
|
-
border-color: var(--accent);
|
|
349
|
+
.summary-item:has(+ .story-bulk-toggle) .bulk-sep {
|
|
350
|
+
display: none;
|
|
301
351
|
}
|
|
302
352
|
|
|
303
|
-
.
|
|
304
|
-
|
|
305
|
-
|
|
353
|
+
.bulk-scope {
|
|
354
|
+
cursor: default;
|
|
355
|
+
margin-inline-start: 0.25rem;
|
|
306
356
|
}
|
|
307
357
|
|
|
308
358
|
.story-filter-status {
|
|
309
|
-
margin: 0;
|
|
359
|
+
margin: 0 0 0.75rem;
|
|
310
360
|
color: var(--text-subtle);
|
|
311
361
|
font-size: 0.8125rem;
|
|
312
362
|
}
|
|
@@ -675,6 +725,34 @@ summary.action-row:focus-visible {
|
|
|
675
725
|
border: 0;
|
|
676
726
|
}
|
|
677
727
|
|
|
728
|
+
/* interactiveMode: chip buttons collapsed by default — sighted mouse users
|
|
729
|
+
drive the viewer with the hover/press gesture on the stage. Clip (never
|
|
730
|
+
display/visibility/inert) so the nested radio stays focusable and keeps
|
|
731
|
+
its accessible name. Mirrors .sr-only. */
|
|
732
|
+
.shot-interactive .shot-radio-label {
|
|
733
|
+
position: absolute;
|
|
734
|
+
width: 1px;
|
|
735
|
+
height: 1px;
|
|
736
|
+
margin: -1px;
|
|
737
|
+
overflow: hidden;
|
|
738
|
+
clip: rect(0 0 0 0);
|
|
739
|
+
white-space: nowrap;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
/* Reveal the whole chip group when a keyboard user focuses any radio.
|
|
743
|
+
:focus-within needs no :has() fallback and never fires for mouse/touch
|
|
744
|
+
(label clipped, input pointer-events:none → radios are keyboard-only
|
|
745
|
+
reachable). Specificity (0,3,0) beats the collapse rule (0,2,0). */
|
|
746
|
+
.shot-interactive:focus-within .shot-radio-label {
|
|
747
|
+
position: static;
|
|
748
|
+
width: auto;
|
|
749
|
+
height: auto;
|
|
750
|
+
margin: 0;
|
|
751
|
+
overflow: visible;
|
|
752
|
+
clip: auto;
|
|
753
|
+
white-space: normal;
|
|
754
|
+
}
|
|
755
|
+
|
|
678
756
|
/* Persistent caption naming the committed variant. Text on `--text` (≥4.5:1),
|
|
679
757
|
so the active variant is never conveyed by color alone — it pairs the checked
|
|
680
758
|
chip's accent border with this readable label. aria-hidden keeps it visual
|
|
@@ -59,6 +59,20 @@
|
|
|
59
59
|
var statusRegion = createStatusRegion('.story-filter-status');
|
|
60
60
|
var bulkRegion = createStatusRegion('.bulk-toggle-status');
|
|
61
61
|
|
|
62
|
+
// The visible label word for a filter button, used to echo the active filter
|
|
63
|
+
// in the bulk-toggle announcement (e.g. "Expanded passed in 3 stories"). The
|
|
64
|
+
// button's `data-filter` carries the matcher TOKEN ("pass"); the visible
|
|
65
|
+
// `.indicator` span carries the human LABEL ("passed"). The "all" total maps to
|
|
66
|
+
// "all" regardless of its visible "stories" label. A missing button → "all".
|
|
67
|
+
function filterLabel(button) {
|
|
68
|
+
if (!button) return 'all';
|
|
69
|
+
if (button.getAttribute('data-filter') === 'all') return 'all';
|
|
70
|
+
var indicator = button.querySelector('.indicator');
|
|
71
|
+
return indicator
|
|
72
|
+
? indicator.textContent.trim()
|
|
73
|
+
: button.getAttribute('data-filter');
|
|
74
|
+
}
|
|
75
|
+
|
|
62
76
|
// Reveals the matching <div.shot-panel> for the radio the user picks. The
|
|
63
77
|
// radio group already handles keyboard navigation natively (arrow keys move
|
|
64
78
|
// the selection across the visible labels); this script just translates the
|
|
@@ -79,17 +93,20 @@
|
|
|
79
93
|
}
|
|
80
94
|
|
|
81
95
|
var defaultTab = container.getAttribute('data-default-tab');
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
initialRadio
|
|
91
|
-
|
|
96
|
+
function reset() {
|
|
97
|
+
var initialRadio =
|
|
98
|
+
radios.find(function (radio) {
|
|
99
|
+
return radio.value === defaultTab && !radio.disabled;
|
|
100
|
+
}) ||
|
|
101
|
+
radios.find(function (radio) {
|
|
102
|
+
return !radio.disabled;
|
|
103
|
+
});
|
|
104
|
+
if (initialRadio) {
|
|
105
|
+
initialRadio.checked = true;
|
|
106
|
+
activate(initialRadio.value);
|
|
107
|
+
}
|
|
92
108
|
}
|
|
109
|
+
reset();
|
|
93
110
|
|
|
94
111
|
radios.forEach(function (radio) {
|
|
95
112
|
radio.addEventListener('change', function () {
|
|
@@ -97,6 +114,21 @@
|
|
|
97
114
|
activate(radio.value);
|
|
98
115
|
});
|
|
99
116
|
});
|
|
117
|
+
|
|
118
|
+
// Selection lives in the DOM, so a collapse only HIDES it — a prior
|
|
119
|
+
// Baseline/Diff pick would otherwise still be checked on the next expand.
|
|
120
|
+
// Reset on COLLAPSE, not expand: the `toggle` event fires AFTER the state
|
|
121
|
+
// change, so resetting on open flashes a visible baseline→actual jump.
|
|
122
|
+
// Resetting on close does the swap while the panel is hidden, so the next
|
|
123
|
+
// expand is already on the default. <details> fires `toggle` on user clicks
|
|
124
|
+
// AND the bulk-toggle's programmatic `open` change, so this covers
|
|
125
|
+
// Collapse-all too. First-ever open is covered by the initial reset() above.
|
|
126
|
+
var details = container.closest && container.closest('details.shots');
|
|
127
|
+
if (details) {
|
|
128
|
+
details.addEventListener('toggle', function () {
|
|
129
|
+
if (!details.open) reset();
|
|
130
|
+
});
|
|
131
|
+
}
|
|
100
132
|
}
|
|
101
133
|
|
|
102
134
|
document.querySelectorAll('.shot-radio').forEach(function (container) {
|
|
@@ -214,43 +246,47 @@
|
|
|
214
246
|
});
|
|
215
247
|
})();
|
|
216
248
|
|
|
217
|
-
// Status filter for the stories list.
|
|
218
|
-
//
|
|
219
|
-
//
|
|
220
|
-
//
|
|
221
|
-
//
|
|
249
|
+
// Status filter for the stories list. Each status total in the summary row is
|
|
250
|
+
// a native <button aria-pressed> single-select filter; clicking one toggles
|
|
251
|
+
// `hidden` on every <li.story> whose `data-status` doesn't match its
|
|
252
|
+
// `data-filter` token ("all" clears the filter). Exactly one button is pressed
|
|
253
|
+
// at all times (default: the "all/stories" button). Re-clicking the active
|
|
254
|
+
// non-"all" filter reverts to "all". Live-region updates are debounced by
|
|
255
|
+
// ~150ms; the visual hide/show is applied immediately.
|
|
222
256
|
(function () {
|
|
223
|
-
var
|
|
224
|
-
|
|
257
|
+
var filterButtons = Array.prototype.slice.call(
|
|
258
|
+
document.querySelectorAll('.summary-filter'),
|
|
259
|
+
);
|
|
260
|
+
if (filterButtons.length === 0) return;
|
|
225
261
|
var list = document.querySelector('.stories');
|
|
226
262
|
var empty = document.querySelector('.stories-empty');
|
|
227
263
|
if (!list || !empty) return;
|
|
228
264
|
|
|
229
265
|
var stories = Array.prototype.slice.call(list.querySelectorAll('.story'));
|
|
230
|
-
var radios = Array.prototype.slice.call(
|
|
231
|
-
fieldset.querySelectorAll('input[type="radio"]'),
|
|
232
|
-
);
|
|
233
266
|
var total = stories.length;
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
//
|
|
240
|
-
//
|
|
267
|
+
var allButton =
|
|
268
|
+
filterButtons.find(function (button) {
|
|
269
|
+
return button.getAttribute('data-filter') === 'all';
|
|
270
|
+
}) || filterButtons[0];
|
|
271
|
+
|
|
272
|
+
// Cached for the zero-match disable + focus-rescue logic in apply(). The
|
|
273
|
+
// scope word is now static markup ("screenshots" visible, " all screenshots"
|
|
274
|
+
// sr-only), so the buttons are never relabelled per filter — the filter's own
|
|
275
|
+
// live-region announcement already covers the context change.
|
|
241
276
|
var expandButton = document.querySelector('[data-bulk-toggle="expand"]');
|
|
242
277
|
var collapseButton = document.querySelector(
|
|
243
278
|
'[data-bulk-toggle="collapse"]',
|
|
244
279
|
);
|
|
245
280
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
281
|
+
// Maintain the single-pressed invariant: exactly one filter button carries
|
|
282
|
+
// aria-pressed="true".
|
|
283
|
+
function setPressed(active) {
|
|
284
|
+
filterButtons.forEach(function (button) {
|
|
285
|
+
button.setAttribute(
|
|
286
|
+
'aria-pressed',
|
|
287
|
+
button === active ? 'true' : 'false',
|
|
288
|
+
);
|
|
289
|
+
});
|
|
254
290
|
}
|
|
255
291
|
|
|
256
292
|
function show(el) {
|
|
@@ -309,9 +345,9 @@
|
|
|
309
345
|
}
|
|
310
346
|
|
|
311
347
|
// Matching story under a specific filter: compare each action's
|
|
312
|
-
// data-status against the
|
|
313
|
-
//
|
|
314
|
-
//
|
|
348
|
+
// data-status against the button's data-filter TOKEN ("pass"), not its
|
|
349
|
+
// visible label ("passed"), so the "passed" filter matches the `pass`
|
|
350
|
+
// actions instead of silently emptying every story.
|
|
315
351
|
actions.forEach(function (action) {
|
|
316
352
|
action.hidden = action.getAttribute('data-status') !== value;
|
|
317
353
|
});
|
|
@@ -332,10 +368,7 @@
|
|
|
332
368
|
return storyVisible;
|
|
333
369
|
}
|
|
334
370
|
|
|
335
|
-
function apply(
|
|
336
|
-
var value = radio.value;
|
|
337
|
-
var name = radio.getAttribute('data-filter-name') || value;
|
|
338
|
-
relabelBulkToggle(name);
|
|
371
|
+
function apply(value, trigger) {
|
|
339
372
|
var visible = 0;
|
|
340
373
|
stories.forEach(function (story) {
|
|
341
374
|
if (applyToStory(story, value)) visible += 1;
|
|
@@ -344,11 +377,21 @@
|
|
|
344
377
|
list.hidden = hasNone;
|
|
345
378
|
empty.hidden = !hasNone;
|
|
346
379
|
|
|
380
|
+
// Disable-while-focused guard: when a zero-match filter is about to
|
|
381
|
+
// disable a bulk-toggle button that currently holds focus, move focus to
|
|
382
|
+
// the triggering filter control FIRST, so focus is never stranded on a
|
|
383
|
+
// disabled (unfocusable) button.
|
|
384
|
+
if (
|
|
385
|
+
hasNone &&
|
|
386
|
+
trigger &&
|
|
387
|
+
(document.activeElement === expandButton ||
|
|
388
|
+
document.activeElement === collapseButton)
|
|
389
|
+
) {
|
|
390
|
+
trigger.focus();
|
|
391
|
+
}
|
|
347
392
|
// Disable both bulk-toggle buttons when the active filter matches zero
|
|
348
393
|
// stories — there is nothing to expand/collapse. Runs on EVERY apply()
|
|
349
394
|
// call (including "all"), so selecting a matching filter re-enables them.
|
|
350
|
-
// `disabled` on a standalone <button> removes it from the tab order
|
|
351
|
-
// without trapping focus (focus stays on the radio that triggered apply).
|
|
352
395
|
if (expandButton) expandButton.disabled = hasNone;
|
|
353
396
|
if (collapseButton) collapseButton.disabled = hasNone;
|
|
354
397
|
|
|
@@ -358,11 +401,37 @@
|
|
|
358
401
|
: 'Showing ' + visible + ' of ' + total + ' stories';
|
|
359
402
|
|
|
360
403
|
statusRegion.writeDebounced(message, 150);
|
|
404
|
+
|
|
405
|
+
// Post-apply focus-loss guard: if filtering left focus on nothing, the
|
|
406
|
+
// body, or inside a now-[hidden] subtree, return it to the control that
|
|
407
|
+
// triggered this apply so keyboard users keep their place.
|
|
408
|
+
var active = document.activeElement;
|
|
409
|
+
if (
|
|
410
|
+
trigger &&
|
|
411
|
+
(!active ||
|
|
412
|
+
active === document.body ||
|
|
413
|
+
(active.closest && active.closest('[hidden]')))
|
|
414
|
+
) {
|
|
415
|
+
trigger.focus();
|
|
416
|
+
}
|
|
361
417
|
}
|
|
362
418
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
419
|
+
filterButtons.forEach(function (button) {
|
|
420
|
+
button.addEventListener('click', function () {
|
|
421
|
+
var token = button.getAttribute('data-filter');
|
|
422
|
+
var isActive = button.getAttribute('aria-pressed') === 'true';
|
|
423
|
+
// Re-clicking the active, non-"all" filter reverts to "all". Focus stays
|
|
424
|
+
// on the clicked button — it is in the summary row and never hidden by
|
|
425
|
+
// its own action.
|
|
426
|
+
if (isActive && token !== 'all') {
|
|
427
|
+
setPressed(allButton);
|
|
428
|
+
apply('all', button);
|
|
429
|
+
return;
|
|
430
|
+
}
|
|
431
|
+
// Re-clicking the already-active "all" button is a no-op.
|
|
432
|
+
if (isActive) return;
|
|
433
|
+
setPressed(button);
|
|
434
|
+
apply(token, button);
|
|
366
435
|
});
|
|
367
436
|
});
|
|
368
437
|
})();
|
|
@@ -396,6 +465,21 @@
|
|
|
396
465
|
|
|
397
466
|
function apply(mode) {
|
|
398
467
|
var shouldOpen = mode === 'expand';
|
|
468
|
+
// Collapse-all focus rescue: if focus sits inside a disclosure that is
|
|
469
|
+
// about to collapse, move it to that disclosure's <summary> first — the
|
|
470
|
+
// summary stays visible after collapse, so focus is never dropped into a
|
|
471
|
+
// hidden subtree. Expand-all reveals content, so it needs no rescue.
|
|
472
|
+
if (!shouldOpen) {
|
|
473
|
+
var active = document.activeElement;
|
|
474
|
+
var openDetails =
|
|
475
|
+
active &&
|
|
476
|
+
active.closest &&
|
|
477
|
+
active.closest('details.shots[open]');
|
|
478
|
+
if (openDetails) {
|
|
479
|
+
var summary = openDetails.querySelector('summary');
|
|
480
|
+
if (summary) summary.focus();
|
|
481
|
+
}
|
|
482
|
+
}
|
|
399
483
|
var visibleStories = Array.prototype.slice.call(
|
|
400
484
|
document.querySelectorAll('.story:not([hidden])'),
|
|
401
485
|
);
|
|
@@ -416,15 +500,14 @@
|
|
|
416
500
|
// keeps the logic simple.
|
|
417
501
|
var count = visibleStories.length;
|
|
418
502
|
var verb = shouldOpen ? 'Expanded' : 'Collapsed';
|
|
419
|
-
// Echo the active filter scope so the announcement
|
|
420
|
-
//
|
|
421
|
-
//
|
|
422
|
-
//
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
'all';
|
|
503
|
+
// Echo the active filter scope so the announcement carries context for
|
|
504
|
+
// what was toggled (e.g. "Expanded passed in 3 stories"). The button
|
|
505
|
+
// label itself is static ("Expand all screenshots"); only this live
|
|
506
|
+
// announcement reflects the filter. Read the pressed filter button at
|
|
507
|
+
// click time via the shared filterLabel helper. No pressed button falls
|
|
508
|
+
// back to "all".
|
|
509
|
+
var pressed = document.querySelector('.summary-filter[aria-pressed="true"]');
|
|
510
|
+
var name = filterLabel(pressed);
|
|
428
511
|
bulkRegion.write(verb + ' ' + name + ' in ' + count + ' stories');
|
|
429
512
|
}
|
|
430
513
|
|
|
@@ -434,4 +517,38 @@
|
|
|
434
517
|
});
|
|
435
518
|
});
|
|
436
519
|
})();
|
|
520
|
+
|
|
521
|
+
// Scroll a user-opened screenshot disclosure to the top of the viewport so the
|
|
522
|
+
// tall screenshot below the summary row is immediately visible. Fires ONLY on a
|
|
523
|
+
// user single-open:
|
|
524
|
+
// - The bulk-toggle sets `details.open` directly, which fires `toggle` but NO
|
|
525
|
+
// `click`, so a summary `click` listener never catches a bulk op (no
|
|
526
|
+
// scroll-thrash to the last-opened panel).
|
|
527
|
+
// - Native <summary> activation by mouse, Enter, or Space all dispatch one
|
|
528
|
+
// `click`, so a single listener covers every input mode.
|
|
529
|
+
// - The open-state flip is the click's DEFAULT action, run AFTER this handler,
|
|
530
|
+
// so `details.open` here is the PRE-toggle state. `if (open) return` means
|
|
531
|
+
// this click is closing the panel: never scroll on close.
|
|
532
|
+
// - Deferred to rAF so it runs after the flip + content layout. scrollIntoView
|
|
533
|
+
// does not move focus, so focus stays on the <summary>, which sits flush at
|
|
534
|
+
// the viewport top with its focus indicator visible.
|
|
535
|
+
(function () {
|
|
536
|
+
var reduce = window.matchMedia('(prefers-reduced-motion: reduce)');
|
|
537
|
+
document.addEventListener('click', function (event) {
|
|
538
|
+
var target = event.target;
|
|
539
|
+
var summary = target && target.closest ? target.closest('summary') : null;
|
|
540
|
+
if (!summary) return;
|
|
541
|
+
var details = summary.parentElement;
|
|
542
|
+
if (!details || !details.matches('details.shots')) return;
|
|
543
|
+
// Pre-toggle state: open === "this click will close it" → do not scroll.
|
|
544
|
+
if (details.open) return;
|
|
545
|
+
requestAnimationFrame(function () {
|
|
546
|
+
details.scrollIntoView({
|
|
547
|
+
behavior: reduce.matches ? 'instant' : 'smooth',
|
|
548
|
+
block: 'start',
|
|
549
|
+
inline: 'nearest',
|
|
550
|
+
});
|
|
551
|
+
});
|
|
552
|
+
});
|
|
553
|
+
})();
|
|
437
554
|
})();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/reporter/template.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/reporter/template.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAGV,SAAS,EAEV,MAAM,qBAAqB,CAAC;AAkB7B;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,eAAe,UAAQ,GACtB,MAAM,CA6BR"}
|
|
@@ -48,40 +48,51 @@ export function renderReport(result, reportDir, interactiveMode = false) {
|
|
|
48
48
|
</html>
|
|
49
49
|
`;
|
|
50
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* The status totals double as the report's filter controls: each is a native
|
|
53
|
+
* `<button aria-pressed>` single-select filter, with the "stories" total acting
|
|
54
|
+
* as the "show all / clear" control (pressed by default). The expand-all /
|
|
55
|
+
* collapse-all pair sits at the right end of the same row — the slot the old
|
|
56
|
+
* coverage stats used to occupy. The `<ul>` stays a plain list (no composite
|
|
57
|
+
* role): a non-filter total and the bulk-toggle group share it, so a
|
|
58
|
+
* radiogroup/fieldset could not cleanly scope just the filters.
|
|
59
|
+
*/
|
|
51
60
|
function renderSummary(result) {
|
|
52
|
-
const screens = result.customCoverage.screens;
|
|
53
|
-
const flows = result.customCoverage.flows;
|
|
54
61
|
return `
|
|
55
62
|
<section class="summary" aria-labelledby="summary-heading">
|
|
56
63
|
<h2 id="summary-heading">summary</h2>
|
|
57
64
|
<ul class="summary-list" aria-label="Run totals">
|
|
58
|
-
${
|
|
59
|
-
${
|
|
60
|
-
${
|
|
61
|
-
${
|
|
62
|
-
${
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
${summaryFilter('stories', result.totals.stories, 'all', true, ' — show all stories')}
|
|
66
|
+
${summaryFilter('passed', result.totals.passed, 'pass', false, ', show only passed stories')}
|
|
67
|
+
${summaryFilter('new', result.totals.new, 'new', false, ', show only new stories')}
|
|
68
|
+
${summaryFilter('changed', result.totals.changed, 'changed', false, ', show only changed stories')}
|
|
69
|
+
${summaryFilter('failed', result.totals.failed, 'failed', false, ', show only failed stories')}
|
|
70
|
+
<li class="story-bulk-toggle">
|
|
71
|
+
<button type="button" class="story-bulk-toggle-button" data-bulk-toggle="expand"><span class="bulk-verb">Expand</span><span class="bulk-scope-sr sr-only"> all screenshots</span></button>
|
|
72
|
+
<span class="bulk-sep" aria-hidden="true">/</span>
|
|
73
|
+
<button type="button" class="story-bulk-toggle-button" data-bulk-toggle="collapse"><span class="bulk-verb">Collapse</span><span class="bulk-scope-sr sr-only"> all screenshots</span></button>
|
|
74
|
+
<span class="bulk-scope" aria-hidden="true">screenshots</span>
|
|
75
|
+
</li>
|
|
65
76
|
</ul>
|
|
66
77
|
</section>
|
|
67
78
|
`;
|
|
68
79
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
function
|
|
80
|
+
/**
|
|
81
|
+
* One status total rendered as a single-select filter button. The visible count
|
|
82
|
+
* sits OUTSIDE the button as a sibling span and is wired to it via
|
|
83
|
+
* aria-describedby, so only the word ("passed") is the underlined link while the
|
|
84
|
+
* count still reads as the button's description. The accessible name is the
|
|
85
|
+
* visible label plus a visually-hidden action suffix (e.g. ", show only passed
|
|
86
|
+
* stories"), composed from contents so the visible text is never dropped (WCAG
|
|
87
|
+
* 2.5.3 — never an aria-label). The `data-filter` token ("pass") is kept
|
|
88
|
+
* distinct from the visible label ("passed") so report.js matches
|
|
89
|
+
* `story[data-status="pass"]`.
|
|
90
|
+
*/
|
|
91
|
+
function summaryFilter(label, value, filter, pressed, actionSuffix) {
|
|
81
92
|
return `
|
|
82
|
-
<li class="summary-item"
|
|
83
|
-
<span class="count">${value}</span>
|
|
84
|
-
<span class="
|
|
93
|
+
<li class="summary-item" data-status="${filter}">
|
|
94
|
+
<span class="count" id="summary-count-${filter}">${value}</span><button type="button" class="summary-filter" data-filter="${filter}" aria-pressed="${pressed}" aria-controls="stories-list" aria-describedby="summary-count-${filter}"><span class="indicator label">${label}</span><span class="sr-only">${actionSuffix}</span></button>
|
|
95
|
+
<span class="bulk-sep" aria-hidden="true">·</span>
|
|
85
96
|
</li>
|
|
86
97
|
`;
|
|
87
98
|
}
|
|
@@ -90,49 +101,22 @@ function renderStories(result, reportDir, interactiveMode) {
|
|
|
90
101
|
.map((story, index) => renderStory(story, index, reportDir, interactiveMode))
|
|
91
102
|
.join('\n');
|
|
92
103
|
const total = result.stories.length;
|
|
104
|
+
// The interactive controls now live in the summary row; this section keeps
|
|
105
|
+
// only the two live regions (both server-rendered between the heading and the
|
|
106
|
+
// list so a screen reader announces filter/bulk changes reliably) and the
|
|
107
|
+
// list itself, whose id the summary filter buttons target via aria-controls.
|
|
93
108
|
return `
|
|
94
109
|
<section aria-labelledby="stories-heading">
|
|
95
110
|
<h2 id="stories-heading">stories</h2>
|
|
96
|
-
<
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
${storyFilterRadio('all', true)}
|
|
100
|
-
${storyFilterRadio('passed', false)}
|
|
101
|
-
${storyFilterRadio('new', false)}
|
|
102
|
-
${storyFilterRadio('changed', false)}
|
|
103
|
-
${storyFilterRadio('failed', false)}
|
|
104
|
-
</fieldset>
|
|
105
|
-
<p class="story-filter-status" role="status" aria-live="polite">Showing all ${total} stories</p>
|
|
106
|
-
<div class="story-bulk-toggle">
|
|
107
|
-
<button type="button" class="chip story-bulk-toggle-button" data-bulk-toggle="expand">Expand all</button>
|
|
108
|
-
<button type="button" class="chip story-bulk-toggle-button" data-bulk-toggle="collapse">Collapse all</button>
|
|
109
|
-
</div>
|
|
110
|
-
<p class="bulk-toggle-status sr-only" role="status" aria-live="polite"></p>
|
|
111
|
-
</div>
|
|
112
|
-
<ol class="stories" aria-label="Stories executed in dependency order">
|
|
111
|
+
<p class="story-filter-status" role="status" aria-live="polite" aria-atomic="true">Showing all ${total} stories</p>
|
|
112
|
+
<p class="bulk-toggle-status sr-only" role="status" aria-live="polite" aria-atomic="true"></p>
|
|
113
|
+
<ol class="stories" id="stories-list" aria-label="Stories executed in dependency order">
|
|
113
114
|
${items}
|
|
114
115
|
</ol>
|
|
115
116
|
<p class="stories-empty" hidden>No matching stories</p>
|
|
116
117
|
</section>
|
|
117
118
|
`;
|
|
118
119
|
}
|
|
119
|
-
function storyFilterRadio(status, checked) {
|
|
120
|
-
const inputId = `story-filter-${status}`;
|
|
121
|
-
const value = status === 'passed' ? 'pass' : status;
|
|
122
|
-
return `
|
|
123
|
-
<label for="${inputId}" class="chip chip--toggle story-filter-label">
|
|
124
|
-
<input
|
|
125
|
-
type="radio"
|
|
126
|
-
name="story-filter"
|
|
127
|
-
id="${inputId}"
|
|
128
|
-
value="${value}"
|
|
129
|
-
data-filter-name="${status}"
|
|
130
|
-
${checked ? 'checked' : ''}
|
|
131
|
-
/>
|
|
132
|
-
${status}
|
|
133
|
-
</label>
|
|
134
|
-
`;
|
|
135
|
-
}
|
|
136
120
|
function renderStory(story, storyIndex, reportDir, interactiveMode) {
|
|
137
121
|
return `
|
|
138
122
|
<li class="story" data-status="${story.status}">
|
|
@@ -283,6 +267,18 @@ function renderParameters(parameters) {
|
|
|
283
267
|
.join('');
|
|
284
268
|
return `<dl class="action-parameters">${entries}</dl>`;
|
|
285
269
|
}
|
|
270
|
+
/**
|
|
271
|
+
* A "changed" row whose diff could not be computed: baseline and actual differ
|
|
272
|
+
* in dimensions, so pixelmatch throws before producing a diffRatio or diff
|
|
273
|
+
* image, leaving only the recorded failureMessage. Centralizes the predicate
|
|
274
|
+
* shared by the radio fallback, the diff radio's describedby wiring, and
|
|
275
|
+
* renderDiffStats' unavailable note.
|
|
276
|
+
*/
|
|
277
|
+
function isDiffUnavailable(action) {
|
|
278
|
+
return (action.diffRatio === undefined &&
|
|
279
|
+
action.status === 'changed' &&
|
|
280
|
+
!!action.failureMessage);
|
|
281
|
+
}
|
|
286
282
|
function renderScreenshots(action, actionId, reportDir, interactiveMode) {
|
|
287
283
|
if (!action.actualPath && !action.baselinePath) {
|
|
288
284
|
return '';
|
|
@@ -290,7 +286,16 @@ function renderScreenshots(action, actionId, reportDir, interactiveMode) {
|
|
|
290
286
|
// interactiveMode swaps the radio-tab output for the single-image hover/press
|
|
291
287
|
// viewer. When it is false the function falls through to the radio-tab output
|
|
292
288
|
// below, byte-identical with the pre-interactiveMode render.
|
|
293
|
-
|
|
289
|
+
//
|
|
290
|
+
// When the baseline and actual differ in dimensions the diff is uncomputable
|
|
291
|
+
// (renderDiffStats' unavailable branch — both paths present, `changed` status,
|
|
292
|
+
// a recorded failureMessage, no diffRatio). The hover/press gesture has no diff
|
|
293
|
+
// image to reveal, so fall back to the radio-tab render: visible chips,
|
|
294
|
+
// baseline + actual, and the disabled diff option carrying the mismatch reason.
|
|
295
|
+
const diffUncomputable = action.baselinePath !== undefined &&
|
|
296
|
+
action.actualPath !== undefined &&
|
|
297
|
+
isDiffUnavailable(action);
|
|
298
|
+
if (interactiveMode && !diffUncomputable) {
|
|
294
299
|
return renderInteractiveScreenshots(action, actionId, reportDir);
|
|
295
300
|
}
|
|
296
301
|
// A `new` baseline writes its baseline straight from this run's actual, so the
|
|
@@ -306,13 +311,19 @@ function renderScreenshots(action, actionId, reportDir, interactiveMode) {
|
|
|
306
311
|
const diff = action.diffPath
|
|
307
312
|
? toReportRelative(reportDir, action.diffPath)
|
|
308
313
|
: undefined;
|
|
309
|
-
const defaultTab =
|
|
314
|
+
const defaultTab = 'actual';
|
|
310
315
|
const available = { baseline, actual, diff };
|
|
311
316
|
const initialTab = available[defaultTab] !== undefined
|
|
312
317
|
? defaultTab
|
|
313
318
|
: ['baseline', 'actual', 'diff'].find((name) => available[name] !== undefined);
|
|
314
319
|
const diffStatsId = `${actionId}-diff-stats`;
|
|
315
320
|
const diffStats = renderDiffStats(action, diffStatsId);
|
|
321
|
+
// renderDiffStats emits the `diff-stats--unavailable` note (with this id) when
|
|
322
|
+
// the diff is uncomputable. The diff radio is disabled in that case, so wire
|
|
323
|
+
// its aria-describedby to the note — a keyboard/AT user reaching the disabled
|
|
324
|
+
// diff option then hears why no diff exists. (The diff PANEL only takes the
|
|
325
|
+
// association when a real diff image renders, below.)
|
|
326
|
+
const diffNoteUnavailable = isDiffUnavailable(action);
|
|
316
327
|
// When only one variant is real (the common case for a `new` baseline, whose
|
|
317
328
|
// baseline is suppressed and has no diff), a radio group offering a single
|
|
318
329
|
// choice is noise to AT. Drop the controls and show the image alone; the row's
|
|
@@ -332,7 +343,7 @@ function renderScreenshots(action, actionId, reportDir, interactiveMode) {
|
|
|
332
343
|
<legend class="sr-only">Screenshot to display</legend>
|
|
333
344
|
${shotRadio(actionId, 'baseline', baseline === undefined, initialTab === 'baseline')}
|
|
334
345
|
${shotRadio(actionId, 'actual', actual === undefined, initialTab === 'actual')}
|
|
335
|
-
${shotRadio(actionId, 'diff', diff === undefined, initialTab === 'diff')}
|
|
346
|
+
${shotRadio(actionId, 'diff', diff === undefined, initialTab === 'diff', diffNoteUnavailable ? { describedById: diffStatsId } : undefined)}
|
|
336
347
|
${diffStats}
|
|
337
348
|
</fieldset>
|
|
338
349
|
${shotPanel(actionId, 'baseline', baseline, SHOT_ALT.baseline(action), initialTab === 'baseline')}
|
|
@@ -371,6 +382,9 @@ function renderDiffStats(action, diffStatsId) {
|
|
|
371
382
|
* variant — and its radio — is omitted entirely (not disabled) when this action
|
|
372
383
|
* produced no diff image; the existing diff-stats association then rides on the
|
|
373
384
|
* diff radio control rather than the image, leaving no dangling describedby.
|
|
385
|
+
* (Distinct from the dimension-mismatch case, where the diff is uncomputable:
|
|
386
|
+
* renderScreenshots never reaches this viewer and instead falls back to the
|
|
387
|
+
* radio-tab render with a disabled — not omitted — diff radio.)
|
|
374
388
|
*/
|
|
375
389
|
function renderInteractiveScreenshots(action, actionId, reportDir) {
|
|
376
390
|
// A `new` baseline writes its baseline straight from this run's actual, so the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/reporter/template.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/reporter/template.ts"],"names":[],"mappings":"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"}
|
package/dist/runner/run.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ResolvedConfig } from '../config.ts';
|
|
2
|
-
import type { RunResult, StoryResult } from '../schema/result.ts';
|
|
2
|
+
import type { RunResult, StoryResult, StoryStatus } from '../schema/result.ts';
|
|
3
3
|
export interface RunCliOptions {
|
|
4
4
|
storyFilter?: string;
|
|
5
5
|
headed: boolean;
|
|
@@ -15,6 +15,21 @@ export interface RunCliOptions {
|
|
|
15
15
|
* code.
|
|
16
16
|
*/
|
|
17
17
|
export declare function runAll(config: ResolvedConfig, options: RunCliOptions): Promise<RunResult>;
|
|
18
|
+
/**
|
|
19
|
+
* One streaming finish line: `<symbol> <actionCount> <elapsed>s <stem>`. The
|
|
20
|
+
* count is how many steps the story ran, the elapsed time is wall-clock
|
|
21
|
+
* duration to hundredths of a second, and the stem is the story file without
|
|
22
|
+
* its `.json` extension.
|
|
23
|
+
*/
|
|
24
|
+
export declare function formatResultLine(status: StoryStatus, actionCount: number, durationMs: number, file: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* One Summary bullet for a breakpoint pass: `• <parts> on "<name>" breakpoint`,
|
|
27
|
+
* where `<parts>` joins only the nonzero outcome categories in a fixed order
|
|
28
|
+
* (passed, new, changed, failed) — e.g. `2 passed, 1 changed`. Falls back to
|
|
29
|
+
* `0 passed` for the degenerate all-zero pass the run loop never actually
|
|
30
|
+
* emits (it `continue`s past a pass with no participating stories).
|
|
31
|
+
*/
|
|
32
|
+
export declare function formatSummaryBullet(name: string, counts: RunResult['totals']): string;
|
|
18
33
|
/**
|
|
19
34
|
* The breakpoint names that drove a merged story to its status — the modes the
|
|
20
35
|
* reader actually needs to inspect. A `changed` story that drifted only at
|
package/dist/runner/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/runner/run.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,cAAc,CAAC;AAEvE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/runner/run.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,cAAc,CAAC;AAEvE,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAyB/E,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAUD;;;;;;GAMG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,SAAS,CAAC,CA2HpB;AA4ED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,GACX,MAAM,CAIR;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAC1B,MAAM,CAQR;AAoBD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAuBhE"}
|
package/dist/runner/run.js
CHANGED
|
@@ -56,18 +56,26 @@ export async function runAll(config, options) {
|
|
|
56
56
|
// pass starts from a fresh reset. Results are merged back per story below.
|
|
57
57
|
const partsByFile = new Map();
|
|
58
58
|
const order = [];
|
|
59
|
+
const passSummaries = [];
|
|
59
60
|
for (const breakpoint of passes) {
|
|
60
61
|
const participating = subset.filter((item) => storyRendersAt(item, config, breakpoint));
|
|
61
62
|
if (participating.length === 0)
|
|
62
63
|
continue;
|
|
64
|
+
// Header for every pass — single- and multi-breakpoint alike. The reset
|
|
65
|
+
// sits beneath the header so the "fresh database" line reads as part of
|
|
66
|
+
// this pass's setup; a trailing blank line then separates setup from the
|
|
67
|
+
// streaming result lines.
|
|
68
|
+
process.stdout.write(`\nStarting "${breakpoint.name}" breakpoint pass at ${breakpoint.width}x${breakpoint.height}\n`);
|
|
63
69
|
if (config.database?.reset) {
|
|
64
70
|
process.stdout.write('Resetting test database…\n');
|
|
65
71
|
await resetDatabase(config);
|
|
66
72
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
process.stdout.write('\n');
|
|
74
|
+
const passResults = await drainSchedule(adaptNeedsForPass(participating), workerCount, (item) => runScheduledStory(item, actions, config, options.headed, coverage, breakpoint), () => { }, (_item, result) => process.stdout.write(`${formatResultLine(result.status, result.actions.length, result.durationMs, result.file)}\n`));
|
|
75
|
+
passSummaries.push({
|
|
76
|
+
name: breakpoint.name,
|
|
77
|
+
counts: summarise(passResults),
|
|
78
|
+
});
|
|
71
79
|
for (const result of passResults) {
|
|
72
80
|
let parts = partsByFile.get(result.file);
|
|
73
81
|
if (!parts) {
|
|
@@ -93,7 +101,7 @@ export async function runAll(config, options) {
|
|
|
93
101
|
stories: results,
|
|
94
102
|
};
|
|
95
103
|
const reportPath = await writeReport(config.paths.report, runResult, config.interactiveMode);
|
|
96
|
-
writeRunSummary(
|
|
104
|
+
writeRunSummary(passSummaries, reportPath);
|
|
97
105
|
if (coverage) {
|
|
98
106
|
const coveragePath = await coverage.generate();
|
|
99
107
|
process.stdout.write(`Coverage: ${coveragePath}\n`);
|
|
@@ -151,46 +159,57 @@ function summarise(results) {
|
|
|
151
159
|
new: results.filter((result) => result.status === 'new').length,
|
|
152
160
|
};
|
|
153
161
|
}
|
|
162
|
+
/** Status → leading glyph for a streaming result line. */
|
|
163
|
+
const STATUS_SYMBOL = {
|
|
164
|
+
pass: '✓',
|
|
165
|
+
changed: '~',
|
|
166
|
+
new: '+',
|
|
167
|
+
failed: '✗',
|
|
168
|
+
};
|
|
154
169
|
/**
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
* a `file://` URL so terminals that recognise file URIs (iTerm2, Warp, VS
|
|
160
|
-
* Code) render it as a clickable link.
|
|
170
|
+
* One streaming finish line: `<symbol> <actionCount> <elapsed>s <stem>`. The
|
|
171
|
+
* count is how many steps the story ran, the elapsed time is wall-clock
|
|
172
|
+
* duration to hundredths of a second, and the stem is the story file without
|
|
173
|
+
* its `.json` extension.
|
|
161
174
|
*/
|
|
162
|
-
function
|
|
163
|
-
const
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
process.stdout.write(`\nTotals: ${totals.passed} pass · ${totals.new} new · ${totals.changed} changed · ${totals.failed} failed\n`);
|
|
188
|
-
process.stdout.write(`Report: ${pathToFileURL(reportPath).href}\n`);
|
|
175
|
+
export function formatResultLine(status, actionCount, durationMs, file) {
|
|
176
|
+
const elapsed = (durationMs / 1000).toFixed(2);
|
|
177
|
+
const stem = file.replace(/\.json$/, '');
|
|
178
|
+
return `${STATUS_SYMBOL[status]} ${actionCount} ${elapsed}s ${stem}`;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* One Summary bullet for a breakpoint pass: `• <parts> on "<name>" breakpoint`,
|
|
182
|
+
* where `<parts>` joins only the nonzero outcome categories in a fixed order
|
|
183
|
+
* (passed, new, changed, failed) — e.g. `2 passed, 1 changed`. Falls back to
|
|
184
|
+
* `0 passed` for the degenerate all-zero pass the run loop never actually
|
|
185
|
+
* emits (it `continue`s past a pass with no participating stories).
|
|
186
|
+
*/
|
|
187
|
+
export function formatSummaryBullet(name, counts) {
|
|
188
|
+
const parts = [];
|
|
189
|
+
if (counts.passed > 0)
|
|
190
|
+
parts.push(`${counts.passed} passed`);
|
|
191
|
+
if (counts.new > 0)
|
|
192
|
+
parts.push(`${counts.new} new`);
|
|
193
|
+
if (counts.changed > 0)
|
|
194
|
+
parts.push(`${counts.changed} changed`);
|
|
195
|
+
if (counts.failed > 0)
|
|
196
|
+
parts.push(`${counts.failed} failed`);
|
|
197
|
+
const summary = parts.length > 0 ? parts.join(', ') : '0 passed';
|
|
198
|
+
return `• ${summary} on "${name}" breakpoint`;
|
|
189
199
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
200
|
+
/**
|
|
201
|
+
* Emits the end-of-run tail: a `Summary` section with one bullet per breakpoint
|
|
202
|
+
* pass — counted from that pass's own results, not the merged-across-passes
|
|
203
|
+
* rollup — then the `Report:` line. The report link is a `file://` URL so
|
|
204
|
+
* terminals that recognise file URIs (iTerm2, Warp, VS Code) render it as a
|
|
205
|
+
* clickable link.
|
|
206
|
+
*/
|
|
207
|
+
function writeRunSummary(passSummaries, reportPath) {
|
|
208
|
+
process.stdout.write('\nSummary\n');
|
|
209
|
+
for (const pass of passSummaries) {
|
|
210
|
+
process.stdout.write(`${formatSummaryBullet(pass.name, pass.counts)}\n`);
|
|
211
|
+
}
|
|
212
|
+
process.stdout.write(`\nReport: ${pathToFileURL(reportPath).href}\n`);
|
|
194
213
|
}
|
|
195
214
|
/**
|
|
196
215
|
* The breakpoint names that drove a merged story to its status — the modes the
|
package/dist/runner/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/runner/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EACL,sBAAsB,GAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,aAAa,EACb,aAAa,GAEd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/runner/run.ts"],"names":[],"mappings":"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"}
|