happo

中文文档
7.3.0发布于 2026/11/04MITTypeScriptES Module

捕捉意外的视觉和可访问性变化以及UI错误

中文使用文档
文档目录15 节
  1. 📚文档
  2. 🚀特性
  3. 📦安装
  4. 🛠️用法
  5. 基本配置
  6. CLI使用
  7. 🔧配置选项
  8. 支持的配置文件
  9. 关键配置属性
  10. 阻止批准
  11. 浏览器的目标
  12. 🤝贡献
  13. 📄许可证
  14. 🔗链接
  15. 💡支持

Happo

License: MIT

一个用于集成的开源库 happo.io -一个可视化和可访问性回归测试平台,帮助您捕获应用程序中的意外更改。

📚文档

有关全面的文档,请访问 docs.happo.io。

🚀特性

  • CLI工具包括一个命令行接口,便于集成
  • 灵活的配置:支持多种配置文件格式
  • 打印稿的支持:用TypeScript构建,并提供完整的类型定义
  • ES模块:使用现代ES模块,更好的摇树和性能

📦安装

npm install happo --save-dev
# or
pnpm add happo --save-dev
# or
yarn add happo --dev

🛠️用法

基本配置

创建一个 happo.config.ts 项目根目录下的文件:

import { defineConfig } from 'happo';

export default defineConfig({
  apiKey: process.env.HAPPO_API_KEY!,
  apiSecret: process.env.HAPPO_API_SECRET!,
  targets: {
    'chrome-desktop': {
      type: 'chrome',
      viewport: '1280x720',
    },
    'firefox-desktop': {
      type: 'firefox',
      viewport: '1280x720',
    },
    'ios-safari': {
      type: 'ios-safari',
    },
  },
});

CLI使用

在CLI中运行Happo:

npx happo

CLI将自动找到您的配置文件并运行可视化回归测试套件。

🔧配置选项

支持的配置文件

库自动检测配置文件的顺序如下:

  • happo.config.js
  • happo.config.mjs
  • happo.config.cjs
  • happo.config.ts
  • happo.config.mts
  • happo.config.cts

关键配置属性

  • apiKey & apiSecret: happo.io的鉴权凭证
  • integration:设置集成类型
  • targets:目标配置,包括常规浏览器和可访问性目标
  • project:可选项目名称
  • deepCompare:计算差异的可选设置
  • blockApproval:阻止比较被批准的可选条件

阻止批准

使用 blockApproval 在某些问题解决之前阻止比较被批准:

export default defineConfig({
  // ...
  blockApproval: {
    // Block when the report has examples that failed to render
    renderErrors: true,
    // Block when the comparison introduces new accessibility violations
    accessibilityViolations: true,
    // Block when a page starts to scroll sideways (needs a target with
    // `detectHorizontalOverflow`)
    horizontalOverflow: true,
  },
});

由于它存在于配置中,因此您可以在单个拉取请求中启用条件(并修复那里的问题),而不会影响存储库中的其他工作。

浏览器的目标

支持的浏览器类型:

  • 桌面: chrome, firefox, edge, safari, accessibility
  • 移动: ios-safari, ipad-safari

每个目标都支持高级选项,如:

  • 视窗大小
  • 最大尺寸
  • 配色偏好
  • 静音动画设置
  • 动画(APNG)快照捕获通过 animate (实验性的,没有根据 ios-safari/ipad-safari)

🤝贡献

欢迎在 happo / happo. 这个包现在是在Happo自己的存储库中开发的,所以Happo / Happo中的代码不再更新,并且那里的pull请求不能按原样合并。

📄许可证

本项目在麻省理工学院许可下授权-参见 许可证 文件查看详细信息。

💡支持

支持和问题:

版本与发布记录

happo 共发布 114 个版本,首次发布于 2016/11/23;过去 12 个月发布了 83 个版本。

版本发布日期距今
7.3.0latest2026/11/04今天
7.2.42026/11/021 天前
7.2.32026/10/286 天前
7.2.22026/10/287 天前
7.2.12026/10/287 天前
7.2.02026/10/268 天前

其他发布通道:beta → 6.0.0-beta.8。

关于 happo 的常见问题

happo 是什么?

捕捉意外的视觉和可访问性变化以及UI错误

如何安装 happo?

在项目目录运行 npm install happo,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 happo,可以用 npx happo 直接运行。

happo 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

happo 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

happo 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js ^22.18.0 || >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

happo 可以商用吗?

happo 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

happo 还在维护吗?

最新版本 7.3.0 发布于 2026/11/04(今天);至今共发布 114 个版本,其中过去 12 个月发布了 83 个;首次发布于 2016/11/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。