-
Notifications
You must be signed in to change notification settings - Fork 29
Test
江夏尧 edited this page Jan 13, 2025
·
4 revisions
现阶段 cn-font-split 的测试分为如下部分:
自动化 | 测试部分 | 代号 | 描述 | |
---|---|---|---|---|
✔ | Rust 单元测试 | test-rust | 确认 Rust 逻辑正常运行 | |
✔ | ✔ | 跨平台可用性测试 | test-cross-use | 确认 FFI 在 Linux、macOS、Windows 下皆运行正常 |
✔ | ✔ | Font Feature 视觉测试 | test-font-feature | 确认构建产物在浏览器上能够显示各种字体特性 |
✔ | 中文网字计划 CDN 全量构建测试 | 额外项目 | 确保构建产物在生产环境中,对各种字体的处理有很好的鲁棒性 |
Rust 单元测试编写在核心层代码中,主要保证代码细节函数功能正确。
https://github.com/KonghaYao/cn-font-split/actions/workflows/test-cross-use.yml
由于 Rust 产物为动态链接库,其需要依赖各种平台的 glibc 等环境来执行。故需要对常见环境进行基础的可用性测试,保证在不需要安装太多额外依赖的情况下,能够正常执行。
因为 Nodejs 的 koffi 跨平台没有那么强,这一部分测试由 nodejs 和 python 两种语言联合进行。
- 跨平台产物 hash 一致
- 由于内部为二进制构建,产物需要在多种环境中产出一致的数据
- hash 计算只包括 woff2,不包括其它杂项数据
- wasm32 平台构建成功
- 32 位平台可能会与 64 位方法冲突导致问题
平台编码 | 大小 | |
---|---|---|
✓ | aarch64-apple-darwin | 1.98 MB |
✓ | aarch64-unknown-linux-gnu-bookworm | 1.98 MB |
✓ | aarch64-unknown-linux-gnu-ubuntu20.04 | 1.98 MB |
✓ | aarch64-unknown-linux-gnu-ubuntu22.04 | 1.98 MB |
✓ | aarch64-unknown-linux-gnu-ubuntu_latest | 1.98 MB |
✓ | riscv64gc-unknown-linux-gnu | 1.98 MB |
✓ | s390x-unknown-linux-gnu | 1.98 MB |
✓ | wasm32-wasip1 | 1.98 MB |
✓ | x86_64-apple-darwin | 1.98 MB |
✓ | x86_64-pc-windows-msvc | 1.98 MB |
✓ | x86_64-unknown-linux-gnu | 1.98 MB |
https://github.com/KonghaYao/cn-font-split/actions/workflows/test-font-feature.yml
视觉测试主要通过浏览器渲染各种不同的、具有 feature 功能的字体文本,来判断与源字体的展示一致性。
视觉测试采用 playwright + ts 脚本的方式进行测试。
- 测试前需要下载全量测试字体。
- 使用 cn-font-split 进行分包
- 最后通过 Vite dev server 开启前端测试项目端口。
- Playwright 对页面进行视觉测试
- 具体为对原始字体渲染和分包后字体渲染进行截图
- 通过图片 diff 算法比较两图像素,从而验证视觉一致性。
字体相关渲染的文本和原始字体均放置在配置文件中,保证能够快速增删改查,减少维护难度。
字体文件在初始化时,会自动下载到本地的文件夹,二进制文件不计入 Git 记录。
前端测试项目主要提供简单的字体渲染展示,前端通过配置文件获取对应的字体和 CSS 文件,然后加载渲染即可。
CDN 全量构建测试主要保证 cn-font-split 在生产环境中仍然具有良好的执行能力,对各种奇奇怪怪的字体正常构建。
CDN 全量构建测试将会执行 50 多个字体的构建,并推送产物到 CDN 中,完全复用测试环境。