rossjcooper / laravel-dusk-visual-assert
为Laravel Dusk测试添加断言以比较截图
1.0.6
2023-09-20 12:47 UTC
Requires
- ext-imagick: *
- laravel/dusk: ^7
README
本软件包添加断言以比较在Laravel Dusk测试中使用Imagick扩展拍摄的截图。
安装
您可以通过composer安装此软件包
composer require --dev rossjcooper/laravel-dusk-visual-assert
配置
发布配置文件以控制默认设置
php artisan vendor:publish --tag=visual-assert-config
使用
Dusk浏览器类现在可以访问一些新方法
assertScreenshot()
此方法将捕获当前页面的截图并将其与参考图像(第一次运行测试时生成)进行比较。
如果图像不同,测试将失败并保存图像差异,以便您可以检查差异。
$browser->assertScreenshot(string $name, float|null $threshold = null, int|null $metric = null)
示例
$this->browse(function (Browser $browser) { $browser->visit('/') ->assertScreenshot('home'); });
assertResponsiveScreenshots()
此方法类似于上面的assertScreenshot
,但它会在不同的屏幕尺寸下截图页面。
$browser->assertResponsiveScreenshots(string $name, float|null $threshold = null, int|null $metric = null)
示例
$this->browse(function (Browser $browser) { $browser->visit('/') ->assertResponsiveScreenshots('home'); });
更新参考图像
如果您想更新参考图像,只需从tests/Browser/screenshots/references
目录中删除它们,然后重新运行测试以生成新的图像。
我建议将参考图像提交到您的存储库,以便您可以跟踪它们随时间的变化。
注意事项
在比较图像时,该软件包将期望截图与参考图像具有相同的宽度和高度。
Error: Screenshots are not the same size, ensure the screenshots are taken using the same Dusk environment.
Failed asserting that false is true.
如果Dusk环境已更改(无头模式、窗口大小等),则比较截图可能有不同的尺寸,断言将失败。
如果您需要暂时使用不同的Dusk环境,可以更改skip_if_different_window_size
配置选项来克服此问题。