Playwright v1.45.0 — новий реліз. Що всередині

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

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

Сьогодні 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.

👍ПодобаєтьсяСподобалось2
До обраногоВ обраному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

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