使用CircleCI进行Laravel Phpunit和Dusk测试

8

有人成功在CircleCI上运行Laravel Dusk吗?

我能够使用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.

它正在启动Chrome浏览器,但没有访问该网站。

我尝试使用Dusk的chromedriver-linux、circleci的chromedriver、不使用php serve以及各种其他调整来运行。到目前为止,我还没有成功。

这里是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
    - sudo php artisan serve --host=localhost --port=80:
          background: true
    - php artisan dusk

.env.example是我复制到.env中的。

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

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

截图(从CircleCI中获取,不是非常有用)。

enter image description here

我找到了这些文章,它们对我有所帮助,但是并不适用于我。


在您的circle.yml文件中尝试添加PHP版本 php: version: 5.6.5 到您的时区之后。 - Amr Aly
@AmrAly 感谢您的建议,但它仍然存在相同的错误。 - whoacowboy
这只是一个建议,但是尝试将 dusk.dev: 127.0.0.1 更改为 dusk.dev: localhostdusk.dev: 0.0.0.0 - NullDev
我遇到了同样的问题。 - naneri
2个回答

4
以下代码对我们有效,请尝试使用。 circle.yml 文件。
machine:
      pre:
        - sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
        - sudo apt-get update
        - sudo apt-get install google-chrome-stable
      services:
        - mysql
    dependencies:
      override:
        - composer install --prefer-dist --no-interaction
      post:
        - mv .env.testing .env
    test:
      override:
        - vendor/bin/phpunit
        - ./vendor/laravel/dusk/bin/chromedriver-linux:
              background: true
        - php artisan serve:
              background: true
        - php artisan dusk

.env.testing

APP_ENV=local
APP_KEY=base64:BaGXvpvUWnUbGA1RiOapw45K2UCK8AeYM3o62IDV9Qw=
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=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

输出 在这里结账


感谢您的回答。我之前使用了 sudo php artisan serve 命令,但是需要将 sudo 移除掉。 - whoacowboy

1

这是最终对我起作用的配置。

circle.yml

machine:
  pre:
    - sudo apt-get update; USE_PRECOMPILE=true sudo -E circleci-install php 7.0.4
  php:
    version: 7.0.4
  services:
    - mysql
  post:
    - chromedriver:
        background: true

dependencies:
  pre:
    - sudo composer self-update
  post:
    - cp .env.dusk.testing .env
    - php artisan serve:
        background: true

general:
  artifacts:
    - "tests/Browser/screenshots"
    - "tests/Browser/console"

test:
  override:
    - vendor/bin/phpunit
    - php artisan dusk

.env.dusk.testing

APP_ENV=testing
APP_KEY=base64:Secr3tSecr3tSecr3tSecr3tSecr3tSecr3tSecr3tSe
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=circle_test
DB_USERNAME=ubuntu
DB_PASSWORD=
MAIL_DRIVER=log

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接