单元测试#

运行 Python 测试:

pytest --cov=ipywidgets ./python/ipywidgets

在每个包目录中运行Javascript测试:

yarn test

这将使用karma运行测试套件,日志级别为‘debug’。

可视化回归测试#

ipywidgets 使用 Galata 框架进行视觉回归测试。Galata 提供了一个高级 API 来以编程方式与 JupyterLab 界面交互,并提供用于截屏和生成测试报告的工具。

UI测试是用TypeScript编写的,并使用Playwright测试运行器运行。测试套件位于ui-tests/tests目录中。

主测试套件会将笔记本上传到JupyterLab,逐个单元运行并捕获单元输出的屏幕截图。单元输出对应不同类型的微件。随后,将捕获的单元输出与参考快照进行比较以检测任何视觉回归。测试报告(差异、结果、视频)将作为工件上传到GitHub,并可从GitHub Actions页面的Artifacts部分访问。

本地运行测试#

首先安装依赖项:

cd ui-tests
yarn install

Galata 需要连接到正在运行的 JupyterLab 3 实例来执行用户界面测试。首先启动 JupyterLab,并让它在终端窗口中保持运行。

# in ui-tests directory
yarn start

然后运行 test 脚本:

# in the ui-tests directory
yarn test

你可以通过在命令后附加参数来向playwright传递额外的参数。例如,要在有界面模式下运行测试,yarn test --headed

查看 Playwright 命令行参考 以获取有关可用命令行选项的更多信息。

添加新的用户界面测试#

新的测试套件可以添加到ui-tests/tests目录中。它们的名称需要以.test.ts结尾。你可以在JupyterLab repo中查看一些额外的示例测试套件。如果新套件中的测试正在执行视觉回归测试或HTML源码回归测试,那么你还需要将它们的参考图像添加到-snapshots目录中。

参考图像捕获#

在进行视觉回归测试时,使用相同环境中生成的参考图像非常重要。否则,即使使用相同的浏览器进行测试,也可能会出现细微差异,导致视觉回归测试失败。

添加新的视觉回归测试时,首先确保您的测试在本地开发环境中通过,并在您的开发环境中生成参考快照。您可以通过运行yarn test:update来生成新的参考快照。

要更新快照:

  • 将新更改推送到分支

  • 等待CI检查完成

  • 前往构件部分并下载 ipywidgets-updated-snapshots 归档文件

  • 提取存档文件

  • 复制 -snapshots 目录以替换现有的

  • 提交并推送更改