Playwright — це open-source фреймворк від Microsoft для end-to-end тестування веб-застосунків у браузері. Підтримує Chromium, Firefox і WebKit в одному API. З’явився у 2020 і швидко став стандартом завдяки простоті і надійності.
Головна технічна різниця — спосіб керування браузером:
Selenium + WebDriver:
WebDriver — це окрема програма-посередник яку кожен виробник браузера пише для свого продукту: ChromeDriver пише Google, GeckoDriver пише Mozilla, SafariDriver вбудований Apple в macOS. Це офіційний стандарт W3C (World Wide Web Consortium — міжнародна організація що розробляє стандарти для вебу). ChromeDriver запускається як окремий процес на твоїй машині і слухає HTTP запити.
Твій тест → HTTP запит → ChromeDriver (окремий процес) → Chrome
↑
кожна дія = окремий запит: відкрити → надіслати → отримати → закрити
click → запит, fill → запит, screenshot → запит
Playwright + власні протоколи:
Playwright підключається до браузера напряму через постійне з’єднання — без окремого драйвера-посередника. Для Chromium це CDP (Chrome DevTools Protocol) — той самий протокол що використовують DevTools. Для Firefox і WebKit Playwright використовує власні протоколи, реалізовані в модифікованих збірках браузерів які він поставляє разом із собою. Жодного окремого драйвера — npx playwright install і браузери є.
Твій тест → WebSocket → Chromium (CDP)
Твій тест → власний протокол → Firefox (модифікована збірка)
Твій тест → власний протокол → WebKit (модифікована збірка)
↑
одне постійне з'єднання на весь тест
команди передаються без HTTP WebDriver stack — менше накладних витрат
CDP дає доступ до всіх внутрішніх можливостей браузера — перехоплення мережі, clock, геолокація — бо це той самий канал що й DevTools. WebDriver має тільки ті команди що описані в W3C (World Wide Web Consortium) стандарті.
Навіщо взагалі WebDriver якщо є CDP?
CDP — це внутрішній протокол Chrome/Chromium. Firefox і Safari його не підтримують нативно. W3C (World Wide Web Consortium) зробили WebDriver офіційним стандартом щоб будь-який інструмент міг керувати будь-яким браузером через один API. Playwright вирішив цю проблему по-своєму — власні модифіковані збірки браузерів з власними протоколами, що дає однаковий API для всіх трьох браузерів.
WebDriver BiDi — варто знати для інтерв’ю: Selenium поступово переходить на WebDriver BiDi (Bidirectional) — новий стандарт W3C який дозволяє двосторонню комунікацію як у CDP. Це наближає Selenium до можливостей Playwright. Але поки що це в процесі розробки.
Хто використовує WebDriver сьогодні: Selenium (мільйони корпоративних тестів написані роками), Appium (мобільне тестування Android/iOS), WebdriverIO, і хмарні сервіси BrowserStack та Sauce Labs — їхня інфраструктура побудована на WebDriver стандарті. Це як USB-A: є новіший USB-C — швидший і потужніший — але USB-A досі скрізь бо мільярди пристроїв його підтримують.
Практичні переваги Playwright:
- Auto-waiting — не треба писати явні очікування, Playwright сам чекає поки елемент готовий
- Network interception — вбудований перехват HTTP запитів, можна мокати відповіді
- Ізоляція через BrowserContext — кожен тест в окремому “профілі” без впливу на інші
- Trace Viewer — вбудований запис всіх дій з скріншотами і мережевими запитами для дебагу
🔧 TypeScript / JS патерни в цьому прикладіТеоретична картка без коду. Ключові терміни: protocol — набір правил обміну даними між програмами; HTTP request — одноразовий запит-відповідь; WebSocket — постійне з’єднання (детально в Q2-Q3); headless — браузер без графічного інтерфейсу, стандарт для CI.
🗣 Як читати вголосPlaywright — це фреймворк від Microsoft для end-to-end тестування веб-застосунків у браузері, підтримує Chromium, Firefox і WebKit в одному API. Головна технічна відмінність від Selenium — протокол керування браузером і наявність посередника. У Selenium між тестом і браузером стоїть WebDriver — окрема програма яку кожен виробник браузера пише для свого продукту: Google пише ChromeDriver, Mozilla пише GeckoDriver. Кожна команда — це окремий HTTP запит. Playwright підключається до браузера напряму через постійне з’єднання без посередника. Для Chromium це CDP — Chrome DevTools Protocol — той самий протокол що використовують DevTools. Для Firefox і WebKit Playwright використовує власні протоколи реалізовані в модифікованих збірках браузерів які він поставляє разом із собою. Варто знати про WebDriver BiDi — новий стандарт W3C який дозволяє двосторонню комунікацію як у CDP — Selenium поступово на нього переходить. Практично переваги Playwright: авто-очікування, вбудований перехват мережі, ізоляція через BrowserContext і trace viewer для дебагу.