标签: laravel-dusk

让Laravel Dusk在Ubuntu 16 wt Laravel 5.5上正常运行

我一直试图将Laravel Dusk整合到我的测试计划中一周,并且无法进行任何测试以实际提供预期结果.情况如下:

  • 我在Homestead上运行Laravel 55(按照项目安装),使用php 7.1.*
  • 我按照文档中的安装步骤安装了Dusk.

开箱即用的测试不起作用

但是现在当我运行测试时,我无法获得预期的输出.这就是我在做的事情.我在我的主页('/')视图文件中添加了一个输入字段:<input id="dusk-test" value="1234">

我运行这个测试,它是原始示例测试的mod,是唯一的测试:

<?php

namespace Tests\Browser;

use Tests\DuskTestCase;
use Laravel\Dusk\Browser;

class ExampleTest extends DuskTestCase
{
    public function testBasicExample()
    {
        $this->browse(function (Browser $browser)
        {
            $browser->visit('/')->refresh()
                ->assertValue('#dusk-test', '1234')
            ;
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

...通过运行php artisan dusk,这是我的输出每一次

PHPUnit 6.4.3 by Sebastian Bergmann and contributors.

E                                                                   1 
/ 1 (100%)

Time: 1.07 seconds, Memory: 12.00MB

There was 1 error:

1) Tests\Browser\ExampleTest::testBasicExample
Facebook\WebDriver\Exception\NoSuchElementException: no …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-dusk laravel-5.5 laravel-dusk2

15
推荐指数
1
解决办法
871
查看次数

Laravel Dusk,如何破坏测试之间的会话数据

我开始使用Laravel Dusk进行浏览器测试,并创建了几个测试来测试我的登录表单.我有以下代码:

class LoginTest extends DuskTestCase
{

public function testLogin()
{
    $this->browse(function (Browser $browser) {
        $browser->visit('/admin')
            ->type('email', 'inigo@mydomain.co.uk')
            ->type('password', 'MyPass')
            ->press('Login')
            ->assertSee('Loading...');
    });
}

public function testLoginFailure(){
    $this->browse(function (Browser $browser){

        $browser->visit('/admin/logout'); // I have to add this to logout first, otherwise it's already logged in for this test!

        $browser->visit('/admin')
            ->type('email', 'someemail@afakedomain.com')
            ->type('password', 'somefakepasswordthatdoesntwork')
            ->press('Login')
            ->assertSee('These credentials do not match our records.');
    });
}
Run Code Online (Sandbox Code Playgroud)

看评论.第一个函数运行正常,但是当涉及第二个函数时,我必须先注销,因为用户已经因运行第一个函数而登录.这让我感到意外,因为我认为单元测试是完全独立的,会话数据会自动销毁.

有没有更好的方法来做到这一点 - 我可能缺少一些黄昏方法 - 而不是打电话$browser->visit('/admin/logout');

谢谢

编辑感谢目前为止的2个答案,这两个答案似乎都是有效的解决方案.我已将第二个函数更新为以下内容:

public function testLoginFailure(){
    $this->createBrowsersFor(function(Browser $browser){
        $browser->visit('/admin') …
Run Code Online (Sandbox Code Playgroud)

php unit-testing laravel laravel-dusk

13
推荐指数
6
解决办法
4902
查看次数

如何向下滚动浏览器页面 - Laravel Dusk(浏览器测试)

我正在使用[浏览器测试(Laravel Dusk)] [1]准备测试

[1]:https://laravel.com/docs/5.4/dusk,我需要在向下滚动浏览器页面之前强制点击要查看的元素.如何在黄昏测试中定义点击unsee元素或滚动浏览器页面?

class SliderTest extends DuskTestCase
{
    /**
     * A Dusk test example.
     *
     * @return void
     */
    public function testExample()
    {
        $this->browse(function ($browser) {
            $browser
                    ->visit('http://localhost:8000/admin/login')                    
                    ->click('label[for=test_1]')
                    ->pause(500)
                ;
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-dusk

12
推荐指数
2
解决办法
4273
查看次数

laravel黄昏的代码覆盖率

运行Laravel Dusk时有没有办法获得代码覆盖?

我知道它运行浏览器测试,所以它不是仔细检查代码,但有没有办法添加一个监听器来检查所涵盖的代码?我现在没有看到关于这个主题的任何内容.

phpunit code-coverage laravel laravel-5.4 laravel-dusk

11
推荐指数
1
解决办法
1036
查看次数

Laravel黄昏不起作用.env.dusk.local

我有一个应用程序,我想使用Laravel Dusk.

我创建了一个.env.dusk.local用测试数据库命名的文件和一个.env用我的默认数据库命名的文件.

我运行了php artisan命令并创建了一个用户/register.

在我使用相同的电子邮件但使用不同的密码创建登录测试后,这不会是一个问题,因为.env.dusk.local它将是一个不同的银行,并且不会有任何用户注册.

但是当我运行php artisan dusk命令时,它会从原始信息中获取信息.env并最终从我的默认数据库中删除所有记录.

我想知道如何加载我的信息.env.dusk.local并使用我的测试数据库.

.env默认

APP_ENV=local
APP_KEY=base64:K8otIkxJk0rFsZYSEq1hwBuaxQX3QI3Bb7ZmemJRIWg=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost:8000

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_dusk
DB_USERNAME=root
DB_PASSWORD=123456
Run Code Online (Sandbox Code Playgroud)

.env.dusk.local

APP_ENV=local
APP_KEY=base64:K8otIkxJk0rFsZYSEq1hwBuaxQX3QI3Bb7ZmemJRIWg=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost:8000

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_dusk_test
DB_USERNAME=root
DB_PASSWORD=123456
Run Code Online (Sandbox Code Playgroud)

用于testLogin的Mu函数

namespace Tests\Browser;

use Illuminate\Foundation\Testing\DatabaseMigrations;
use Illuminate\Support\Facades\App;
use Tests\DuskTestCase;

class LoginTest extends DuskTestCase
{


    use DatabaseMigrations;
    /**
     * A Dusk test example.
     *
     * @return void
     */
    public function testLogin()
    {
        $user = factory(\App\User::class)->create(['email' …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-5 laravel-dusk

10
推荐指数
1
解决办法
1542
查看次数

如何重用Dusk测试浏览器实例?

我在Laravel 5.4框架上的项目,我正在使用Dusk进行浏览器测试.我有一个页面,其中有几个部分我想独立测试,但是我遇到了一个问题,我必须为每个单独的测试启动一个新的浏览器实例,登录并导航到该页面.

public function testExample()
{
  $this->browse(function (Browser $browser) {
    $browser->loginAs(1)
            ->visit('/admin/dashboard')
            ->assertABC()
            ->assertXYZ();
  });
}
Run Code Online (Sandbox Code Playgroud)

所以当我有4-5个这样的时候class allTheThingsTest extends DuskTestCase,我每个测试类产生4-5个浏览器实例.显然这很快失控,特别是当我在部署前运行所有测试时.

就我而言,每个测试类的一个浏览器实例是可以接受的,但我无法弄清楚如何实现这一点.所以这就是我要问的问题:

  • 是否可以在单个测试类中记住/重用测试函数之间的浏览器实例?
  • 如果是这样,怎么样?

php laravel laravel-dusk

9
推荐指数
1
解决办法
485
查看次数

Laravel Phpunit和Dusk with CircleCI

有没有人能够让Laravel DuskCircleCI上工作.

我可以让我的构建工作并使用PHPUnit进行测试但是Laravel Dusk失败了.

我有一个安装了Dusk的Laravel基础安装.当我到达php artisan dusk命令时,我收到以下错误.

错误

1) Tests\Browser\ExampleTest::testBasicExample
Did not see expected text [Laravel] within element [body].
Failed asserting that false is true.
Run Code Online (Sandbox Code Playgroud)

所以它正在启动chromebrowser,但没有访问该网站.

我尝试使用Dusk的chromedriver-linux,circleci的chromedriver,不使用php服务和其他各种调整.到目前为止,我没有运气.

这是repo的链接,相关文件发布在下面.

这是我的circle.yml档案.

machine:
  hosts:
    dusk.dev: 127.0.0.1
  timezone: America/Los_Angeles
  services:
    - mysql
  environment:
      APP_ENV: testing
      APP_KEY: randomq2VjceHV2t1Usdskeksa9yUI6a
  post:
    - chromedriver:
        background: true
dependencies:
  override:
    - composer install --prefer-dist --no-interaction
  post:
    - mv .env.example .env

test:
  override:
    - vendor/bin/phpunit
#    - ./vendor/laravel/dusk/bin/chromedriver-linux:
#          background: true …
Run Code Online (Sandbox Code Playgroud)

php laravel circleci laravel-5 laravel-dusk

8
推荐指数
1
解决办法
869
查看次数

Laravel 5.4; 如何从Laravel包中运行单元测试?

我正在尝试开发一个Laravel编写器包并从中运行单元测试.在过去几天阅读各种过时且矛盾的指南和博客后,我对如何解决这个问题感到困惑.

这是我目前所知道的:

  • 我不应该从主要的Laravel安装中运行测试.测试应该都包含在包中.我承认这有一定的逻辑.
  • 有一种叫做Orchestra Testbench的东西.如果您正在开发Laravel包,那么显然您应该使用它.
  • 还有一种名为Laravel Dusk的东西,包含在Laravel 5.4中.

我可以让Orchestra Test Bench从给出的示例中进行一些基本测试,但我并不真正理解发生了什么,文档几乎没有解释.在测试我的应用程序的路由时,我无法获得任何工作.

我不明白Orchestra和Dusk是否可以一起玩,或者我必须在它们之间做出选择.如果是这样,我应该使用哪一个?如果它是我应该使用的Laravel Dusk,那么如何在我的包目录中运行它?

phpunit unit-testing laravel-5 laravel-dusk

8
推荐指数
2
解决办法
2150
查看次数

用于记录在UI自动化测试的浏览器中完成的任务的选项

是否有一个工具可以记录用户与DOM元素的交互,以便在创建自动化测试时使用(我使用的是CodeceptionLaravel Dusk,但任何在Selenium中扎根的工具都很好).我正在寻找记录序列的东西并找回可能包含以下内容的列表:

  • 浏览器导航到 /contact
  • 焦点输入"#name"
  • 在输入中输入文本"Joe" #name
  • 专注textarea textarea[name=message]
  • 在textarea中输入文本"Hello world" textarea[name=message]
  • 单击元素 input[type=submit]
  • 浏览器导航到 /contact?thanks

我看到GhostInspector,但它直接绑定到一个基于云的公司,我不希望这样,我想对插件的功能有一定程度的控制,并且能够记录不在公共网络上的页面.

我可以看到构建一个记录每个动作非常重要的工具 - 鼠标移动事件,焦点,文本选择,键盘事件,滚动事件等.理想情况下,我可以说"在输入上听取每个焦点,点击和键盘事件或者textarea或按钮或选择或选项"并注意网址更改.

这样的工具存在吗?无论它真正运行什么浏览器堆栈,只需要用户(可能是新手用户)的能力,去网站,点击记录,做一些动作,并找回发生的事情列表.


争论我的问题的瞬间downvotes"不是关于编程"促使我改进我的问题.我不认为该工具的性质 - 它可能是编程方法?使用浏览器监听所有事件并以某种方式记录它们的方法?可能是Chrome扩展程序?可能是一个框架?可能是图书馆吗?我正在寻找程序员的经验来帮助我完成我正在努力完成的编程任务.

selenium automated-tests codeception laravel-dusk

8
推荐指数
1
解决办法
888
查看次数

Laravel Dusk Facebook\WebDriver\Exception\SessionNotCreatedException 上的错误:会话未创建:Chrome 版本必须介于 70 和 73 之间

尝试运行时出错php artisan dusk。发生 Chrome 版本错误。我谷歌了这个错误,并快速浏览了几个网站,包括 Laracasts 和 Dusk Github 问题。

laravel laravel-dusk

8
推荐指数
1
解决办法
1846
查看次数