菜单

测试框架

相关源文件

ECharts 测试框架是一个视觉回归测试系统,旨在确保代码库的更改不会无意中影响图表的视觉外观。本文档解释了该框架的架构、组件和用法。

概述

该测试框架使用 Puppeteer 自动化浏览器,捕获图表渲染的屏幕截图,并将其与预期的参考图像进行比较。它支持录制和回放用户交互以测试复杂的交互行为,并且可以针对不同的 ECharts 版本和渲染模式(Canvas/SVG)运行测试。

架构

该框架由几个协同工作的关键组件组成

来源:test/runTest/server.js40-457 test/runTest/cli.js20-480 test/runTest/client/index.html1-377 test/runTest/store.js1-364

测试执行流程

以下图表展示了测试从开始到结束的执行方式

来源:test/runTest/cli.js172-329 test/runTest/runtime/main.js19-201

组件详情

服务器组件

服务器组件 (server.js) 负责

  • 通过 HTTP 提供测试文件
  • 管理测试执行
  • 协调客户端 UI 与测试运行器之间的通信
  • 处理版本化的 ECharts 库

来源:test/runTest/server.js65-457

CLI 测试运行器

CLI 组件 (cli.js) 使用 Puppeteer 执行测试并进行屏幕截图比较

来源:test/runTest/cli.js172-329 test/runTest/cli.js343-417

存储系统

存储组件 (store.js) 管理测试数据的持久化和检索

来源:test/runTest/store.js47-263

运行时代码

运行时代码被注入到测试页面中,以控制执行和捕获屏幕截图

来源:test/runTest/runtime/main.js19-201

客户端用户界面

客户端 UI 提供了一个可视化界面,用于

  • 选择和运行测试
  • 查看测试结果和屏幕截图比较
  • 配置测试参数
  • 录制用户交互

主要功能

功能描述
测试列表所有可用测试的列表,带有状态指示器
测试运行器运行选定测试的控件,带有配置选项
结果查看器预期屏幕截图与实际屏幕截图的可视化比较,带有差异高亮显示
配置ECharts 版本、渲染器、线程数等设置
操作录制器录制用户交互的界面

来源:test/runTest/client/index.html29-363 test/runTest/client/client.js20-661

测试配置选项

该框架支持多种配置选项

选项描述默认
预期来源预期版本来源(release/nightly/PR/local)"release"
预期版本用于比较的版本号最新版本
实际来源实际版本来源(release/nightly/PR/local)"local"
实际版本正在测试的版本号"local"
渲染器渲染模式 (canvas/svg)"canvas"
粗略指针是否使用粗略指针事件“auto”
线程并发测试线程数4

来源:test/runTest/client/client.js156-167 test/runTest/server.js228-379

运行测试

从命令行

测试可以通过 CLI 直接运行

这会启动服务器并在您的默认浏览器中打开客户端 UI。

从 UI

  1. 使用复选框选择要运行的测试
  2. 配置测试参数(版本、渲染器等)
  3. 点击“运行”按钮
  4. 在界面中查看结果

创建测试

  1. 在 test 目录中创建一个包含 ECharts 实例的 HTML 文件
  2. 使用测试辅助工具创建图表
  3. 通过点击 UI 中的“录制交互”来录制用户交互
  4. 运行测试以生成基线屏幕截图

来源:test/graph-case.html85-94 test/custom-update.html185-217

屏幕截图比较过程

来源:test/runTest/cli.js114-147 test/runTest/cli.js350-398

测试报告

该框架可以生成 HTML 报告,显示

  • 整体测试统计
  • 失败测试详情
  • 预期与实际屏幕截图的并排比较
  • 高亮显示差异

可以通过点击测试运行对话框中的“报告”从 UI 生成报告。

来源:test/runTest/genReport.js56-151

测试黑名单

某些测试可能不适合视觉回归测试(例如,带有随机数据或大量动画的测试)。这些测试可以被列入黑名单

来源:test/runTest/blacklist.js20-58

与 CI/CD 集成

该测试框架可以集成到 CI/CD 流水线中,以便在拉取请求或发布前自动检测视觉回归。

故障排除

常见问题和解决方案

  1. 结果不一致:确保随机种子已固定且动画已禁用
  2. 性能问题:减少线程数或对复杂图表使用 SVG 渲染器
  3. 缺少依赖:在 test/runTest 目录中运行 npm install
  4. 超时错误:增加复杂测试的超时设置或降低线程数