Протоколи автоматизації
З WebdriverIO ви можете обирати між кількома технологіями автоматизації для виконання E2E тестів локально або у хмарі. За замовчуван ням WebdriverIO завжди перевірятиме наявність WebDriver сервера за адресою localhost:4444
. Якщо такий сервер не буде знайдено, то буде запущена автоматизація за допомогою Chrome DevTools протоколу використовуючи Puppeteer під капотом.
Майже всі сучасні браузери, які підтримують WebDriver, також підтримують й інший інтерфейс під назвою DevTools, який можна використовувати для автоматизації браузера.
Обидва мають переваги та недоліки, залежно від вашого випадку використання та середовища.
WebDriver протокол
WebDriver — це інтерфейс дистанційного керування, який дозволяє переглядати та контролювати віддалений браузер. Протокол декларує не пов'язаний із мовою та платформою інтерфейс як спосіб для позапроцесних програм дистанційно керувати поведінкою браузерів.
Протокол WebDriver розроблено для автоматизац ії браузера, щоб симулювати поведінку користувача, тобто все, що може робити користувач, ви можете автоматизувати у браузері. Надається набір стандартних команд, які абстрагують типові взаємодії з програмою (наприклад, навігація, клацання, або зчитування стану елемента). Оскільки це вебстандарт, він добре підтримується всіма основними розробниками браузерів, а також використовується як базовий протокол для мобільної автоматизації за допомогою Appium.
Щоб використовувати цей протокол автоматизації, вам потрібен проксі-сервер, який перекладає всі команди та виконує їх у цільовому середовищі (тобто у браузері чи мобільному додатку).
Для автоматизації браузера проксі-сервер зазвичай є драйвером браузера. Доступні драйвери для всіх браузерів:
- Chrome – ChromeDriver
- Firefox – Geckodriver
- Microsoft Edge – Edge Driver
- Internet Explorer – InternetExplorerDriver
- Safari – SafariDriver
Для будь-якого типу мобільної автоматизації вам потрібно буде встановити та налаштувати Appium. Це дозволить вам автоматизувати мобільні (iOS/Android) або навіть настільні (macOS/Windows) програми, використовуючи ту саму конфігурацію із WebdriverIO.
Існує також багато сервісів, які надають послуги із запуску автоматизований тест у хмарі. Замість того, щоб налаштовувати всі ці драйвери локально, ви можете просто комунікувати із цим сервісами (наприклад Sauce Labs) у хмарі та перевіряти бачити результати на їхній платформі. Комунікація між тестом і середовищем автоматизації виглядатиме так:
Переваги
- Офіційний веб-стандарт W3C, який підтримується всіма основними браузерами
- Спрощений протокол, який охоплює розповсюджені користувацькі дії
- Підтримка мобільної автоматизації (і навіть настільних програм)
- Можна використовувати як локально, так і в хмарі за допомогою таких служб, як Sauce Labs
Недоліки
- Не призначений для поглибленого аналізу браузера (наприклад, відстеження або перехоплення мережевих подій)
- Обмежений набір можливостей автоматизації (наприклад, відсутність підтримки сповільнення ЦП або мережі)
- Потребує додаткових зусиль для налаштування драйвера браузера із selenium-standalone/chromedriver/і т.п.