Repository navigation
Releases: lithoscomputer/whirl
Release list
v0.12.0
- Record the installing Whirl version in the shim bundle. An upgraded binary refuses a stale bundle with a runtime error naming
whirl install, andwhirl doctorreports the same, instead of running an older shim silently. - Replace named inline
HTTPactions with structured HTTP entries. Requests can run beforeVISIT, use multiline JSON or fenced text bodies, and assert or capture their response without a name. Whirl warns when an HTTP entry has no status assertion.
v0.11.0
- Record Chromium video at 60 frames per second by default through a screencast recorder, with
--video-fps(1 to 60) to choose the rate. Firefox and WebKit keep Playwright's 25 fps recorder and warn when a rate is requested. Reports record the recorded rate asruntime.videoFps, andwhirl doctorchecks for ffmpeg.
v0.10.0
Whirl can now combine saved reports and show expected scenarios that have no evidence.
whirl report first.json second.json --expected expected.json --html evidence.htmlexpected.json is an ordered array of recorded flow paths. Whirl selects the latest attempt using execution timestamps, including newer failures. It never uses file modification times. Missing scenarios show Not run. Setup history and other flows remain separate. Each result retains its source report, timestamps, browser, source hash, metadata, and media directory. Combined evidence does not claim that one complete suite passed.
Author metadata now accepts plain-text details, such as application commits and fixture checksums. Save that context with --report-metadata context.json --report-json report.json without rendering HTML.
Single-report rendering remains compatible. Saved reporting requires no browser runtime. Ambiguous timestamps fail without replacing the output.
v0.9.0
Generate portable HTML from saved results:
whirl report report.json --html evidence.html
whirl report report.json --html evidence.html --metadata context.jsonThe command needs no flow sources or browser runtime. It preserves the original results and execution context. Use --working-directory DIR to resolve relative media paths in a copied project tree.
New JSON and HTML reports record UTC run and flow timestamps, SHA-256 hashes of parsed flow sources, and separate requested/setup roles. Copied JSON files retain their execution time. Older version 1 reports remain readable.
Validated with the full repository checks, saved-report CLI tests, real browser playback on desktop and mobile, and an adversarial review.
v0.8.0
Whirl now produces portable HTML reports with embedded browser recordings and screenshots.
whirl --video --report-html evidence.html flows/Reports include flow outcomes, execution checkpoints, step timings, failure details, captures, and browser environment information. They open offline and can be moved without the original artifacts directory. Missing recordings remain separate from test results.
Use --report-metadata context.json to add a report title, scope note, and flow descriptions. The metadata is also included when JSON output is requested. See HTML reports for the format.
HTML text is escaped, media is streamed into an atomic report write, and destinations are checked for conflicts with flows and artifacts. Embedded media retains the same contents as the original recordings and screenshots. Trace and HAR files remain external.
Validation: the full repository check gate, nine HTML CLI acceptance tests, desktop and mobile browser checks, offline media playback, and an adversarial review.
v0.7.0
- Add
HTTPrequests with explicit headers and bodies, isolated from browser cookies, using existing response assertions and captures.
v0.6.0
- Add
chrome,firefox, andsafariuser-agent aliases to flow options and the CLI, and record the resolved string in JSON reports.
v0.5.0
-
Add
RESPONSEto observe requests made by the browser, with status, header, JSON Pointer assertions, and response captures. -
Add named popups with
POPUP, explicit tab selection withTAB,CLOSE, andtab:name closedassertions. -
Add
frame:locator segments for cross-origin and nested iframes in actions, assertions, and captures. -
Allow selected browser installation and add
whirl doctorwith repair commands. -
Add JSON check diagnostics, stable error codes, runtime report metadata,
and--rerun-failedfor complete failed flows and their setup. -
Add a runnable sample shop and a CI task with reports and failure artifacts.
-
Keep actionability details in failures and add
whirl show-trace. -
Reject input paths that select no flow files.
-
Preserve presence assertions before checks that accept an absent element.
-
Bound shim lifecycle operations and request writes so an unresponsive shim
cannot stall a run indefinitely. -
Move filesystem preparation off async workers and improve worker shutdown.
-
Accept a popup closing during a click only when its target received the
click; a closure before delivery still fails. -
Add opt-in diagnostic logging through
WHIRL_LOG, with sensitive values
excluded from log fields.
v0.4.0
- Add the
reduced-motionoption, which sets what the page's
prefers-reduced-motionmedia query reports, so pages that honor it skip
animations and background video. SCREENSHOTandSNAPSHOTnames may contain hyphens, so
SCREENSHOT after-verification-codewritesafter-verification-code.png.- Lint warns about a
count >= 1assert directly followed by a check on the
same locator; the second check already waits for the element.
v0.3.0
- Add the
setupoption: a flow that runs first, once per invocation, whose
saved state every file naming it starts from, and whose captures those
files read as{{setup.name}}. A failed setup flow fails its dependents
with a[setup]case without running them.whirl checkvalidates setup
references against the setup flow's captures.