Playwright 1.59. Першоквітневий жарт чи нове майбутнє?
Вітаю. З вами Артур !
Playwright релізнув нову версію 1.59. І спочатку я подумав шо це першоквітневий жарт але не — спробувавши фічі трошки пріколовся. Дійсно прикольні штуки, які можна використовувати для більшого контролю та обсервабіліті. Звісно, великий уклон робиться все більше і більше на агентік-девелопмент режим, і команда плейрайту робить все щоб цих агентів можно було все краще і краще контроліровать та перевіряти їх дії. Дуже цікавий напрямок як на мене.
Тож, погнали подивимось шо там вони нам принесли.
🎬 Screencast
Новий API page.screencast надає вам можливості програмно управлять відеозаписом та додатковими повідомленнями під час дії над сторінкою. Наприклад:
- запис відео (screencast recordings)
- анотації дій (action annotations) — хто шо зробив, куда клікнув
- візуальних оверлеїв (visual overlays) — плашка кастомна з текстом там або чимось ще
- захоплення кадрів у реальному часі (real-time frame capture) — ну тут понятно все
- відео-підтверджень від агентів (agentic video receipts) — контролюй шо там твій агент робить краще
Screencast recordings
Це по суті можливість запису відео з точним контролем старту/стопу(шоб не весь тест записувати а наприклад тіки кусочок) як альтернатива recordVideo:
await page.screencast.start({ path: 'video.webm' });
// робимо якусь магію
await page.screencast.stop();
Анотації дій
Оце доволі прікольна штука. Мені сподобалось. Ти можеш включить візуальних анотації того, що саме ти робиш(клік, філл, і тд):
await page.screencast.showActions({ position: 'top-right' });
screencast.showActions() має такі параметри:
- position (top-left, top, top-right, bottom-left, bottom, bottom-right)
- duration (мс на одну анотацію)
- fontSize (px)
Анотації також можна увімкнути через конфіг тестів:
export default defineConfig({
use: {
video: {
mode: 'on',
show: {
actions: { position: 'top-left' },
test: { position: 'top-right' },
},
},
},
});
Візуальні оверлеї
Додавання заголовків розділів і кастомного HTML поверх сторінки:
await page.screencast.showChapter('Додавання Магії', {
description: 'Клікаю та дивуюсь',
duration: 1000,
});
await page.screencast.showOverlay('<div style="color: red">ВЕДУ ЗАПИС ДРУЖЕ</div>');
Захоплення кадрів у реальному часі
Стрім JPEG-кадрів для кастомної обробки (thumbnail, live preview, AI vision):
await page.screencast.start({
onFrame: ({ data }) => sendToVisionModel(data),
size: { width: 800, height: 600 },
});
Відео-підтвердження від агентів
Агенти можуть створювати відео-доказ виконаної роботи:
await page.screencast.start({ path: 'receipt.webm' });
await page.screencast.showActions({ position: 'top-right' });
await page.screencast.showChapter('Перевірка твого магчного сценарію', {
description: 'Роблю якусь страшну штуку',
});
await page.locator('#blabla').fill('alohamora');
await page.locator('#stick').click();
await expect(page.locator('.mamamia')).toContainText('сезам отрился');
await page.screencast.showChapter('Готово', {
description: 'магія успішно виконана',
});
await page.screencast.stop();
Відео-демка як це все виглядає
🔗 Сумісність
Новий API browser.bind() дозволяє підключатися до браузера з різних клієнтів тіпа playwright-cli, @playwright/mcp і т.д.
Стартоні браузер(привʼяжи сессію)
const { endpoint } = await browser.bind('my-session', {
workspaceDir: '/my/project',
});
Підключення через CLI
playwright-cli attach my-session
playwright-cli -s my-session snapshot
Підключення через MCP
Підключення через Playwright API
const browser = await chromium.connect(endpoint);
WebSocket режим
const { endpoint } = await browser.bind('my-session', {
host: 'localhost',
port: 0,
});
(ендпоінт ws:// URL)
Відв’язка
📊 Observability
Команда:
playwright-cli show
відкриває Dashboard:
- показує всі браузери
- дозволяє бачити роботу агентів
- дає доступ до сесій
- дозволяє відкривати DevTools
Тепер можна дивитись шо там роблять ваші міньйони-посіпаки в реальному часі.
🐛 CLI debugger для агентів
Агент може запустити команду npx playwright test —debug=cli для автоматичного фіксу тестів в агентоному режимі. Шось тіпа:
playwright-cli attach <session-id> playwright-cli --session <session-id> step-over
і це дозволить покроково дебажити тести.
📋 CLI аналіз trace
Агент може запустити npx playwright trace open trace.zip шоб проаналізіровать трейси та флекі тести.
Можливості:
- перегляд дій
- аналіз помилок
- перегляд snapshot’ів
🔍 Snapshots і Locators
Нові можливості:
page.ariaSnapshot()— знімок accessibility-дереваlocator.normalize()— нормалізація локаторів — поверне більш красівий локатор вамpage.pickLocator()— інтерактивний вибір локатора — запускаєте тест і автоматично інтерактивний режим відркиється де можна поклікати на елементи та обрати то шо вам треба.
🆕 Нові API
Screencast
page.screencast надає можливості:
- запису відео
- стрімінгу кадрів у реальному часі
- керування оверлеями
Методи:
screencast.start()іscreencast.stop()- для запису та захоплення кадрівscreencast.showActions()іscreencast.hideActions()- для анотацій дійscreencast.showChapter()іscreencast.showOverlay()- для візуальних оверлеївscreencast.showOverlays()іscreencast.hideOverlays()- для керування видимістю оверлеїв
Storage, Console та Errors
browserContext.setStorageState()— очищає cookies, localStorage та IndexedDB для всіх origin і встановлює новий стан сховища (без необхідності створювати новий контекст)page.clearConsoleMessages()іpage.clearPageErrors()- очищають збережені повідомлення та помилки- Опція
filterуpage.consoleMessages()іpage.pageErrors()- визначає, які повідомлення повертати consoleMessage.timestamp()— повертає часову мітку повідомлення в мілісекундах
Інше
browserContext.debugger— програмне керування дебагером PlaywrightbrowserContext.isClosed()— перевірка, чи закритий контекстrequest.existingResponse()— повертає відповідь без очікуванняresponse.httpVersion()— повертає HTTP-версію відповіді- Події
cdpSession.on('event')іcdpSession.on('close')- для CDP-сесій - Опція
liveуtracing.start()- оновлення трасування в реальному часі - Опція
artifactsDirуbrowserType.launch()- налаштування директорії для артефактів
🛠️ Інші покращення
- UI Mode отримав опцію показу лише тести, на які вплинули зміни в коді
- UI Mode і Trace Viewer мають покращену фільтрацію дій
- HTML Reporter показує список запусків з одного worker’а
- HTML Reporter дозволяє фільтрувати кроки тестів для швидкого пошуку
Новий режим trace:
retain-on-failure-and-retries— записує trace для кожного запуску тесту та зберігає всі trace у разі помилки; корисно для порівняння успішного і flaky запуску
⚠️ Breaking Changes
- Видалено підтримку macOS 14 для WebKit. Рекомендується оновити версію macOS або використовувати старішу версію Playwright.
- Видалено пакет
@playwright/experimental-ct-svelte.
🌐 Версії браузерів
- Chromium 147.0.7727.15
- Mozilla Firefox 148.0.2
- WebKit 26.4
Ця версія також протестована з наступними стабільними каналами:
- Google Chrome 146
- Microsoft Edge 146
Всім гарного дня, стабільних тестів та буду радий бачити у своїй групі, щоб слідкувати за оновленнями світу розробки та тестування!
13 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівВсё это детский сад, и для сложных ентерпрайзных проектов, где тесты ранятся в СИ на потоке, оно нафиг не надо. Да и вообще, с точки зрения стратегической стабильности, плейрайт вызывает кучу вопросов. Это достаточно молодой проект, и может умереть по щелчку от майкрософт так же быстро, как и появился (например если майкрософт не сочтет нужным инвестировать в то, что особо не приносит прибыль). А потом будете плакаться с очередной миграцией, как это было в свое время с Протрактором (если кто забыл, напомню, Гугл так же его слил, не желая тратить лишнюю денежку)
:D найкращий першотравневий жарт який я чув :D
Хех, ну якщо відсутність стандартизованого апі це жарт, тоді добре, насолоджуйтесь скрінкастами та іншими іграшками від майкрософт)
Так а шо тодi використовувати? Кукумбар, sir?
Кукумбер це ж бібліотека для написання тестів всього навсього, і прикрутити можна хоч на плейрайт, хоч на селеніум. Але з розвитком ші воно вже виглядає як застаріле. Що використовувати — це особистий вибір, який напряму залежить від потреб проекту. Але, на мою думку, для великих проектів, де планується підтримка тестів на роки, плейрайт точно ні. Селеніум — так. Ну, але з таким напрямком як зараз, всі вже напевно забули що таке збудувати стабільний АТ солюшн)
краще напряму АРІ браузера юзати. навіщо ці обгортки навколо нього! :D
Так плейврайту вже років під 10. А протрактор якраз таки вебдрайвер і був ;)
Плейрайт перший реліз вийшов у 20 році. І він був дуже сирий на той момент. Десь с22-23 року він почав активно набирати обертів
Ну а протрактор був обгорткою всього навсього, і гугл його вбив. А вебдрайвер «живее всех живых», ще й в додаток w3c стандартизований)
Але я спробував подумати про це, і ми з пашею дали свої думки про можливе закриття плейврайту на стрімі де ми робили огляд змін
Ніхто зараз не говорить про закриття плейрайту от вже. Моя думка була про довгограючі рішення, до яких плейрайт поки що можна віднести зі скрипом
Не заважай жити світу українських айті-«інфлуєнсерів», про що вони будуть знімати відосики, окрім Плейрайту?
ну якшо плейрайту не буде то будем знімати про токсичність в інтернеті звісно ж :)