Skip to content

Releases: vizzly-testing/cli

✨ v0.35.2

20 Jun 16:48

Choose a tag to compare

What's Changed

  • 🔖 v0.35.2
  • ⬆️ Bump Honeydiff to 0.11.1
  • ⬆️ Bump Honeydiff to 0.11 (#300)

Full Changelog: v0.35.1...v0.35.2

✨ v0.35.1

19 Jun 19:21

Choose a tag to compare

What's Changed

Changed

  • Screenshot uploads now resolve existing SHA matches through the screenshot endpoint itself, so the CLI no longer calls the separate check-shas endpoint before uploading.
  • Local TDD commands now work more cleanly with non-default ports: tdd start reports the selected port, and tdd status --port / tdd stop --port target the matching registered server.
  • vizzly run --json and vizzly tdd run --json now keep wrapped test-command output on stderr so stdout remains parseable JSON.
  • CLI help and command routing now show full nested command paths, hide the internal daemon child flag, and return clearer unknown-command errors.

Fixed

  • Fixed TDD daemon lifecycle handling around startup failures, stale daemon files, stale registry entries, and child process stdio that could keep captured callers hanging.
  • Fixed vizzly upload <path> so a missing or non-directory screenshot path fails before auth/config work.
  • Fixed vizzly status <build-id> so builds without preview metadata still report status instead of failing on the optional preview lookup.
  • Fixed local TDD static report generation so runs with captured screenshots still produce review artifacts even when comparison arrays are empty.

Developer Experience

  • Added regression coverage for command routing, JSON output, TDD daemon lifecycle behavior, upload path validation, status without preview data, and the new screenshot SHA-resolution request flow.

Full Changelog: v0.35.0...v0.35.1

🧪 Vitest Integration v0.2.0

01 Jun 02:33

Choose a tag to compare

[0.2.0] - 2026-06-01

What's Changed

Added

  • Added automatic screenshot metadata for Vitest captures, including the current
    page URL, browser, viewport, viewport width, and viewport height.
  • Added support for Vitest and Playwright screenshot capture options such as
    animations, caret, mask, maskColor, omitBackground, scale, and
    timeout.
  • Added minClusterSize and failOnDiff options to toMatchScreenshot.
  • Added support for calling toMatchScreenshot with options only, without a
    screenshot name.

Changed

  • Visual diffs are now recorded without failing the assertion unless
    failOnDiff is enabled by the screenshot option, environment, or Vizzly TDD
    server configuration.
  • New screenshot baselines now pass after being created, so first-time captures
    do not fail the Vitest run.
  • vizzlyPlugin is now configuration-free; pass screenshot behavior through
    toMatchScreenshot options instead.
  • Package scripts and docs now use pnpm commands for installation and test
    workflows.

Fixed

  • Fixed element screenshots so fullPage is not passed to element capture or
    recorded as full-page metadata.
  • Fixed Vizzly-only options so they are sent to Vizzly as comparison metadata
    instead of being forwarded to browser screenshot capture.
  • Fixed reserved runtime metadata such as framework, Vitest marker, URL, and
    browser so user-provided properties cannot accidentally overwrite the current
    browser session values.

Full Changelog: vitest/v0.1.1...vitest/v0.2.0

📱 Swift SDK v0.1.0

01 Jun 03:12

Choose a tag to compare

[0.1.0] - 2026-06-01

What's Changed

This is the first tagged release of the Vizzly Swift SDK. It gives iOS and
macOS test suites a small Swift Package Manager client for sending screenshots
to Vizzly from XCTest, without needing each app to hand-roll the HTTP payloads
or local TDD server discovery.

Added

  • Added the Vizzly Swift package with two library products:
    • Vizzly, the core screenshot upload client.
    • VizzlyXCTest, convenience helpers for XCTestCase, XCUIApplication,
      and XCUIElement.
  • Added local TDD server discovery through VIZZLY_SERVER_URL,
    project-local .vizzly/server.json, global .vizzly/server.json, and the
    default TDD port fallback.
  • Added screenshot uploads with base64 PNG payloads, buildId support,
    request timeouts, and graceful disabling after connection or server failures.
  • Added XCTest-friendly metadata capture for platform, device, OS, viewport,
    and element type while still letting user-provided properties win.
  • Added comparison options for threshold, minClusterSize, and fullPage
    so Swift screenshots use the same option contract as the other SDKs.
  • Added failOnDiff support from explicit client configuration,
    VIZZLY_FAIL_ON_DIFF, and discovered TDD server settings.

Tested

  • Added Swift unit coverage for payload shape, comparison options, build IDs,
    metadata merging, disabled clients, and client state.
  • Added Swift SDK E2E coverage that runs through the real local Vizzly TDD
    server and verifies screenshots can be uploaded, repeated, and matched.
  • The release workflow builds and tests the Swift package before tagging the
    release.

📚 Storybook Plugin v0.8.0

01 Jun 02:30

Choose a tag to compare

[0.8.0] - 2026-06-01

What's Changed

Added

  • Added support and documentation for Storybook 10 projects.
  • Added a CLI-discoverable plugin entrypoint at @vizzly-testing/storybook/plugin.
  • Added --no-headless, --no-full-page, --timeout, and
    --request-timeout command options.
  • Added per-story screenshot metadata for cloud uploads, including story ID,
    story title, story name, viewport name, viewport size, browser, URL, and
    custom parameters.vizzly.screenshot.properties.
  • Added per-story support for screenshot threshold, minClusterSize,
    fullPage, omitBackground, timeout, and requestTimeout overrides.

Changed

  • Screenshots now default to full-page capture. Use --no-full-page or
    storybook.screenshot.fullPage: false for viewport-only captures.
  • Default concurrency is now auto-detected from CPU cores instead of using a
    fixed value.
  • Include, exclude, and interaction hook patterns now match against more story
    fields, including ID, title/name, title, name, and import path.
  • Cloud run configuration now honors shared comparison settings such as
    comparison.threshold and comparison.minClusterSize.
  • JavaScript install and build examples now use pnpm.

Fixed

  • Fixed Storybook story URL capture so uploaded screenshots include the isolated
    story preview URL.
  • Fixed Storybook navigation fallback when client-side story rendering does not
    complete before the configured timeout.
  • Fixed cloud run finalization so builds are marked failed when screenshot
    capture has errors and finalized successfully when no stories are found.
  • Fixed static Storybook server shutdown so open connections do not keep the
    process alive.

Full Changelog: storybook/v0.7.0...storybook/v0.8.0

🏗️ Static Site Plugin v0.3.0

01 Jun 01:43

Choose a tag to compare

[0.3.0] - 2026-06-01

What's Changed

Added

  • Added browser engine selection for static-site captures. Use --browser
    or staticSite.browser.type to run screenshots in chromium, firefox,
    or webkit.
  • Added --no-headless, --no-full-page, and --no-use-sitemap CLI flags
    for clearer opt-out control over browser visibility, screenshot mode, and
    sitemap discovery.
  • Added --request-timeout and staticSite.screenshot.requestTimeout for
    controlling the Vizzly screenshot upload request timeout separately from the
    browser screenshot timeout.
  • Added richer screenshot metadata, including browser, page URL, full-page
    mode, viewport name, and viewport dimensions.
  • Added support for the shared top-level comparison.minClusterSize option in
    static-site cloud runs.

Changed

  • Full-page screenshots are now the default. Use --no-full-page or
    staticSite.screenshot.fullPage: false to capture only the viewport.
  • Default concurrency is now CPU-aware instead of a fixed value, with automatic
    defaults between 2 and 8 workers.
  • Screenshot viewport dimension properties now use viewport_width and
    viewport_height naming.
  • Static Site examples and documentation now use pnpm commands and the updated
    programmatic SDK context shape.

Fixed

  • Fixed include, exclude, interaction, and page override pattern matching so
    paths work consistently with or without a leading slash.
  • Fixed URL generation for discovered .html pages so paths that already end
    in .html are not requested with a duplicate .html suffix.
  • Fixed cloud build finalization so runs with screenshot failures are marked as
    failed instead of successful.
  • Improved missing-browser errors with the exact Playwright install command for
    the selected browser.
  • Improved static server shutdown so lingering connections do not keep the
    process open.

Full Changelog: static-site/v0.2.0...static-site/v0.3.0

💎 Ruby Client v0.3.0

01 Jun 02:57

Choose a tag to compare

[0.3.0] - 2026-06-01

What's Changed

Added

  • Added fail_on_diff support for local TDD visual diffs. Configure it with
    Vizzly::Client.new(fail_on_diff: true), VIZZLY_FAIL_ON_DIFF=true, or
    the local TDD server setting to raise Vizzly::Error when a visual diff is
    detected.
  • Added per-screenshot build_id and request_timeout options, with
    snake_case Ruby names and camelCase aliases for JavaScript API parity.
  • Added VIZZLY_ENABLED=false support to disable screenshot capture from the
    environment.
  • Added richer Client#info output, including serverUrl, buildId,
    fail_on_diff, and failOnDiff.

Changed

  • Screenshot option handling now separates Vizzly options from user metadata.
    Reserved options passed inside properties are promoted to the correct
    request fields and emit a warning so properties can remain user metadata.
  • threshold now accepts numeric values and is documented as a Delta E
    comparison threshold.

Fixed

  • Fixed request handling for HTTPS server_url values.
  • Fixed screenshot option serialization for string-keyed options, camelCase
    aliases, zero values, fractional thresholds, and nested metadata hashes.
  • Fixed local TDD diff handling so both current successful diff responses and
    legacy 422 diff responses are handled consistently when fail_on_diff is
    enabled.

Full Changelog: ruby/v0.2.1...ruby/v0.3.0

🐹 Ember SDK v0.1.0

01 Jun 02:36

Choose a tag to compare

[0.1.0] - 2026-06-01

What's Changed

Added

  • Added per-screenshot comparison options to vizzlyScreenshot(): threshold and minClusterSize.
  • Added support for per-screenshot buildId and requestTimeout options, including forwarding them through the Ember screenshot server to Vizzly.
  • Added automatic screenshot metadata for the current page URL, browser, viewport width, and viewport height so captures are easier to group, compare, and link back to preview pages.

Changed

  • Aligned the Ember SDK screenshot option contract with the other Vizzly JavaScript SDKs: Vizzly routing, comparison, timeout, and build options now stay as explicit options, while properties remains the custom metadata bag.
  • Updated screenshot capture behavior so requested viewport dimensions are applied before capture.
  • Changed full-page handling so fullPage only applies to page captures; app, container, and selector captures are element-sized.
  • Updated cloud upload guidance to run Ember tests through vizzly run so uploads can be finalized correctly.
  • Updated JavaScript package-management examples and test-app workflow from npm commands to pnpm commands.

Fixed

  • Fixed selector screenshots so page-only fullPage options are not passed to element screenshots.
  • Fixed cloud-mode/no-server messaging to point users to vizzly tdd start for local runs or vizzly run for cloud uploads.
  • Fixed stale .vizzly/playwright.json behavior by removing the generated Playwright config when no launcher options are provided.
  • Simplified Chromium CI launch arguments while retaining the stability flags needed for CI environments.

Full Changelog: ember/v0.0.3...ember/v0.1.0

✨ v0.35.0

31 May 23:12

Choose a tag to compare

What's Changed

Added

  • Added consistent screenshot option handling across the CLI and SDKs for
    threshold, minClusterSize, fullPage, buildId, and requestTimeout,
    with warnings when reserved options are accidentally placed in properties.
  • Added fail-on-diff propagation for local TDD flows across the JavaScript
    client, Vitest, Ember, Ruby, and Swift SDKs.
  • Added request timeout support to SDK screenshot calls and Storybook,
    static-site, Ember, Ruby, and Swift integrations.
  • Added --min-cluster-size support to vizzly upload and environment
    overrides for VIZZLY_THRESHOLD and VIZZLY_MIN_CLUSTER_SIZE.
  • Added a VizzlyXCTest Swift Package library target for XCTest helpers.

Changed

  • Aligned Storybook and static-site cloud runs to pass build metadata,
    comparison settings, pull request numbers, and parallel IDs consistently.
  • Updated SDK metadata so browser, viewport, URL, framework, and custom
    properties are sent consistently across Storybook, static-site, Vitest,
    Ember, Ruby, and Swift.
  • Improved Storybook and static-site options for browser visibility,
    screenshot timeouts, request timeouts, concurrency validation, and pattern
    matching.
  • Updated JSON output behavior and documentation so structured payloads are
    clearer and progress-style messages do not pollute stdout in JSON mode.

Fixed

  • Fixed vizzly upload --wait so failed comparisons return a non-zero exit
    code.
  • Fixed vizzly upload --upload-all so it bypasses SHA deduplication and sends
    every screenshot.
  • Fixed vizzly run, vizzly upload, and vizzly tdd to honor configured
    build branch, commit, message, build name, comparison, and parallel options.
  • Fixed vizzly preview --base path handling and JSON output fields.
  • Fixed vizzly api --data validation so request bodies require --method POST.
  • Fixed static-site capture for .html paths and leading-slash pattern matches.
  • Fixed Vitest screenshot matching so new baselines pass and visual diffs only
    fail assertions when fail-on-diff is enabled.
  • Fixed vizzly project link to honor the global --token override.

Developer Experience

  • Expanded TypeScript definitions for screenshot results, upload options,
    build results, failOnDiff, requestTimeout, and related SDK contracts.
  • Expanded SDK and CLI test coverage for aligned option handling, JSON output,
    uploads, TDD behavior, Storybook, static-site, Vitest, Ember, Ruby, and Swift.
  • Updated README and integration docs for linked projects, upload options,
    JSON output, browser flags, and SDK metadata conventions.

Full Changelog: v0.34.0...v0.35.0

✨ v0.34.0

27 May 23:10

Choose a tag to compare

What's Changed

Added

  • Added a packaged Vizzly agent skill so coding agents can understand Vizzly as screenshot memory, including baselines, diffs, review state, dynamic regions, and public screenshot URLs.
  • Added vizzly init --agent-skill to install the repo-local Vizzly skill.
  • Added vizzly init --agent-guidance to install the skill and add project-scoped AGENTS.md guidance for visual UI work.

Changed

  • Documented the agent setup flow in the README and JSON output docs.
  • Updated the CLI release workflow to generate release notes from the real release diff using Codex, while keeping the output concise and changelog-style.

Developer Experience

  • Hardened GitHub Actions around the current pnpm and GitHub runner environment by pinning Node 22.13.1, refreshing Corepack before preparing pnpm, and restoring Node after Codex release-note generation.
  • Built the package explicitly before npm publish and disabled publish lifecycle scripts so release builds do not fall back to the runner's older Node runtime.

Full Changelog: v0.33.0...v0.34.0