Skip to content

Releases: vizzly-testing/cli

✨ v0.23.1

19 Jan 23:38

Choose a tag to compare

v0.23.1

What's Changed

Fixed

  • GitHub Actions PR commit SHA detection - Fixed incorrect commit SHA detection for GitHub Actions pull_request events. The CLI now correctly reads the PR head commit SHA from the GitHub Actions event payload instead of using the temporary merge commit SHA. This fixes check runs appearing on wrong commits and baseline detection issues in PR workflows.

  • SDK E2E test compatibility - Fixed SDK E2E tests to work properly with both vizzly tdd run (local TDD mode) and vizzly run (cloud mode). All SDKs now detect the VIZZLY_SERVER_URL environment variable to skip starting their own TDD server when running under the Vizzly CLI.

Changed

  • CI workflow organization - Restructured CI workflows from a single monolithic ci.yml into focused, maintainable workflow files: sdk-e2e.yml, sdk-unit.yml, reporter.yml, and tui.yml for better clarity and faster feedback.

Dependencies

  • Updated Babel packages (@babel/cli, @babel/core, @babel/preset-env) from 7.28.3/5 to 7.28.6
  • Updated @tanstack/react-query from 5.90.16 to 5.90.19
  • Updated @types/node from 25.0.6 to 25.0.9

Full Changelog: v0.23.0...v0.23.1

✨ v0.23.0

15 Jan 06:45

Choose a tag to compare

Vizzly CLI v0.23.0

What's Changed

Added

  • Preview command for static site hosting - New vizzly preview <path> command enables teams to upload static files (dist/, build/, etc.) as previews attached to builds. Useful for sharing live previews of built applications alongside visual test results
  • Session tracking - Build context now flows between commands via .vizzly/session.json, enabling seamless multi-step workflows
  • GitHub Actions integration - vizzly run now auto-writes VIZZLY_BUILD_ID to $GITHUB_ENV for easy cross-step use in CI
  • Preview URL in status - vizzly status command now displays the preview URL when available
  • SDK E2E testing in CI - Added automated end-to-end tests for all SDKs (JS, Vitest, Ember, Ruby) to prevent integration regressions

Fixed

  • Vitest SDK status values - Fixed Vitest client to use correct status values from TDD handler (match/diff instead of passed/failed). This resolves the "Unknown comparison status: match" error
  • Performance improvements - Updated honeydiff to v0.8.1 for significant performance gains:
    • SSIM calculation now 5x faster using integral images and parallel processing
    • Full HD (1920×1080) image comparisons: 239ms → 51ms
    • Identical image detection skip saves ~250M operations per comparison
  • Security fixes - Fixed ReDoS vulnerability in MCP SDK UriTemplate regex patterns

Changed

  • Dependency updates - Updated honeydiff (0.8.0 → 0.8.1), MCP SDK (1.25.1 → 1.25.2), Node types (25.0.3 → 25.0.6), and Vite (7.3.0 → 7.3.1)

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

🧪 Vitest Integration v0.1.1

15 Jan 06:47

Choose a tag to compare

[0.1.1] - 2026-01-15

What's Changed

Fixed

  • Fixed compatibility with Vizzly CLI v0.23.0+ by updating status value handling from passed/failed to match/diff
  • Added support for baseline-updated status to properly handle baseline updates in TDD mode

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

✨ v0.22.2

07 Jan 03:19

Choose a tag to compare

Vizzly CLI v0.22.2

What's Changed

Changed

  • Performance optimization for screenshot type detection: The client SDK now explicitly specifies the image data type ('base64' or 'file-path'), allowing the server to skip expensive regex validation on every screenshot. This eliminates O(n) processing for large base64 strings and significantly speeds up processing for content-heavy pages.

  • Reduced CLI bundle size: Removed unused static-site SDK dependency from CLI package dependencies.

Fixed

  • File path detection false positives: Fixed looksLikeFilePath utility to correctly distinguish between JPEG base64 data (which starts with /9j/) and actual file paths.

Backwards Compatibility

All changes are fully backwards compatible. The server gracefully falls back to type detection for client SDKs that don't yet provide the explicit type field.

Full Changelog: v0.22.1...v0.22.2

✨ v0.22.1

07 Jan 01:03

Choose a tag to compare

What's Changed

Added

  • Intelligent release notes generation: The release workflow now uses Claude Code to generate comprehensive, user-friendly release notes automatically instead of simple commit lists. This provides better context and clearer descriptions of what changed.

Fixed

  • Catastrophic regex backtracking in base64 detection: Fixed a performance issue in the isBase64 validation regex that caused stack overflow errors on large base64 strings (such as changelog screenshots). The regex has been replaced with a simpler, non-backtracking validation approach that:
    • Validates character classes directly
    • Checks length is divisible by 4
    • Allows up to 2 padding characters at the end
  • Improved error reporting: 500 error messages in the screenshot server now include actual error details for better debugging
  • Browser test isolation: Fixed browser tests that were inadvertently opening actual browser tabs during test runs by exporting validation logic as a pure function

Full Changelog: static-site/v0.0.11...v0.22.1

🧪 Vitest Integration v0.1.0

07 Jan 03:44

Choose a tag to compare

[0.1.0] - 2026-01-07

What's Changed

Changed

  • Migrated to Biome for linting and formatting - Replaced ESLint + Prettier with Biome for faster, unified code quality checks. Updated all npm scripts (lint, format, check) to use Biome tooling.

Performance

  • Improved screenshot upload performance - Added explicit type: 'file-path' field when sending screenshots to the Vizzly server, enabling O(1) type detection instead of content sniffing. This reduces server-side processing overhead for every screenshot.

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

[0.0.3] - 2025-11-29

[0.1.0] - 2025-01-24

Added

  • Initial release of Vitest v4 browser mode integration
  • Drop-in replacement for Vitest's native toMatchScreenshot matcher
  • vizzlyPlugin() Vite plugin for seamless integration
  • Custom matcher implementation via expect.extend() in browser context
  • Direct HTTP communication from browser to Vizzly server
  • Support for both TDD mode (local comparison) and cloud mode (async upload)
  • First-class API with properties, threshold, and fullPage options
  • getVizzlyStatus() helper to check Vizzly availability
  • getVizzlyInfo() re-export from CLI client
  • Comprehensive documentation and examples

Features

  • True Drop-in Replacement - Just add plugin, no test changes required
  • Standard Vitest API - Use native toMatchScreenshot syntax
  • TDD Mode - Interactive local dashboard with instant feedback
  • Cloud Mode - Team collaboration with visual reviews
  • Clean Options API - Top-level properties, not nested
  • Auto-discovery - Automatically finds running TDD server
  • Graceful Degradation - Tests pass when Vizzly not available
  • No Conflicts - Completely disables Vitest's native system

🐹 Ember SDK v0.0.3

07 Jan 05:07

Choose a tag to compare

[0.0.3] - 2026-01-07

What's Changed

Changed

  • Removed unused remote browser configuration options (browserWSEndpoint, connectOverCDP, rewriteUrlForDocker) that were for an abandoned remote browser approach. Docker workflows now rely solely on the VIZZLY_SERVER_URL environment variable.

Fixed

  • Fixed catastrophic regex backtracking in base64 detection that caused stack overflow on large screenshots (like changelog images). Replaced with simpler non-backtracking validation logic.
  • Improved error messages in screenshot server to include actual error details instead of generic 500 responses.
  • Reduced console noise by only logging connection errors once instead of repeatedly.

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

🏗️ Static Site Plugin v0.0.11

06 Jan 22:10

Choose a tag to compare

[0.0.11] - 2026-01-06

What's Changed

Added

  • Support for array patterns in include and exclude configuration options, allowing multiple page sections to be filtered without complex regex patterns

Full Changelog: static-site/v0.0.10...static-site/v0.0.11

🐹 Ember SDK v0.0.2

06 Jan 18:56

Choose a tag to compare

[0.0.2] - 2026-01-06

What's Changed

Fixed

  • Screenshot capture now gracefully handles connectivity errors instead of failing tests. When the Vizzly TDD server is not running or unreachable, screenshots are skipped with a console warning rather than breaking your test suite. Only intentional visual diff failures (when failOnDiff is enabled) will still throw errors as expected.

Full Changelog: ember/v0.0.1...ember/v0.0.2

🐹 Ember SDK v0.0.1

06 Jan 08:21

Choose a tag to compare

[0.0.1] - 2026-01-06

What's Changed

Added

  • Playwright options support via configure() second parameter for full control over browser launch options (headless mode, slowMo, timeout, proxy, etc.)
  • --fail-on-diff CLI flag and per-screenshot option to control whether visual differences should fail tests (defaults to false - diffs logged as warnings)
  • Graceful SDK behavior when no Vizzly server is running - screenshots are skipped instead of throwing errors

Changed

  • BREAKING: Renamed vizzlySnapshot()vizzlyScreenshot() for consistency with Vizzly terminology
  • BREAKING: Renamed vizzly-browser binary → vizzly-testem-launcher to better reflect its purpose
  • Browser now runs in headless mode by default (set headless: false in playwrightOptions for headed mode)
  • Visual diffs no longer fail tests by default - use --fail-on-diff flag or per-screenshot option to enable strict mode

Fixed

  • "Browser exited unexpectedly" error when running Ember tests with Testem - launcher now properly lets Testem manage browser lifecycle
  • Improved error handling and logging with stack traces - use VIZZLY_LOG_LEVEL=debug for detailed output
  • Exit with proper error code (1) on failures instead of always returning 0
  • npm bin path format in package.json for better npm compatibility
  • Repository URL format in package.json

Full Changelog: ember/v0.0.1-beta.1...ember/v0.0.1