Розробка E2E-тестів на Selenium WebDriver для сайтів

Ручні перевірки перестають встигати за частими оновленнями сайту, і регресії просочуються у продакшен. Ми розробляємо та впроваджуємо E2E тести на Selenium під ключ — від сценаріїв до регламенту запуску. Це скорочує час регресії в рази та знімає рутину з вашої команди.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Розробка E2E-тестів на Selenium WebDriver для сайтів
Середній
~5 днів
Часті запитання

Чому ручне тестування сайту перестає ловити регресії

Ручне регресійне тестування передбачувано впирається в стелю, коли кількість сценаріїв зростає швидше за команду.

На реліз, де змінювалася одна форма оплати, доводиться проганяти весь каталог, кошик, особистий кабінет і оформлення замовлення — і перевіряльник фізично проходить одні й ті самі шляхи, поки увага тримається.

До третьої години однотипних прогонів пропускаються крайові випадки: порожній промокод, товар закінчився між додаванням у кошик і оплатою, повторне надсилання форми при подвійному кліку.

Ціна такої помилки — не знайдений дефект у проді. Регресія випливає вже у клієнтів, а розбір займає більше часу, ніж зайняв би прогін, бо відтворення залежить від конкретної послідовності кроків, стану кошика й даних користувача.

Чим частіше релізи, тим коротше вікно між викаткою та виявленням — і тим дорожча кожна пропущена поломка.

E2E тестування Selenium закриває саме це вузьке місце: сценарій один раз описується кодом і далі виконується однаково на кожному релізі, без утоми й варіативності.

Автотести проходять повний користувацький шлях — від відкриття сторінки до підтвердження замовлення — на реальному браузері, з реальними переходами й перевіркою стану після кожного кроку.

Прогін іде паралельно по кількох браузерах і роздільних здатностях, тому регресія ловиться до викатки, а не після.

Ключова відмінність від ручного прогону — відтворюваність. Тест або проходить, або падає з конкретним кроком, скриншотом і логом, і цей результат не залежить від того, хто і в якому настрої запускав перевірку.

Розбираємо, як такий контур будується і що потрібно, щоб він не перетворився на крихкий набір падаючих перевірок.

Що дає наскрізне тестування в браузері

Наскрізний сценарій проходить шлях користувача повністю — від відкриття сторінки до підтвердження замовлення в особистому кабінеті.

Він ловить те, чого не бачать модульні тести: розсинхрон фронтенду та API, втрачену сесію після редіректу, невірну відповідь платіжного шлюзу, «попливлу» верстку на проміжному кроці.

Саме такі дефекти доходять до клієнта і коштують найдорожче — простій оформлення замовлень на кілька годин помітніший за будь-яку внутрішню помилку.

Selenium WebDriver керує реальним браузером так само, як це робить людина: клікає, вводить дані, чекає відповіді сервера. Прогін набору з 40-60 ключових сценаріїв займає 10-15 хвилин у паралельних потоках — це вкладається в кожен коміт, а не в нічний запуск.

Частка дефектів, спійманих до релізу, зростає з 60-70% до 90%+: критичні шляхи оплати, реєстрації та авторизації закриті перевірками постійно, а не перед викаткою.

Стабільність релізів тримається на стійкості самих тестів. Ми будуємо локатори на data-атрибутах, а не на ланцюжках класів, ізолюємо тестові дані та прибираємо залежність від порядку запуску — набір перестає «мигати» і йому починають довіряти.

Окремо ведемо звітність: по кожному падінню видно крок, скриншот і відповідь сервера, тому розбір займає хвилини, а не години розкопок у логах.

Клас відмов, який іде разом із цим, — регрес на суміжних ділянках. Правка в кошику ламає оформлення замовлення, оновлення бібліотеки руйнує випадаючі списки — наскрізні перевірки показують це на збірці, а не в день релізу.

Час прогону та покриття сценаріїв стають вимірюваними: видно, скільки шляхів закрито і скільки хвилин займає перевірка перед викаткою.

Порівняння підходів до автоматизації перевірок інтерфейсу

Вибір інструмента визначає не швидкість написання перших перевірок, а те, скільки вони проживуть без переписування.

Код-фреймворк, low-code-конструктор і хмарний сервіс розв'язують одну задачу різними способами, і перехід між ними майже завжди означає переробку набору з нуля — тому рішення ухвалюють до старту, а не по ходу.

Варіант Коли підходить Обмеження
Код-фреймворк Складні сценарії, авторизація, інтеграції, динамічні форми; перевірки в спільному репозиторії поруч із продуктом Потрібні інженери з досвідом; довший вихід на перші стабільні перевірки
Low-code-конструктор Типові користувацькі шляхи, часті правки бізнесом, швидке охоплення основних сторінок Погано тягне нестандартну логіку та складні очікування; упирається в стелю при зростанні сценаріїв
Хмарний сервіс Потрібен запуск на багатьох оточеннях і браузерах без власної інфраструктури Залежність від зовнішньої платформи, обмеження щодо доступів до внутрішніх стендів, оплата за обсяг прогонів

Що важливо на практиці

Код-фреймворк дає повний контроль над очікуваннями та синхронізацією, але потребує дисципліни: без шару Page Object і явних очікувань перевірки починають падати на рівному місці.

Low-code виграє на старті — перші сценарії збираються за дні, — але при ускладненні логіки частина кроків усе одно йде в код. Хмарний сервіс знімає питання інфраструктури, зате додає обмеження щодо доступів і передбачуваності оточень.

Наш досвід: найчастіше робоча схема — код-фреймворк для критичних шляхів і low-code для швидкого покриття другорядних сторінок. Такий гібрид дає охоплення без зростання часу підтримки. Розбираємо ваші сценарії та підбираємо варіант під них.

Як ми впроваджуємо E2E тестування Selenium

Впровадження починаємо з аудиту сценаріїв: розбираємо користувацькі шляхи, які приносять гроші та найчастіше ламаються, — оформлення замовлення, оплата, реєстрація, особистий кабінет.

Для кожного фіксуємо очікуваний результат і точки відмови, відсікаємо дублі та шляхи, які стабільніше закрити модульними тестами. На виході — карта пріоритетів: що покриваємо в першу чергу, а що свідомо відкладаємо.

Далі вибудовуємо схему тестів і оточення. Піднімаємо ізольований стенд з тестовими даними, готуємо браузерні образи та драйвери, налаштовуємо паралельний запуск, щоб прогін не розтягувався на години.

Тести пишемо на Selenium WebDriver з явними очікуваннями замість пауз — так перевірки не «блимають» на повільній мережі.

  1. Аудит сценаріїв — інвентаризація шляхів, пріоритети, критерії проходження.
  2. Схема покриття — які перевірки в E2E, які йдуть на рівень нижче, карта залежностей.
  3. Налаштування оточення — тестовий стенд, дані, браузери, паралельний запуск.
  4. Написання та прогін — тести на Selenium WebDriver, відладка до стабільного зеленого прогону.
  5. Перевірка на стійкість — прогін серіями, відлов нестабільних перевірок, ізоляція даних між тестами.
  6. Передача — запуск у спільному конвеєрі збірки, звіти, інструкції для команди.

Стабільність для нас — не разовий зелений прогін, а повторюваність: ганяємо набір серіями та вичищаємо перевірки, які падають не через дефект, а через гонку даних або таймінги.

Кожен тест отримує свої дані та не залежить від сусідніх, тому падіння вказує на реальну проблему, а не на порядок запуску.

Передаємо не лише код, а й робочий контур: тести запускаються у спільному конвеєрі збірки на кожну зміну, звіт показує, який шлях упав і на якому кроці. Команда бачить регрес до викладки, а не після скарг користувачів.

Артефакти: конфігурації, звіти та регламенти запуску

На виході — не «папка з тестами», а комплект, за яким команда замовника може запускати, читати й розвивати перевірки без нас. Кожен артефакт закриває свій клас питань: конфігурації — «як відтворити середовище», звіти — «що саме впало», регламенти — «хто і коли запускає».

  • Конфігурації середовищ — профілі для локального запуску, стенда приймання та передпродакшну, з винесеними адресами, обліковими записами й наборами тестових даних; секрети не лежать у репозиторії, а підставляються зі сховища.
  • Схема сценаріїв — карта покриття: які користувацькі шляхи закриті наскрізними перевірками, де залишилися ручні кроки і чому; за нею видно, що саме перевіряється під час кожного прогону.
  • Політики доступу та ролей — які облікові записи потрібні тестам, які права їм надані та як вони ізольовані від робочих даних, щоб прогон не зачепив реальних користувачів.
  • Звіти про прогони — результат за кожним сценарієм із кроком, на якому стався збій, скриншотом стану сторінки та вкладеним логом; падіння розбирається без повторного відтворення вручну.
  • Регламент запуску — коли перевірки йдуть автоматично (на кожен коміт і перед викладкою), коли за розкладом, хто дивиться на результат і в який термін реагує на червоний прогон.
  • Інструкція з підтримки — як додати новий сценарій, оновити селектор після зміни верстки та куди дивитися, якщо тест почав падати без змін у коді.
  • Журнал нестабільних перевірок — список сценаріїв, які періодично падають із зовнішніх причин, із позначкою причини та рішенням: полагодити, ізолювати чи прибрати.

Комплект передаємо з розбором: показуємо, як запустити прогон на вашому стенді, де дивитися звіт і що робити при падінні. Далі команда замовника веде перевірки сама — або ми залишаємося на підтримці за узгодженим регламентом.

Кейс: як скоротили час регресії на великому порталі

Портал з особистим кабінетом, каталогом і оформленням заявок жив на ручній регресії: три інженери витрачали на повний прогін перед релізом два дні, а частина перевірок до кінця циклу виконувалася «з пам'яті».

Паралельно накопичувалися дефекти, які ловилися вже в проді — найчастіше в ланцюжках «авторизація → кошик → оплата», де ручний сценарій дорого відтворювати повторно.

Ми розібрали критичні користувацькі шляхи та перевели їх у E2E-тести на Selenium WebDriver: авторизація та відновлення доступу, пошук і фільтри каталогу, оформлення заявки, особистий кабінет, інтеграція з платіжним шлюзом на тестовому контурі.

Тести запускаються в контейнерах в ізольованих середовищах, дані готуються та відкочуються перед кожним сценарієм — прогін не залежить від стану попереднього.

Що змінилося в метриках

Показник До Після
Повний регрес 2 робочих дні 40 хвилин
Частка дефектів, спійманих до релізу ~60% 92%
Нестабільні збірки через тести — менше 3% прогонів
Ручні перевірки на реліз усі лише нові сценарії

Стабільність далася не «магією фреймворку», а дисципліною: явні очікування замість фіксованих пауз, стійкі локатори, окремий шар підготовки даних і автоматичний перезапуск лише для сценаріїв із зовнішніми залежностями.

Кожен нічний прогін складається у звіт із кроком, на якому впав тест, скриншотом і логом — розбір займає хвилини, а не півдня.

Через два місяці після впровадження команда перестала боятися релізів по п'ятницях: регрес іде за розкладом, а інженери займаються новими сценаріями та розбором реальних дефектів замість повторення одних і тих самих кліків.

Чим відрізняється E2E-тест від інтеграційного та модульного?

Модульний тест перевіряє одну ізольовану одиницю логіки: функцію розрахунку знижки, валідатор поля, перетворення формату. Усі зовнішні залежності — база, мережа, платіжний шлюз — підмінюються заглушками, тому такий тест виконується за мілісекунди й точно вказує, де зламалося.

Інтеграційний тест іде на крок вище: він перевіряє стик двох-трьох компонентів — що сервіс коректно пише в базу, що модуль замовлень дійсно викликає модуль оплати, що черга віддає повідомлення потрібному обробнику. Він ловить помилки контрактів і форматів, яких модульні перевірки не бачать за визначенням.

E2E-тест — це наскрізний сценарій від особи реального користувача: відкрити сайт, авторизуватися, зібрати кошик, оформити замовлення, побачити підтвердження. Тут немає заглушок — працює справжній браузер, справжній бекенд, справжня база.

Саме тому наскрізна перевірка відповідає на головне питання бізнесу: «чи працює продукт загалом», а не «чи працює окрема функція».

Піраміда тестування розставляє ці рівні за співвідношенням ціни та користі. В основі — сотні модульних перевірок: дешеві, швидкі, запускаються на кожну зміну. Середина — десятки інтеграційних: дорожчі, але покривають стики.

Вершина — одиниці E2E-сценаріїв на критичні користувацькі шляхи: оформлення замовлення, реєстрація, оплата. Перевертати піраміду не можна: якщо будувати перевірки лише на наскрізних сценаріях, прогін розтягується, падіння нестабільні, а причина збою неочевидна.

На практиці межа розмивається: інтеграційний тест із реальною базою та піднятим фронтендом уже майже E2E. Ми розмічаємо рівні за тим, що саме підмінюється заглушкою, — це дає однозначний критерій і передбачувану вартість підтримки набору перевірок.

Часті технічні сумніви перед стартом

Перед стартом інженери зазвичай ставлять один і той самий набір питань — і це правильні питання.

E2E тестування на Selenium WebDriver ламається не на написанні сценаріїв, а на їх експлуатації: селектори змінюються разом із версткою, оточення розходяться, тестові дані конфліктують між прогонами. Нижче — як ми закриваємо кожне з цих місць.

Тести не стануть крихкими через місяць?

Крихкість — наслідок прив'язки до верстки. Ми виносимо локатори в окремий шар, використовуємо стійкі атрибути замість ланцюжків класів і додаємо явні очікування умови замість фіксованих пауз. Тест, який падає через перейменовану кнопку, виправляється в одному місці, а не в сорока сценаріях.

Хто підтримує набір після здачі?

Підтримка закладається в структуру: сторінки описуються об'єктами, кроки — багаторазовими діями, звітність показує, який саме крок упав і на якому скриншоті. Це знижує вартість правки до хвилин і дозволяє вашій команді вести набір самостійно, без нас.

Як тести поводяться на різних оточеннях?

Адреси, облікові записи та параметри браузерів виносимо в конфігурацію, а не в код. Один і той самий набір прогоняється на стенді розробки, передпродакшені та продакшені без правок — змінюється лише профіль запуску.

Що з тестовими даними?

Кожен прогін готує свої дані та прибирає за собою, тому тести не залежать від порядку запуску і не конфліктують при паралельному виконанні. Там, де дані потрібні із зовнішніх систем, ставимо заглушки — набір перестає залежати від чужої доступності.

Як це вбудується в наш конвеєр збірки?

Набір запускається за розкладом і на кожну зміну, звіт приходить у звичний канал команди, падіння блокує випуск. Відкат — це просто вимкнення кроку: тести не чіпають код застосунку і не заважають релізу, якщо їх тимчасово зняти.

Опишіть вашу задачу — повернемося з оцінкою та планом: які сценарії закриваємо першими, як організуємо дані і що знадобиться від вашої інфраструктури.

Обговоримо ваше завдання і повернемося з планом

Щоб повернутися з оцінкою та планом, а не із загальними словами, нам потрібно зрозуміти ваш контур: які сценарії критичні, де живуть тести, хто і як часто їх запускає.

E2E-тестування на Selenium WebDriver ламається не на «написанні тестів», а на оточенні та підтримці — тому спочатку уточнюємо вхідні дані, потім рахуємо.

Що уточнюємо на першій розмові:

  • які користувацькі шляхи закриваємо в першу чергу — оплата, реєстрація, особистий кабінет, оформлення замовлення;
  • на якому стенді ганяємо — окремий тестовий контур чи прод-подібне середовище з тестовими даними;
  • як тести вбудовуються у ваш процес — ручний запуск, нічна збірка чи перевірка перед викладкою релізу;
  • які браузери та роздільні здатності в пріоритеті у вашої аудиторії;
  • хто з боку замовника приймає результат і розбирає провалені прогони;
  • чи є доступи до тестових акаунтів, платіжних пісочниць і API, які тест смикає напряму.

За цими відповідями формуємо план робіт: карта сценаріїв, структура фреймворку, набір стабільних локаторів, звітність за прогонами та регламент підтримки.

Оцінка йде за кількістю сценаріїв та їхньою складністю, а не «за проєкт загалом» — так ви бачите, за що платите і що можна додати пізніше. Терміни розбиваємо на етапи: перший робочий набір тестів на критичні шляхи, потім розширення покриття.

Опишіть завдання у вільній формі — що за продукт, які сценарії болить перевіряти руками, який стек і стенди. Повернемося з оцінкою, планом робіт і термінами за етапами.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060