Docker Сервіс
wdio-docker-service є пакетом від третьої сторони, для отримання додаткової інформації, будь ласка, перегляньте GitHub | npm
Цей сервіс призначений для використання з WebdriverIO і допомагає виконувати функціональні/інтеграційні тести проти/з використанням контейнеризованих додатків. Він використовує популярний сервіс Docker (встановлюється окремо) для запуску контейнерів.
Навіщо його використовувати?
В ідеалі ваші тести працюватимуть у різних CI/CD пайплайнах, де часто немає "справжніх" браузерів та інших ресурсів, від яких залежить ваш додаток. З появою Docker практично всі необхідні залежності додатків можуть бути контейнеризовані. З цим сервісом ви можете запустити контейнер вашого додатка або docker-selenium у вашому CI і в повній ізоляції (припускаючи, що CI може мати Docker, встановлений як залежність). Те саме може стосуватися локальної розробки, якщо ваш додаток потребує певного рівня ізоляції від вашої основної ОС.
Як це працює
Сервіс запустить існуючий образ docker, і коли він буде готовий, ініціює тести WebdriverIO, які повинні запускатися проти вашого контейнеризованого додатка.
Встановлення
Виконайте:
npm install wdio-docker-service --save-dev
Інструкції з встановлення WebdriverIO можна знайти тут.
Конфігурація
За замовчуванням Google Chrome, Firefox і PhantomJS доступні, коли встановлені на хост-системі.
Щоб використовувати цей сервіс, вам потрібно додати docker
до вашого масиву сервісів:
// wdio.conf.js
exports.config = {
// ...
services: ['docker'],
// ...
};
Опції
dockerOptions
Різні опції, необхідні для запуску контейнера docker
Тип: Object
За замовчуванням: { options: { rm: true } }
Приклад:
dockerOptions: {
image: 'selenium/standalone-chrome',
healthCheck: 'http://localhost:4444',
options: {
p: ['4444:4444'],
shmSize: '2g'
}
}
dockerOptions.image
Тег назви контейнера Docker. Може бути локальним або з Docker HUB.
Тип: String
Обов'язково: true
dockerOptions.healthCheck
Конфігурація, яка перевіряє готовність ваших контейнерів перед початком тестів. Зазвичай це буде URL на localhost. Якщо healthCheck не налаштований, Webdriver почне запускати тести відразу після запуску контейнера Docker, що може бути занадто рано, враховуючи, що запуск веб-сервісу всередині контейнера Docker займає певний час.
Тип: String|Object
Опції для використання Object:
- url - url до додатка, запущеного всередині вашого контейнера
- maxRetries - кількість повторних спроб до невдачі перевірки здоров'я. За замовчуванням: 10
- inspectInterval - інтервал між кожною спробою в мс. За замовчуванням: 500
- startDelay - початкова затримка до початку перевірки здоров'я в мс. За замовчуванням: 0
Приклад 1 (String): healthCheck: 'http://localhost:4444'
Приклад 2 (Object):
healthCheck: {
url: 'http://localhost:4444',
maxRetries: 3,
inspectInterval: 1000,
startDelay: 2000
}
dockerOptions.options
Мапа опцій, що використовуються командою docker run
. Для отримання додаткової інформації про команду run
перейдіть за посиланням.
Будь-яка одиночна опція буде перетворена в -[option]
(наприклад, d: true
-> -d
).
Будь-яка опція з двох і більше символів буде
перетворена в --[option]
(наприклад, rm: true
-> --rm
).
Для опцій, які можуть використовуватися більше одного разу
(наприклад, -e
, -add-host
, --expose
тощо), будь ласка, використовуйте нотацію масиву (наприклад, e: ["NODE_ENV=development", "FOO=bar"]
).
Тип: Object
Приклад:
options: {
e: ['NODE_ENV=development', 'PROXY=http://myproxy:80']
p: ['4444:4444', '5900:5900'],
shmSize: '2g'
}
dockerOptions.args
Будь-які аргументи, які ви можете захотіти передати в контейнер. Відповідає [ARG...]
в Docker run CLI.
Тип: String
dockerOptions.command
Будь-яка команда, яку ви хочете передати в контейнер. Відповідає [COMMAND]
в Docker run CLI.
Тип: String
onDockerReady
Метод зворотного виклику, який викликається, коли додаток Docker готовий. Готовність визначається можливістю пінгувати URL healthCheck
.
Тип: Function
dockerLogs
Шлях, куди слід зберігати журнали з контейнера docker
Тип: String
Тестові випадки / Рецепти
Будь ласка, відвідайте нашу Wiki для отримання додаткової інформації.