单元测试#
运行 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目录以替换现有的提交并推送更改