Releases: vizzly-testing/cli
✨ v0.23.1
v0.23.1
What's Changed
Fixed
-
GitHub Actions PR commit SHA detection - Fixed incorrect commit SHA detection for GitHub Actions
pull_requestevents. 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) andvizzly run(cloud mode). All SDKs now detect theVIZZLY_SERVER_URLenvironment 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.ymlinto focused, maintainable workflow files:sdk-e2e.yml,sdk-unit.yml,reporter.yml, andtui.ymlfor 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-queryfrom 5.90.16 to 5.90.19 - Updated
@types/nodefrom 25.0.6 to 25.0.9
Full Changelog: v0.23.0...v0.23.1
✨ v0.23.0
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 runnow auto-writesVIZZLY_BUILD_IDto$GITHUB_ENVfor easy cross-step use in CI - Preview URL in status -
vizzly statuscommand 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/diffinstead ofpassed/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
[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/failedtomatch/diff - Added support for
baseline-updatedstatus to properly handle baseline updates in TDD mode
Full Changelog: vitest/v0.1.0...vitest/v0.1.1
✨ v0.22.2
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
looksLikeFilePathutility 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
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
isBase64validation 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
[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
toMatchScreenshotmatcher 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, andfullPageoptions getVizzlyStatus()helper to check Vizzly availabilitygetVizzlyInfo()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
toMatchScreenshotsyntax - 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
[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 theVIZZLY_SERVER_URLenvironment 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
[0.0.11] - 2026-01-06
What's Changed
Added
- Support for array patterns in
includeandexcludeconfiguration 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
[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
failOnDiffis enabled) will still throw errors as expected.
Full Changelog: ember/v0.0.1...ember/v0.0.2
🐹 Ember SDK v0.0.1
[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-diffCLI 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-browserbinary →vizzly-testem-launcherto better reflect its purpose - Browser now runs in headless mode by default (set
headless: falseinplaywrightOptionsfor headed mode) - Visual diffs no longer fail tests by default - use
--fail-on-diffflag 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=debugfor 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