framePaths property
The recorded frames in order, spelled the way image is — so whoever reads them resolves them the same way, off a worktree's disk in the panel or over HTTP on an exported page.
Built from the count rather than listed: the harness numbers them from
zero and a directory listing would sort 10 before 2 unless it were
re-sorted anyway — and on a page there is no directory to list.
Implementation
List<String> get framePaths => [
if (frames case var directory?)
for (var index = 0; index < (frameCount ?? 0); index++)
// A path in a report — the URL spelling, which is the one that has to
// keep working after the report crosses a machine.
'$directory/${index.toString().padLeft(4, '0')}.$format',
];