我一直试图将Laravel Dusk整合到我的测试计划中一周,并且无法进行任何测试以实际提供预期结果.情况如下:
开箱即用的测试不起作用
我在本文的"家园上的Laravel Dusk"中添加了这些步骤,并在"setup-headless-selenium-xvfb.sh"中找到了我的配置文件中的要点.这消除了我得到的很多例外.
我还将所有现有的环境变量添加到我的phpunit.dusk.xml文件的php节点, 就像它们已经成功运行的phpunit测试一样.phpunit.xml
但是现在当我运行测试时,我无法获得预期的输出.这就是我在做的事情.我在我的主页('/')视图文件中添加了一个输入字段:<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) 我开始使用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) 我正在使用[浏览器测试(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) 运行Laravel Dusk时有没有办法获得代码覆盖?
我知道它运行浏览器测试,所以它不是仔细检查代码,但有没有办法添加一个监听器来检查所涵盖的代码?我现在没有看到关于这个主题的任何内容.
我有一个应用程序,我想使用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) 我在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个浏览器实例.显然这很快失控,特别是当我在部署前运行所有测试时.
就我而言,每个测试类的一个浏览器实例是可以接受的,但我无法弄清楚如何实现这一点.所以这就是我要问的问题:
有没有人能够让Laravel Dusk在CircleCI上工作.
我可以让我的构建工作并使用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) 我正在尝试开发一个Laravel编写器包并从中运行单元测试.在过去几天阅读各种过时且矛盾的指南和博客后,我对如何解决这个问题感到困惑.
这是我目前所知道的:
我可以让Orchestra Test Bench从给出的示例中进行一些基本测试,但我并不真正理解发生了什么,文档几乎没有解释.在测试我的应用程序的路由时,我无法获得任何工作.
我不明白Orchestra和Dusk是否可以一起玩,或者我必须在它们之间做出选择.如果是这样,我应该使用哪一个?如果它是我应该使用的Laravel Dusk,那么如何在我的包目录中运行它?
是否有一个工具可以记录用户与DOM元素的交互,以便在创建自动化测试时使用(我使用的是Codeception和Laravel Dusk,但任何在Selenium中扎根的工具都很好).我正在寻找记录序列的东西并找回可能包含以下内容的列表:
/contact#nametextarea[name=message]textarea[name=message]input[type=submit]/contact?thanks我看到GhostInspector,但它直接绑定到一个基于云的公司,我不希望这样,我想对插件的功能有一定程度的控制,并且能够记录不在公共网络上的页面.
我可以看到构建一个记录每个动作非常重要的工具 - 鼠标移动事件,焦点,文本选择,键盘事件,滚动事件等.理想情况下,我可以说"在输入上听取每个焦点,点击和键盘事件或者textarea或按钮或选择或选项"并注意网址更改.
这样的工具存在吗?无论它真正运行什么浏览器堆栈,只需要用户(可能是新手用户)的能力,去网站,点击记录,做一些动作,并找回发生的事情列表.
争论我的问题的瞬间downvotes"不是关于编程"促使我改进我的问题.我不认为该工具的性质 - 它可能是编程方法?使用浏览器监听所有事件并以某种方式记录它们的方法?可能是Chrome扩展程序?可能是一个框架?可能是图书馆吗?我正在寻找程序员的经验来帮助我完成我正在努力完成的编程任务.
尝试运行时出错php artisan dusk。发生 Chrome 版本错误。我谷歌了这个错误,并快速浏览了几个网站,包括 Laracasts 和 Dusk Github 问题。
laravel-dusk ×10
laravel ×8
php ×6
laravel-5 ×3
phpunit ×2
unit-testing ×2
circleci ×1
codeception ×1
laravel-5.4 ×1
laravel-5.5 ×1
selenium ×1