Release notes

happo for npm release notes

The happo npm package: the CLI and its Storybook, Cypress and Playwright integrations.

6.15.0

  • Add navigatePerStory option to Storybook integration for per-story page navigation, useful for Storybooks with state leakage between stories [by @trotzig in #589]
  • Add support for animated (APNG) snapshots via animate configuration option (experimental), allowing Happo to step through page animations and encode frames into a single animated PNG [by @trotzig in #590]
  • Migrate Cypress test environment to use Cypress.expose() for compatibility with Cypress 16 [by @lencioni in #585]
  • Update dependencies including Cypress 16.0.0, Playwright 1.63.0, and various other patches and minor updates

6.14.0

  • Package assets as zstd-compressed tar archives instead of zip, reducing package size by 22-46% and improving decompression speed by ~7x. Automatically fall back to zip format when zstd is unavailable, with option to force zip via HAPPO_ARCHIVE_FORMAT=zip environment variable [by @lencioni in #580]
  • Update and dedupe dependencies [by @lencioni in #581]

6.13.3

  • Fix regression where skipped examples in e2e flow were incorrectly reported as deletions [by @trotzig in #574]
  • Make --skip and --skippedExamples true aliases across all commands [by @trotzig]
  • Validate skip list before creating external resources to prevent orphaned servers and jobs [by @trotzig]
  • Improve error messages to report correct flag name in validation failures [by @trotzig]
  • Update dependencies: jose, Storybook, ESLint, Cypress, and react-error-boundary

6.13.2

  • Improve error messages when integration runs fail by showing the failing command, exit code, and CI job logs URL [by @lencioni in #570]
  • Parallelize dynamic imports in handleDefaultCommand for better performance [by @lencioni]
  • Update cypress, typescript-eslint, and other dependencies to latest patch and minor versions

6.13.1

  • Fix API key/secret leak in e2e and finalize CLI commands by gating debug output behind HAPPO_DEBUG environment variable [by @trotzig in #562]
  • Update development dependencies including eslint-plugin-simple-import-sort, jsdom, Playwright, Cypress, and Storybook

6.13.0

  • Support Storybook v8 [by @trotzig in #506]

6.12.1

  • Throw descriptive errors when inline dynamic targets are malformed instead of silently dropping them [by @trotzig in #504]
  • Add helpful hint in validation errors when using legacy browser/browserType fields instead of type
  • Drop snapshots from failed Playwright test attempts to prevent duplicates with -2 suffix on retry

6.12.0

This changes default behavior. Runs that have stale waitForContent or waitFor values will start failing instead of silently producing screenshots with a ~20s timeout penalty per snap.

If you encounter a failure after upgrading:

  • Preferred: update the offending waitForContent / waitFor so it matches what is actually rendered. This is almost always the right fix — it removes both the failure and the wasted wait time.
  • Last resort: set failOnWaitForTimeout: false in your Happo config to restore the previous warn-and-screenshot behavior while you investigate.

Changes:

  • Add failOnWaitForTimeout config option (default: true) to control timeout behavior for waitForContent and waitForSelector — when enabled, timeouts fail the snap with a clear error instead of warning silently [by @lencioni in #500]

6.11.0

  • Support extending full reports from baseline when --only is given an empty JSON array [by @trotzig in #491]
  • Throw clear error when empty --only can't enumerate components from build output
  • Fix report message to use only commit subject line instead of full body for push/merge-group events [by @trotzig in #490]
  • Upgrade pnpm from v10 to v11 with proper configuration migration [by @lencioni in #487]
  • Update dependencies: eslint 10.3.0, typescript-eslint 8.59.2, storybook 10.3.6, and others

6.10.8

  • Fix --skip flag for custom builds that replace the document on render by reading skip list once during initialization [by @trotzig in #482]

Need help?