josrom/laravel-dusk-5.1

Laravel Dusk 提供简单易用的端到端测试和浏览器自动化。

0.1.16 2019-03-21 15:11 UTC

This package is auto-updated.

Last update: 2024-09-22 03:44:35 UTC


README

Build Status Total Downloads Latest Stable Version License

Laravel 5.1

Build Status Total Downloads Latest Stable Version License

介绍

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 许可