rossjcooper/laravel-dusk-visual-assert

为Laravel Dusk测试添加断言以比较截图

1.0.6 2023-09-20 12:47 UTC

This package is auto-updated.

Last update: 2024-09-20 14:48:02 UTC


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配置选项来克服此问题。