Я настроил некоторые тесты Dusk, которые отлично работают локально, но не работают при использовании Docker в CircleCI. Ошибка, которую я получаю, проста;
Tests \ Browser \ HomeTest :: check_home_contains_text Не увидел ожидаемый текст [Home] внутри элемента [body]. Не удалось утверждать, что ложь — это правда.
В ходе расследования кажется, что Dusk вводит правильный URL-адрес, но не может утверждать, поэтому Docker не должен разрешать my.site для установки Laravel. Я добавил 127.0.0.1 my.site в файл hosts согласно конфигурации CircleCI ниже.
Я предполагаю, что мне нужно настроить виртуальный хост, чтобы он указывал на ~ / laravel / public, однако несколько попыток настроить конфигурацию для этого не удаются. Может кто-нибудь посоветовать, как этого можно достичь? Я не верю, что образы Docker из CircleCI поставляются в комплекте с nginx или Apache, будет ли установка одного из них подходящей, и если так, то есть ли кто-нибудь с публичным репозиторием или информацией о том, как это сделать?
Пожалуйста, обратите внимание, я не могу просто использовать localhost, так как у меня есть поддомен / псевдоним с маршрутами и проверка домена в моем маршруте / web.php
CircleCI config.yml:
# PHP CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-php/ for more details
#
version: 2
jobs:
build:
docker:
# CircleCI Docker Images: https://circleci.com/docs/2.0/circleci-images/
# PHP 7.1 and MySQL 5.7.19
- image: circleci/php:7.1-browsers
- image: circleci/mysql:5.7.19
environment:
MYSQL_DATABASE: mysite_testing
MYSQL_USER: mysite
MYSQL_PASSWORD: mysite
command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
working_directory: ~/laravel
steps:
# Checkout branch
- checkout
- run:
name: Install System Dependencies
command: |
sudo apt-get install -y libzip-dev mysql-client
sudo apt-get install -y libsqlite3-dev libnss3 libgconf-2-4 libfontconfig1 chromium xvfb
- run:
name: Install PHP extensions
command: sudo docker-php-ext-install pdo_mysql zip
- run:
name: Wait on MySQL
command: dockerize -wait tcp://localhost:3306 -timeout 1m
# Set up Laravel .env file
- run:
name: Setup Laravel testing environment variables for CircleCI test
command: cp .env.testing .env
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "composer.json" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
# Install Composer packages
- run: composer install -n --prefer-dist
- save_cache:
paths:
- ./vendor
key: v1-dependencies-{{ checksum "composer.json" }}
# Run PHPUnit tests
- run:
name: Run PHPUnit tests
command: ./vendor/bin/phpunit
# Run Laravel Dusk tests
- run:
name: Start xvfb
background: true
command: /usr/bin/Xvfb :0 -screen 0 1280x720x24
- run:
name: Open Browsers
background: true
command: DISPLAY=:0 ./vendor/laravel/dusk/bin/chromedriver-linux
- run:
name: Docker Host
command: echo 127.0.0.1 my.site | sudo tee -a /etc/hosts
- run:
name: Serve Application
command: sudo php artisan serve --host=my.site --port=8000
background: true
- run:
name: Run Laravel Dusk tests
command: php artisan dusk
Задача ещё не решена.
Других решений пока нет …