【问题标题】:Laravel Dusk test working in Development but failing in ProductionLaravel Dusk 测试在开发中工作但在生产中失败
【发布时间】:2017-07-13 14:56:29
【问题描述】:

大家好,我有一个 Laravel 应用程序,它通过 Gitlab CI 运行它的 CI,我有一个问题,我使用黄昏的测试在我的机器上运行良好,但由于某种原因,每当我将它推送到 gitlab CI 时它都会失败...

/** @test */
public function the_login_admin_route_should_login_the_user_with_valid_credentials()
{
    /** @var Admin $user */
    $user = factory(Admin::class)->create(['password' => bcrypt('secret')]);

    $this->browse(function (Browser $browser) use ($user) {
        $browser->visit("/admin/auth/login")
                ->type("email", $user->{Admin::FIELD_EMAIL})
                ->type("password", "secret")
                ->click("#login-button")
                ->waitForText("Logged in Successfully")
                ->waitForLocation("/admin/")
                ->assertPathIs("/admin/");
    });
}

这是有问题的测试,具体失败的部分是 waitForText 部分。

我还有另一个 Dusk 测试,它只是检查当您尝试执行 /dashboard 时,您会被重定向到登录页面,并且工作正常,我什至会执行 ->assertSee("Login"),所以我认为问题不在于 xvfb 但我很困惑。

这是我与黄昏测试相关的 gitlab CI 配置

- chmod a+x ./vendor/laravel/dusk/bin/chromedriver-linux
- xvfb-run ./vendor/laravel/dusk/bin/chromedriver-linux &
- sleep 5
- php artisan serve &
- npm install --silent
- npm run production
- php -d memory_limit=-1 artisan dusk --colors

如您所见,我使用模型工厂生成用户,并且我已经使用 var_dump 验证了用户实际上是创建并存在于数据库中

有问题的文本显示为 Vuetify snackbar 组件的一部分,有点像 toast 出现,然后在 5 点后消失秒,这一切都在我的机器上正常工作,所以我不认为组件本身是问题。

在 CI docker 容器等无头环境中运行 Dusk 实例时,是否有人遇到 waitForText 命令问题?

【问题讨论】:

  • 更新:我设法通过简单地删除 waitForText 部分来通过测试,但我仍然不太明白出了什么问题,也许 Dusk 很难在 XVFB 环境中检测到这些“闪烁”文本某种原因。

标签: laravel selenium-chromedriver gitlab-ci laravel-dusk


【解决方案1】:

你可以为此尝试不同的 docker 镜像,例如你可以试试这个...

在你的 .gitlab-ci.yml 改变

图片:chilio/laravel-dusk-ci:stable

顺便说一句:请发布您的错误...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-17
    • 2016-09-03
    • 1970-01-01
    • 2019-05-24
    • 2012-01-14
    • 1970-01-01
    • 2013-08-30
    • 2017-07-15
    相关资源
    最近更新 更多