Задать вопрос
hanas
@hanas
Строю мосты, воспитываю дочь

Почему codeception не видит сайт который я хочу протестировать?

Пытаюсь запусить acceptance тесты в докере, но получаю ошибку о том что chrome не может получить доступ до app контейнера.

Скрипт для запуска тестов:
docker-compose exec -T app ./vendor/bin/codecept build
docker-compose exec -T app php -S localhost:8080 > /dev/null 2>&1 &
docker-compose exec -T app ./vendor/bin/codecept run -f

docker-compose.yml
version: "3"

services:
  app:
    build: docker/php
    volumes:
      - ./:/app
    depends_on:
      - db

  db:
    image: postgres:latest
    ports:
      - 5432:5432

  selenium-hub:
    image: selenium/hub:3.141.59-mercury
    container_name: selenium-hub
    ports:
      - 4444:4444

  chrome:
    image: selenium/node-chrome:3.141.59-mercury
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
      - app
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444

Конфигурация codeception
class_name: AcceptanceTester
modules:
  enabled:
    - WebDriver:
        url: http://app:8080/backend/web/index-test.php
        browser: chrome
        host: selenium-hub
        port: 4444

  • Вопрос задан
  • 121 просмотр
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
hanas
@hanas Автор вопроса
Строю мосты, воспитываю дочь
В _output есть скриншот:
LoginCept.fail.png
5ca5b090dfa62419491061.png


Доступы из контейнера chrome в контейнер app есть. Проверяю это так:

1. Запускаю внутри контейнера app сервер:
лог
root@86338ec46fc5:/app# php -S 0.0.0.0:8080
PHP 7.2.16 Development Server started at Thu Apr  4 07:34:54 2019
Listening on http://0.0.0.0:8080
Document root is /app
Press Ctrl-C to quit.
[Thu Apr  4 07:35:20 2019] 192.168.96.6:33978 [302]: /backend/web/index-test.php



2. Из контейнера chrome через curl дергаю ссылку:
лог
$ curl -v http://app:8080/backend/web/index-test.php
*   Trying 192.168.96.2...
* TCP_NODELAY set
* Connected to app (192.168.96.2) port 8080 (#0)
> GET /backend/web/index-test.php HTTP/1.1
> Host: app:8080
> User-Agent: curl/7.58.0
> Accept: */*
> 
< HTTP/1.1 302 Found
< Host: app:8080
< Date: Thu, 04 Apr 2019 07:35:20 +0000
< Connection: close
< Set-Cookie: PHPSESSID=7adf9d523ff4accb0582863749bef1e3; path=/; HttpOnly
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate
< Pragma: no-cache
< Location: http://app:8080/backend/web/index-test.php/sign-in/login
< Content-Type: text/html; charset=UTF-8
< X-Debug-Tag: 5ca5b3b854264
< X-Debug-Duration: 1,064
< X-Debug-Link: /backend/web/index-test.php/debug/default/view?tag=5ca5b3b854264
< 
* Closing connection 0



Но когда запускаю codeception в контейнере app вижу следующее:
лог
root@86338ec46fc5:/app# php -S 0.0.0.0:8080
PHP 7.2.16 Development Server started at Thu Apr  4 07:34:54 2019
Listening on http://0.0.0.0:8080
Document root is /app
Press Ctrl-C to quit.
[Thu Apr  4 07:36:53 2019] 192.168.96.8:38440 Invalid request (Unsupported SSL request)
[Thu Apr  4 07:36:53 2019] 192.168.96.8:38442 Invalid request (Unsupported SSL request)
[Thu Apr  4 07:36:53 2019] 192.168.96.8:38444 Invalid request (Unsupported SSL request)
[Thu Apr  4 07:36:53 2019] 192.168.96.8:38446 Invalid request (Unsupported SSL request)



Вот лог самого теста:
лог
Tests\backend.acceptance Tests (5) -------------------------
Modules: WebDriver, Yii2, \tests\common\_support\FixtureHelper
------------------------------------------------------------
LoginCept: Ensure login page works
Signature: LoginCept
Test: acceptance/LoginCept.php
Scenario --
 tests\backend\_pages\LoginPage: open by "tests\\backend\\AcceptanceTester"
   I am on page "/sign-in/login"
  [GET] http://app:8080/backend/web/index-test.php/sign-in/login
 I am going to submit login form with no data
 tests\backend\_pages\LoginPage: login "",""
   I fill field "input[name="LoginForm[username]"]",""
  [Selenium server Logs] 
  08:02:15.736 INFO - Capabilities are: {
    "browserName": "chrome",
    "goog:chromeOptions": {
    }
  }
  08:02:15.768 INFO - Matched factory org.openqa.selenium.grid.session.remote.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService)
  08:02:17.202 INFO - Detected dialect: OSS
  08:02:17.503 INFO - Started new session 3956a248302db45cab3b61fbe7f27708 (org.openqa.selenium.chrome.ChromeDriverService)
  
  [Selenium browser Logs]  EMPTY 
  [Selenium driver Logs]  EMPTY 
  Screenshot and page source were saved into '/app/tests/backend/_output/' dir
 FAIL

Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы