Laravel Phpunit 和 Dusk with CircleCI

Laravel Phpunit and Dusk with CircleCI

有没有人能得到 Laravel Dusk working on 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.

所以它正在启动 chrome 浏览器,但没有访问该站点。

我试过 运行 Dusk 的 chromedriver-linux、circleci 的 chromedriver,没有使用 php serve 和其他各种调整。到目前为止,我还没有运气。

这里有一个link到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,不是很有帮助)。

我发现这些文章很有用,但它们对我不起作用。

以下代码适用于我们。试试这个

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

输出Checkout here

这是最终对我有用的配置。

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