Playwright 1.59. Першоквітневий жарт чи нове майбутнє?

💡 Усі статті, обговорення, новини про тестування — в одному місці. Приєднуйтесь до QA спільноти!

Вітаю. З вами Артур !

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/mcp —endpoint=my-session

Підключення через Playwright API

const browser = await chromium.connect(endpoint);

WebSocket режим

const { endpoint } = await browser.bind('my-session', {
  host: 'localhost',
  port: 0,
});

(ендпоінт ws:// URL)

Відв’язка

browser.unbind();

📊 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 надає можливості:

  • запису відео
  • стрімінгу кадрів у реальному часі
  • керування оверлеями

Методи:

Storage, Console та Errors

Інше

🛠️ Інші покращення

  • 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

Всім гарного дня, стабільних тестів та буду радий бачити у своїй групі, щоб слідкувати за оновленнями світу розробки та тестування!

👍ПодобаєтьсяСподобалось4
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Всё это детский сад, и для сложных ентерпрайзных проектов, где тесты ранятся в СИ на потоке, оно нафиг не надо. Да и вообще, с точки зрения стратегической стабильности, плейрайт вызывает кучу вопросов. Это достаточно молодой проект, и может умереть по щелчку от майкрософт так же быстро, как и появился (например если майкрософт не сочтет нужным инвестировать в то, что особо не приносит прибыль). А потом будете плакаться с очередной миграцией, как это было в свое время с Протрактором (если кто забыл, напомню, Гугл так же его слил, не желая тратить лишнюю денежку)

:D найкращий першотравневий жарт який я чув :D

Хех, ну якщо відсутність стандартизованого апі це жарт, тоді добре, насолоджуйтесь скрінкастами та іншими іграшками від майкрософт)

Так а шо тодi використовувати? Кукумбар, sir?

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

краще напряму АРІ браузера юзати. навіщо ці обгортки навколо нього! :D

Так плейврайту вже років під 10. А протрактор якраз таки вебдрайвер і був ;)

Плейрайт перший реліз вийшов у 20 році. І він був дуже сирий на той момент. Десь с 22-23 року він почав активно набирати обертів

Ну а протрактор був обгорткою всього навсього, і гугл його вбив. А вебдрайвер «живее всех живых», ще й в додаток w3c стандартизований)

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

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

Не заважай жити світу українських айті-«інфлуєнсерів», про що вони будуть знімати відосики, окрім Плейрайту?

ну якшо плейрайту не буде то будем знімати про токсичність в інтернеті звісно ж :)

Підписатись на коментарі