Запустите автоматизацию в безголовом браузере в экземпляре ec2 с Amazon Linux.

У меня есть среда автоматизации, которая использует статические html-страницы в своем каталоге проекта для выполнения определенных операций aws, таких как сканирование DynamoDB и выполнение Aws Lambda. Из-за некоторого узкого места производительности в зависимом компоненте API для теста мы пытаемся переместить фреймворк в экземпляр ec2 с Amazon Linux и запустить тесты оттуда.

Поскольку у нас есть методы в классе TestNG, которые на самом деле используют веб-драйвер selenium для запуска браузера и открытия статической страницы для выполнения необходимых операций Aws, я почти уверен, что этот тест столкнется с проблемами.

Я вижу два возможных подхода к решению этой проблемы:

  1. Внедрите классы AWSUtil и используйте необходимые клиенты aws для замены логики, зависящей от сети (потребуются некоторые усилия и реинжиниринг)
  2. Используйте безголовый хром-браузер (или любой совместимый), чтобы выполнить шаги, зависящие от Интернета.

Я почти уверен, что номер 1 может быть легко достигнут, просто вопрос времени и усилий. Тем не менее, хотелось бы знать, есть ли простой способ выполнить № 2, поскольку для этого не потребуется переписывать код.


person sophist_pt    schedule 02.10.2017    source источник


Ответы (2)


У нас возникла та же проблема, и мы добились успеха с puppeteer,

https://github.com/GoogleChrome/puppeteer

Если вы не хотите устанавливать последнюю версию узла, вы можете докеризовать свои тесты.

puppeteer может работать без головы или с браузером.

Надеюсь, поможет.

person Kannaiyan    schedule 03.10.2017
comment
У меня есть отдельная структура, использующая TestNG и Java. Как это будет интегрироваться с этим и нормально работать на AWS EC2 с использованием amazon linux. Не могли бы вы предоставить более подробные шаги? - person sophist_pt; 03.10.2017

Нет необходимости что-либо менять в ваших тестах, только настройку и выполнение. Тесты могут выполняться в автономном режиме на сервере непрерывной интеграции (CI). Стандартной настройки нет, так как нет вывода на дисплей для запуска браузера. Однако с помощью Xvfb вы можете запустить браузер виртуально. Прямо из документов:

Xvfb (сокращение от X virtual framebuffer) — это сервер отображения в памяти для UNIX-подобной операционной системы (например, Linux). Позволяет запускать графические приложения без дисплея.

В зависимости от того, хотите ли вы, чтобы Xvfb работал в фоновом режиме до тех пор, пока процесс не будет убит, есть два варианта:

Xvfb :99 &
export DISPLAY=:99
run-your-tests-here

or

xvfb-run run-your-tests-here

Вот руководство по Linux. Я использую это для своей установки Jenkins на основе Docker и каждый раз работает как шарм.

person ekostadinov    schedule 03.10.2017