Playwright 1.57. Speedboard, Chrome for Testing та розширені можливості тестів
Вітаю. З вами Артур !
Playwright релізнув нову версію 1.57.
Коротенький огляд того що там всередині.
Speedboard
спіймайте самого повільного теста без зусиль :D тепер це дуже легко стало. Нова вкладка показує всі тести, відсортовані за тривалістю виконання. Загляніть — буде поле для рефакторінгу вам :)

Chrome for Testing
По суті для вас зміниться тіки іконка :D
Обіцяють, що всі тести й надалі працюватимуть без змін — схрестили пальці при першому запуску після оновлення.На Arm64 Linux Playwright і далі використовує Chromium.

Очікування логів веб-сервера
У testConfig.webServer з’явилося поле wait:
Ти передаєш регулярний вираз, і Playwright чекає, поки у stdout/stderr веб-сервера з’явиться лог, що відповідає цьому виразу.
import { defineConfig } from '@playwright/test';
export default defineConfig({
webServer: {
command: 'npm run start',
wait: {
stdout: '/Listening on port (?<my_server_port>\\d+)/'
},
},
});
Якщо в regex’і є іменована група, її значення буде прокидатися в середовище як змінна оточення.
import { test, expect } from '@playwright/test';
test.use({ baseUrl: `http://localhost:${process.env.MY_SERVER_PORT ?? 3000}` });
test('homepage', async ({ page }) => {
await page.goto('/');
});
Це корисно не лише для динамічних портів dev-серверів, а й для сервісів, які сигналізують готовність через лог, а не HTTP-healthcheck.
Breaking change
Повністю видалили давно задепрекований API Page#accessibility. Якщо потрібно тестувати доступність сторінки — пропонують використовувати зовнішні бібліотеки, наприклад Axe, та інтегрувати їх згідно з гайдом Playwright для Node.js
Нові API та фішечки
- testConfig.tag дозволяє додати тег до всіх тестів конкретного прогону (зручно разом з
merge-reports). - Події для Web Worker’ів
worker.on('console')виникає, коли JavaScript усередині воркера викликає один з методів консольного API, наприклад, console.log або console.dir; є також worker.waitForEvent() для очікування таких подій. locator.description()повертає опис локатора, попередньо встановлений за допомогоюlocator.describe(), аLocator.toString()тепер використовує цей опис — зручніше дебажити та читати репорти.- Опція
stepsуlocator.click()таlocator.dragTo()
Дозволяє налаштовувати, скількиmousemove-ів генерується під час переміщення курсора до елемента — більш тонкий контроль над симуляцією руху. - Service Workers
- Запити з Service Worker’ів тепер видно і можуть бути перехоплені на рівні
BrowserContext. - Логи
consoleз Service Worker’ів теж доступні черезworker.on('console'). - Обидві речі можна вимкнути змінними
PLAYWRIGHT_DISABLE_SERVICE_WORKER_NETWORKтаPLAYWRIGHT_DISABLE_SERVICE_WORKER_CONSOLE
- Запити з Service Worker’ів тепер видно і можуть бути перехоплені на рівні
Browser Versions
Chromium 143.0.7499.4
Mozilla Firefox 142.0.1
WebKit 26.0
P.S.
Всім гарного дня, стабільних тестів та буду радий бачити у своїй групі, щоб слідкувати за оновленнями світу розробки та тестування!
2 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів