PlaywrightЩо нового в Playwright 1.65
У релізі Playwright 1.65 з'явилася підтримка запуску тестів через Bun, новий репортер failures та блокування -exclusive-.
Реліз від 5 листопада 2026 · оновлено 8 листопада 2026
Головне
- Підтримка запуску тест-раннера під Bun через прапорець --bun
- Новий репортер failures та опція onlyFailures для HTML, JSON і JUnit
- Вбудоване блокування тестів -exclusive- для ізольованого виконання
- Дії над елементами тепер очікують зняття атрибута inert
- Припинення тестування на Node.js 20 та оновлення Docker-образів до Node.js 26
Коротко
Playwright 1.65 додає можливість запускати тест-раннер під Bun без використання Babel і кешу компіляції. У релізі також з'явилися новий репортер failures та опція onlyFailures для фільтрації звітів, а також ексклюзивне блокування тестів -exclusive-. Окрім цього, версія містить низку ламаючих змін у поводженні з useDefineForClassFields, роботі з inert-елементами, обробці кукі згідно з RFC 6265 та припинення тестування на Node.js 20.
Нові можливості
Запуск тестів під Bun
Тест-раннер тепер може виконуватися під Bun. Оскільки Bun самостійно транспілює файли тестів на TypeScript, Playwright не застосовує Babel або власний кеш компіляції. Для запуску необхідно передавати прапорець --bun (без нього команда виконується на Node.js):
bunx --bun playwright test
Під час роботи під Bun діють певні відмінності:
- Відсутній watch mode: UI mode не перезапускає тести під час зміни файлів, а прапорець
--only-changedне відстежує імпорти. - Bun завантажує модулі самостійно, тому параметр
--tsconfigта опції JSX уtsconfig.jsonне діють, а кастомні ESM-завантажувачі не підтримуються. - Стек-трейси не містять асинхронних фреймів, а назви API не мають назви класу (наприклад,
clickзамістьlocator.click), що змінює розташування деяких кроків, їхні назви та повідомлення про помилки. - Вивід консолі тесту не потрапляє до трейсів і UI mode.
Звіти тільки з помилками
- Додано новий репортер
failures, який виводить інформацію про збої та успішні повторні спроби одразу в міру їх виникнення, після чого показує підсумок без відображення процесу виконання. - Для репортерів HTML, JSON та JUnit додано опцію
onlyFailures. Вона зберігає у звіті лише тести з неочікуваними результатами, flaky-тести та перервані тести:
// playwright.config.ts
import { defineConfig } from '@playwright/test';
export default defineConfig({
reporter: [
['failures'],
['html', { onlyFailures: true }],
],
});
Тест-раннер
- Блокування
-exclusive-: вбудований тестовий замок{ lock: '-exclusive-' }дозволяє запускати обраний тест лише тоді, коли жодні інші тести не виконуються. Усі інші тести продовжують запускатися паралельно між собою. - Опис у статусах тестів: методи
test.skip(),test.fixme(),test.fail()таtest.slow()тепер приймають виключно опис, який записується в анотацію тесту. - Змінна середовища
PLAYWRIGHT_TRANSFORM_CACHE_DIR: дозволяє встановити окрему директорію для транспільованих файлів тестів (наприклад, для спільного середовища кількох користувачів на машині з Linux).
Нові API
- У методі
cdpSession.send()з'явилися опціїtimeoutіsignal. - Метод
testRun.mode()повертає режим виконання тестового набору під час роботиreporter.preprocess().
Ламаючі зміни
- Ініціалізація полів класів TypeScript: поля класів тепер наслідують значення
useDefineForClassFieldsз вашогоtsconfig.jsonаналогічно доtsc(параметр увімкнено дляES2022і новіших цілей, а також колиtargetне вказано). Ініціалізація поля, яка звертається до параметрів конструктора, тепер завершується помилкою через інший порядок виконання. Необхідно перенести ініціалізацію в конструктор або виставити"useDefineForClassFields": false. - Очікування для
inert-елементів: діїlocator.click(),locator.check(),locator.tap(),locator.fill(),locator.clear()таlocator.selectOption()тепер чекають, поки елемент перестане бути inert. Дія над елементом із цим атрибутом або всередині нього завершується таймаутом, якщо стан не змінюється. - Поведінка шардингу без тестів: виконання шарду тепер падає з помилкою «No tests found», якщо жоден тест не знайдено по всіх шардах. Щоб дозволити таку поведінку, додано прапорець
--pass-with-no-tests. Якщо інші шарди мають тести, порожній шард проходить успішно. - Кукі за RFC 6265:
browserContext.cookies()таapiRequestContext.cookies()при передачі URL більше не повертають host-only кукі для піддоменів або кукі зPath=/apiдля шляху/apiv2, а кукі зPath=/foo/не підходять для/foo.APIRequestContextвідправляє безіменну куку якCookie: x(ранішеCookie: =x) і записуєSet-Cookie: tokenяк куку без імені. - Автентифікація через проксі: облікові дані з опції
proxyтепер застосовуються виключно для авторизації на проксі й більше не надсилаються вебсайтам. Для автентифікації на сайтах потрібно використовуватиhttpCredentials. - Розрахунок доступних імен та aria snapshots: текст, який не відмальовується браузером (наприклад, не призначений у slot або розташований безпосередньо у закритому
<details>), більше не включається до accessible names та aria snapshots. Це впливає наpage.getByRole()з параметром імені,locator.ariaSnapshot()таexpect(locator).toMatchAriaSnapshot(). - Параметри запитів в APIRequestContext: значення
paramsу вигляді рядка абоURLSearchParamsтепер додаються до існуючого query у URL, а не замінюють його. - Імпорти стилів у тестах: файли
.css,.lessта.scssу тестах тепер завантажуються як порожні модулі, а не вирізаються з коду, тому імпортований файл обов'язково має існувати у системі. - Очищення репортера blob: репортер
blobзнову видаляє весь вміст своєї вихідної директорії перед записом звіту. - Розташування викликів CommonJS: координати викликів на зразок
test(у CommonJS-виводі тепер вказують на початок функції (наприклад,a.spec.ts:3:7замістьa.spec.ts:3:11), як і в ESM.
Виправлення та покращення
- Playwright більше не тестується на Node.js 20. Системні вимоги передбачають використання Node.js версій 22, 24 або 26.
- Офіційні Docker-образи оновлено: вони містять Node.js 26 замість Node.js 24, а також свіжий патч Chromium тієї ж гілки.
- Оновлено версії браузерів: Chromium 158.0.8127.18, Mozilla Firefox 159.0, WebKit 27.2.
- Проведено тестування зі стабільними каналами Google Chrome 157 та Microsoft Edge 156.
Огляд підготовлено автоматично за офіційними release notes за допомогою ШІ та перевірено на відповідність джерелу. Точні формулювання дивіться в оригіналі. Як ми працюємо