brianclogan / dusk-recordings
即使在无头模式下也能录制 dusk 测试。
dev-main
2023-01-04 21:24 UTC
Requires
- php: ~8.0
- illuminate/support: ^8.0|^9.0
- illuminate/view: ^8.0|^9.0
- laravel/dusk: ^6.15|^7.0
This package is auto-updated.
Last update: 2024-09-05 01:08:46 UTC
README
此包是从 Sander van Kasteel 的 Laravel Dusk Screenrecordings 分支。
这次更新使其适应了当前版本的 Laravel,并正在努力添加 Firefox 和 Edge 支持。
使用方法
警告:目前仅支持 Chrome
需要 PHP 8.0+
需要 Laravel 8(或更高版本)
- 首先安装此包
composer require --dev brianclogan/dusk-recordings
- 发布配置
php artisan recordings:publish
- 修改你的
tests/DuskTestcase.php
以使屏幕录制工作。
示例实现
protected function driver() { $options = (new ChromeOptions) ->setExperimentalOption("prefs", [ "download.default_directory" => $this->downloadDir ]) ->addArguments(collect([ '--window-size=1920,1080', ])->unless($this->hasHeadlessDisabled(), function ($items) { return $items->merge([ '--disable-gpu', '--headless', ]); })->merge( $this->getChromeArgs() )->all()); return RemoteWebDriver::create( $_ENV['DUSK_DRIVER_URL'] ?? 'https://:9515', DesiredCapabilities::chrome()->setCapability( ChromeOptions::CAPABILITY, $options ) ); }
最重要的部分是
$this->getChromeArgs()
和
->setExperimentalOption("prefs", [ "download.default_directory" => $this->downloadDir ])
首先,我们需要获取一组特定的参数,以便 Chrome 允许我们从非 HTTPS 源录制,并自动选择要录制的源。
最后,我们需要将 download.default_directory
设置为已知目录,以便我们知道需要从哪个目录移动录制。
- 将
WithScreenRecordings
添加到你的tests/DuskTestCase.php
,以便我们实际录制并存储录制。
use Brianclogan\DuskRecordings\WithDuskRecordings; abstract class DuskTestCase extends BaseTestCase { use CreatesApplication, WithDuskRecordings; // Rest of your DuskTestCase }
- 运行
php artisan dusk
以查看其效果 🥳 🚀
它是如何工作的
此包通过加载浏览器插件来工作,该插件在浏览器中创建一个新的(固定)标签页,然后初始化录制并执行测试。
测试完成后,根据配置,它将从浏览器插件创建的标签页中“下载”录制。
待办事项
- 添加 Firefox 支持
- 修复 Linux 下的
--auto-select-desktop-capture-source
参数 - 理想情况:启用窗口录制(而不是整个桌面)。