Playwright v1.45.0 — новий реліз. Що всередині
Привіт. З вами Артур!
Сьогодні Playwright релізнув нову версію. Що всередині?Clock
Новий Clock API, що дозволяє маніпулювати та контролювати час у тестах, щоб перевірити поведінку, пов’язану з часом. Цей API охоплює багато типових сценаріїв, зокрема:
— тестування з заданим часом;
— дотримання консистентності часу та таймерів;
— моніторинг «простою» системи;
— відлік часу вручну.
Приклад
// Ініціалізація «годинника» і дайте сторінці завантажитися
await page.clock.install({ time: new Date(’2024-02-02T08:00:00′) });
await page.goto(’localhost:3333’);// Уявіть, що користувач закрив ноутбук і знову відкрив його о 10 ранку,
// Зупиніть відлік часу після досягнення цієї точки.
await page.clock.pauseAt(new Date(’2024-02-02T10:00:00′));// Асерт стану сторінки.
await expect(page.getByTestId(’current-time’)).toHaveText(’2/2/2024, 10:00:00 AM’);// Знову закрийте ноутбук та відкрийте о 10:30 ранку.
await page.clock.fastForward(’30:00′);
await expect(page.getByTestId(’current-time’)).toHaveText(’2/2/2024, 10:30:00 AM’);
Другий кейс — це коли треба протестити фічу, яка вилогінює користувачів із системи після періоду «простою». Тестити це складно, бо треба довго чекати. За допомогою «годинника» можна прискорити час і швидко перевірити цю функцію.
await page.clock.install();
await page.goto(’localhost:3333’);
// зробіть шось з сторінкою
await page.getByRole(’button’).click();// перемотка вперед на 5 хвилин, ніби користувач нічого не робив.
await page.clock.fastForward(’5:00′);// Асерт, що користувач вийшов із системи автоматично.
await expect(page.getByText(’You have been logged out due to inactivity.’)).toBeVisible();
Ну і більш детально тут playwright.dev/docs/clock
Оновлення у тест-ранері
— Нова опція CLI —fail-on-flaky-tests, яка встановлює код виходу на 1 після будь-яких нестабільних тестів. За замовчуванням тест-раннер завершує роботу з кодом 0, коли всі зафейлені тести відновлюються після ретраю. Із цією опцією тестовий запуск у такому випадку не вдасться.
— Нова змінна середовища PLAYWRIGHT_FORCE_TTY для контролю поведінки tty для репортерів list, line і dot.
— Нові параметри testConfig.respectGitIgnore і testProject.respectGitIgnore контролюють, чи виключаються файли, що відповідають шаблонам .gitignore, під час пошуку тестів.
— Нова опція timeout тепер доступна для настроюваних матчерів. Ця властивість враховує playwright.config.ts і expect.configure().
Приклад
import { expect as baseExpect } from ’@playwright/test’;export const expect = baseExpect.extend({
async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) {
// Якщо параметр тайм-ауту не вказано, використовуйте тайм-аут конфігурації.
const timeout = options?.timeout ?? this.timeout;
// ... implement the assertion ...
},
});
Все інше
— Метод locator.setInputFiles() тепер підтримує завантаження каталогу для елементів <input type=file webkitdirectory>.
await page.getByLabel(’Upload directory’).setInputFiles(path.join(__dirname, ’mydir’));
— Кілька методів, як locator.click() або locator.press(), тепер підтримують ключ-модифікатор ControlOrMeta. Цей ключ мапиться на Meta в macOS і на Control у Windows і Linux.
// Натисніть загальну комбінацію клавіш Control+S або Meta+S, щоб запустити операцію «Зберегти».
await page.keyboard.press(’ControlOrMeta+S’);
— Нове проперті httpCredentials.send в apiRequest.newContext(), яке дозволяє або завжди надсилати Authorization заголовок, або надсилати його лише у відповідь на 401 Unauthorized.
— Нова опція reason в apiRequestContext.dispose()
— Нова опція host у browserType.launchServer() дозволяє приймати підключення через websocket за певною адресою замість 0.0.0.0.
— Playwright тепер підтримує Chromium, Firefox і WebKit на Ubuntu 24.04.
— v1.45 — останній випуск, який отримав оновлення WebKit для macOS 12 Monterey. Оновіть macOS, щоб і надалі використовувати останню версію WebKit.
Браузери
— Chromium 127.0.6533.5
— Mozilla Firefox 127.0
— WebKit 17.4
P.S. Щоб бути в курсі оновлень завжди, підписуйтесь на мій Telegram-канал або YouTube.
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів