josrom / laravel-dusk-5.1
Laravel Dusk 提供简单易用的端到端测试和浏览器自动化。
Requires
- php: >=5.6.4
- facebook/webdriver: 1.*
- laravel/framework: 5.1.*
- nesbot/carbon: ~1.20
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: 5.7.*
README
Laravel 5.1
介绍
Laravel Dusk 提供了一种表达性强、易于使用的浏览器自动化和测试 API。默认情况下,Dusk 不需要在您的机器上安装 JDK 或 Selenium。相反,Dusk 使用独立的 Chromedriver。但是,您可以使用任何其他您想要的 Selenium 驱动程序。
官方文档
Dusk 的文档可以在 Laravel 网站 上找到。
安装
要获取 Laravel Dusk 5.1 的最新版本,只需使用 Composer 需求项目
composer require --dev josrom/laravel-dusk-5.1
当然,您也可以手动更新 require 块并运行 composer update,如果这样做的话
{ "require-dev": { "josrom/laravel-dusk-5.1": "0.1.*" } }
添加服务提供者 app/Providers/AppServiceProvider.php
文件
if ($this->app->environment('local')) { $this->app->register(\Laravel\Dusk\DuskServiceProvider::class); }
安装 Dusk 包后,运行 dusk:install
Artisan 命令
php artisan dusk:install
将在您的 tests
目录中创建一个 Browser
目录,其中包含一个示例测试。接下来,在您的 .env
文件中设置 APP_URL
环境变量。此值应与您在浏览器中访问应用程序的 URL 相匹配。
要运行测试,请使用 dusk
Artisan 命令。该 dusk
命令接受任何由 phpunit
命令接受的参数
php artisan dusk
配置
默认情况下,dusk 使用端口 9515,超时时间为 20 秒。
如果您需要更改 dusk 端口和/或超时,则需要发布配置文件
php artisan vendor:publish --provider="Laravel\Dusk\DuskServiceProvider" --tag="config"
要使用 环境变量 进行更改,请向 dusk env 文件 中添加字段。
额外方法
示例
switchFrame
使用 switchFrame
方法的 PayPal 支付示例
$browser->loginAs($user) ->visit('/user') ->assertSee('Some Event') ->clickLink('Register Now') ->assertSee('Some Event') ->check('accept_terms') ->press('Submit Application') ->assertSee('Your application has been submitted.') ->press('.paypal-button') ->waitFor('#injectedUnifiedLogin', 30) ->switchFrame('injectedUl') ->type('#email', env('PAYPAL_TEST_BUYER_USERNAME')) ->type('#password', env('PAYPAL_TEST_BUYER_PASSWORD')) ->press('#btnLogin') ->waitFor('#confirmButtonTop', 30) ->waitUntilMissing('#spinner') ->press('#confirmButtonTop') ->waitForText('You paid', 30) ->waitUntilMissing('#spinner') ->press('#merchantReturnBtn') ->waitForText('Events Registration', 30) ->pause(10000) // waiting for IPN callback from paypal ->refresh() ->assertSee('Payment verified') ;
select2
select2
的使用示例
- 对于默认的 select2。如果未传递值,它将自动选择
$browse->select2('@selector');
- 另一种方式,如果需要具体值
$browse->select2('@selector', 'you_text_value');
- 对于多选模式的使用,例如
$browse->select2('@selector', ['foo', 'bar'], 5);
- 选择 html 标签的 CSS 选择器应以 + select2 名称结尾
<select class="form-control select2-users" name="user_id"> </select>
$browse->select2('.select2-users + .select2', 'you_text_value');
selectBySelector
selectBySelector
的使用示例
$browse->selectBySelector('select.my-custom-selector', 'value');
assertFragmentIs
assertFragmentIs
的使用示例
$browser->visit('https://laravel.net.cn/#/login') ->assertPathIs('/') ->assertFragmentIs('/login');
assertQueryIs
assertQueryIs
的使用示例
$browser->visit('https://laravel.net.cn?key=test') ->assertPathIs('/') ->assertQueryIs('key=test');
scrollTo
scrollTo
的使用示例
$browser->visit('https://laravel.net.cn') ->scrollTo('#cookie-id') ->click('#cookie-id');
wysiwyg
wysiwyg
的使用示例
$browser->visit('https://laravel.net.cn') ->wysiwyg('tinymce', 'form-id', '<h2>value</h2>');
许可
Laravel Dusk 是开源软件,采用 MIT 许可