Транспортир с Headless Chrome не работает в AWS CodeBuild, но работает локально.

У меня есть веб-страница, для которой требуется проверка подлинности Google, прежде чем перейти к веб-странице angular, и я построил несколько очень простых сквозных тестов, которые работают как шарм в Linux с Chrome Headless:

  1. Находит поле имени пользователя
  2. Вводит правильный адрес электронной почты и нажимает "Далее".
  3. Вводит пароль для входа в систему
  4. После прохождения аутентификации Google он проверяет, что заголовок страницы - «Расходы».

Вот последнее сообщение, которое я получаю в Терминале: 3 из 3 спецификаций выполнены УСПЕХ за 46 секунд.

Однако в AWS CodeBuild мы ТАКЖЕ используем контейнер Linux (Ubuntu), и это дает сбой каждый раз.
Вот первая ошибка: ... Жасмин начал

  1. Поиск поля имени пользователя
  2. Ввод правильного тестового адреса электронной почты

Обнаружено 0 тегов h1 Expense App E2E Начальная индексная страница набора тестов для Expense должна работать нормально

  • [31 мин. Должно правильно войти в систему с тестовым пользователем · [39 мин.
  • [31m- · [39m · [31mFailed: Элемент не найден с помощью локатора: By (css selector, * [id = "identifierId"])
  • [39 м в elementArrayFinder.getWebElements.then (/codebuild/output/src609592849/src/node_modules/protractor/built/element.js:814:27)

Вот информация о настройке в protractor.conf.js:

capabilities: {
'browserName': 'chrome',
chromeOptions: {
    args: ["--headless", "--disable-dev-shm-usage", "--no-sandbox", "--disable-gpu", "--window-size=1280x960"]
    }
},
directConnect: true,  // Test scripts communicate directly with Chrome Driver, so they start up and run faster

Из package.json я использую: "e2e": "ng e2e --port 4200",

Из buildspec-test.yml у меня есть следующая команда post_build: - npm run e2e

Почему Chrome Headless находит мою веб-страницу на http://localhost:4200 без проблем с моей локальной проблемой Linux, но не может найти его в AWS CodeBuild, когда они ОБА работают под Ubuntu Linux? Локальная версия: Ubuntu 18.04.1 LTS Версия AWS CodeBuild: Ubuntu Ubuntu 14.04.5 LTS (Trusty)

Пожалуйста, дайте мне знать и заранее спасибо!

Искренне,

PW


person Patrick Walters    schedule 04.12.2018    source источник
comment
У меня точно такая же проблема. Использование того же образа для создания контейнера локально, и он отлично работает, но в AWS CodeBuild это занимает много времени и устраняет ошибки с помощью NoSuchElementError. Удалось ли вам решить вашу проблему?   -  person muzurB    schedule 23.10.2019
comment
Я столкнулся с той же проблемой, есть ли решение для этого до сих пор?   -  person vinicius.olifer    schedule 19.02.2020
comment
Кто-нибудь нашел какое-нибудь работоспособное решение? Это действительно расстраивает. Мои ошибки в основном Angular could not be found on the page, что не имеет смысла, так как это SPA   -  person 0CDc0d3r    schedule 03.04.2020


Ответы (1)


Да, у меня есть ответ. Мой друг и коллега (спасибо, Билл Т.) смог создать контейнер Docker с Ubuntu 18.04LTS и позволил мне запустить его в AWS CodeBuild, где он работал. Это доказало проблему: вы не можете использовать безголовый хром с более старой Ubuntu 14.04.5 LTS. Начните с Ubuntu 18.04 LTS.

person Patrick Walters    schedule 24.04.2020
comment
Я использовал образ 18.04 LTS и все еще сталкивался с той же проблемой. Я не думаю, что это версия образа, а что-то еще в сервисах AWS. Я создал на своей машине те же изображения, которые AWS использует для CodeBuild (вы можете найти их на github), и они работают полностью локально. - person 0CDc0d3r; 25.04.2020