用途:为 Textual 终端界面应用做视觉回归测试,通过 pytest-textual-snapshot 捕获 SVG 截图并与历史基线比较,发现界面渲染差异。
主要能力:提供 snap_compare 夹具,可传入 App 实例或应用文件路径;支持 press 模拟按键、terminal_size 指定终端尺寸(默认 80x24)、run_before 异步预置操作。首次运行生成快照并使测试失败,人工确认后执行 pytest --snapshot-update 保存基线,后续运行自动比对,差异在 HTML 报告中以左右对比和叠加模式展示。
使用方式:安装 pip install pytest-textual-snapshot,安装后 snap_compare 夹具自动可用。快照存放于 tests/snapshots/ 目录,需提交到版本控制。CI 中可运行 pytest tests/snapshot -v,失败时上传 snapshot_report.html。可通过 TEXTUAL_SNAPSHOT_FILE_OPEN_PREFIX 环境变量在 VS Code、Cursor、PyCharm 中打开失败快照。
稳定性处理:在 run_before 中关闭动画(widget.can_animate = False)、关闭光标闪烁(cursor_blink = False)、等待 worker 完成、用 unittest.mock 固定 datetime.now(),并显式指定 terminal_size,以避免 CI 结果不一致。
限制:资料未提供价格、平台支持范围及性能数据;快照需人工审核确认,首次运行按设计会失败。