菜单

测试框架

相关源文件

Mermaid 测试框架通过端到端测试、视觉回归测试和自动化浏览器测试,为图表渲染提供全面的验证。该系统确保图表生成在不同的配置、主题和浏览器环境中保持一致,同时检测渲染输出中的视觉回归。

有关执行这些测试的 CI/CD 管道的信息,请参阅 CI/CD 管道。有关项目构建和打包用于测试的详细信息,请参阅 构建与打包

测试架构概述

该测试框架以 Cypress 为核心,用于端到端测试,并配备自定义实用工具以进行视觉回归测试。该系统验证不同图表类型和配置下的功能行为和视觉输出一致性。

来源:cypress/integration/rendering/flowchart-v2.spec.js1-15 cypress/integration/rendering/sequencediagram.spec.js1-5 cypress/integration/rendering/flowchart-elk.spec.js1-5 cypress/platform/current.html1-30

Cypress 端到端测试系统

核心测试系统使用 Cypress 执行基于浏览器的测试,以验证图表渲染功能和视觉输出。测试按图表类型组织,并利用自定义辅助函数以实现一致的测试执行。

测试辅助函数

该测试框架提供专门的辅助函数,用于抽象常见的测试模式

功能目的返回类型文件位置
imgSnapshotTest使用图像快照进行视觉回归测试voidcypress/helpers/util.ts
renderGraph渲染图表并返回DOM以进行断言voidcypress/helpers/util.ts
verifyNumber在容差范围内验证数值voidcypress/helpers/util.ts

测试执行流程

来源:cypress/integration/rendering/flowchart-v2.spec.js4-15 cypress/integration/rendering/sequencediagram.spec.js40-68 cypress/integration/rendering/flowchart-elk.spec.js92-103

视觉回归测试

视觉回归测试通过捕获和比较渲染图表的图像快照来检测视觉输出中意外的更改。该系统验证配置更改、代码更新和主题修改不会破坏现有图表渲染。

图像快照测试

imgSnapshotTest 函数通过渲染图表并比较屏幕截图来处理视觉回归测试。

配置测试

测试验证不同的配置组合,以确保向后兼容性和正确的功能特性。

来源:cypress/integration/rendering/flowchart-v2.spec.js17-29 cypress/integration/rendering/flowchart-v2.spec.js66-81 cypress/integration/rendering/flowchart-icon.spec.js3-28

测试组织与分类

测试文件按图表类型和功能组织,每个类别都侧重于特定的渲染特性和边缘情况。

图表类型测试

测试文件目的测试数量主要功能
flowchart-v2.spec.js流程图渲染验证100+ 个测试节点形状、边、子图、样式
flowchart.spec.js传统流程图测试60+ 个测试基本流程图功能
sequencediagram.spec.js序列图测试50+ 个测试参与者、消息、循环、样式
flowchart-elk.spec.jsELK 布局测试80+ 个测试ELK 特定布局验证
flowchart-icon.spec.js图标渲染测试10+ 个测试FontAwesome 图标集成

测试用例结构

各个测试用例遵循一致的模式,以提高可维护性和可读性。

来源:cypress/integration/rendering/flowchart-v2.spec.js3-47 cypress/integration/rendering/sequencediagram.spec.js3-68 cypress/integration/rendering/flowchart-elk.spec.js3-57

测试配置与实用工具

该测试系统为不同的测试场景和图表验证要求提供了灵活的配置选项和实用工具。

HTML 测试平台

cypress/platform/current.html 文件作为渲染图表的测试环境。

测试配置选项

测试可以指定各种配置参数来验证不同的渲染场景。

配置类别选项使用示例
布局引擎{ layout: 'elk' }ELK 与 Dagre 布局测试
HTML 标签{ htmlLabels: true/false }HTML 与 SVG 文本渲染
安全级别{ securityLevel: 'strict/loose' }安全功能验证
主题{ theme: 'dark/forest/base' }主题特定渲染
流程图选项{ flowchart: { useMaxWidth: true } }流程图特定功能

来源:cypress/platform/current.html83-96 cypress/integration/rendering/flowchart-v2.spec.js82-104 cypress/integration/rendering/sequencediagram.spec.js812-841

测试执行与验证

测试框架通过视觉回归测试和基于DOM的功能测试来执行验证,以确保图表渲染功能的全面覆盖。

DOM 断言测试

测试可以在图表渲染后验证特定的 DOM 属性和特性。

视觉回归工作流

视觉回归测试工作流确保在代码更改后图表外观保持一致。

来源:cypress/integration/rendering/flowchart-v2.spec.js92-123 cypress/integration/rendering/sequencediagram.spec.js32-39 cypress/integration/rendering/flowchart-elk.spec.js687-700