Laravel Dusk测试远程站点无法正常工作

时间:2018-02-15 14:34:36

标签: laravel-5.5 laravel-dusk

...
$this->browse(function (Browser $browser) {
 $browser->visit(url()->route('login'))
  ->type('email', 'user.one@email.com')
  ->type('password', 'something')
  ->press('Login')
  ->pause(60*60*1000)
  ->assertRouteIs('dashboard')
...

它适用于本地使用APP_URL类似于' https://project.dev'但不适用于远程' https://project.com'和' http://123.123.12.12'。

错误或问题

  • 远程站点上的登录测试无法正常工作

本地和远程

之间的差异
  • 黄昏安装在当地
  • 黄昏未安装在遥控器中

我尝试解决它

  • 我读过Chrome需要HTTPS。我给了它https。还是不行。
  • 我暂停了黄昏。黄昏浏览器打开后,我尝试输入用户名&密码并提交。还是不行。

同时报道laravel dusk github

1 个答案:

答案 0 :(得分:0)

没有确切的错误,很难回答你的问题, 但是从你所描述的我可以提供一些提示:

  1. 你应该永远不要在生产中使用黄昏或公共网站,即使它被配置为dev(安全问题)。
  2. 我假设你正试图用你的远程APP_URL在dev上运行黄昏。这是错误的概念,导致您的测试可以操纵db上的数据。如果您的本地和远程使用相同的数据库,它可能会起作用,但如上所述,带来了更多问题。
  3. 考虑到上述情况,如果您确保满足以下要求,您的某些测试可能会通过:

    • 您的.env APP_URL在两个位置匹配
    • 你在黄昏测试中不使用迁移,工厂等
    • 你不会将任何数据写入db(例如通过测试注册页面),因为当使用相同的db并运行本地和远程测试时,处理这些更改将是一场噩梦
    • 您修改DuskTestCase.php以添加--no-sandbox选项。这样可以加快测试速度 - 因此您不需要使用暂停
  4. 最后的想法。

    一个很好的工作流程是:

    1. 在本地测试您的应用
    2. 使用 CI (持续集成)提交对 VCS (版本控制系统)的更改 - 例如 gitlab - 并在那里运行黄昏测试。
    3. 部署到生产,如果测试通过,手动或通过部署脚本 - CD (持续交付)