Playwright v1.61: passkeys, Web Storage API
Вітаю. З вами Артур !
Playwright релізнув нову версію
Цей реліз не виглядає як революційний, але дуже практичний. Особливо якшо юззаєте passkeys.
WebAuthn passkeys
Одна з головних змін у Playwright v1.61.0 це новий віртуальний аутентифікатор Credentials, доступний через browserContext.credentials.
Він дозволяє тестам реєструвати passkeys:
navigator.credentials.create()navigator.credentials.get()
Тобто тепер можна тестувати WebAuthn/passkey-сценарії без фізичного security key або іншого реального пристрою.
Приклад:
const context = await browser.newContext();
// Seed a passkey your backend provisioned for a test user.
await context.credentials.create('example.com', {
id: credentialId,
userHandle,
privateKey,
publicKey,
});
await context.credentials.install();
const page = await context.newPage();
await page.goto('example.com/login’;
// The page's navigator.credentials.get() is answered with the seeded passkey.
Також можна дозволити застосунку один раз зареєструвати passkey у setup-тесті, прочитати його через credentials.get(), а потім використовувати в інших тестах.
Passkeys потрошки стають стандартним способом автентифікації. Але для автотестів вони створювали проблему бо реальний hardware key не дуже добре інтегрується в CI/CD, його складно контролювати і погано підходить для паралельного запуску тестів.
Новий virtual authenticator вирішує саме цю проблему. Тепер passkey-flow можна стабільно проганяти в автотестах.
Web Storage API
У релізі з’явився новий WebStorage API, доступний через:
page.localStoragepage.sessionStorage
Він дозволяє читати й записувати дані у сховище сторінки для поточного origin.
Приклад:
await page.localStorage.setItem('token', 'abc');
const token = await page.localStorage.getItem('token');
сonst items = await page.sessionStorage.items();
Це корисно для тестів, де потрібно:
- підготувати авторизаційний токен;
- увімкнути feature flag;
- перевірити поведінку застосунку після збереження стану;
- очистити або прочитати browser storage;
- відтворити сценарій користувача з уже наявними даними у браузері.
Нові API для Network
У Network API додано:
apiResponse.securityDetails()apiResponse.serverAddr()
Ці методи дзеркалять browser-side методи:
response.securityDetails()response.serverAddr()
Тепер подібну інформацію можна отримувати не тільки з відповідей у браузері, а й з API response.
Це може бути корисно для перевірки TLS/security metadata, адреси сервера або діагностики мережевих сценаріїв у тестах.
Browser і Screencast
У browserType.connectOverCDP() додано нову опцію:
artifactsDir
Вона дозволяє контролювати де зберігатимуться артефакти тіпа traces і downloads коли Playwright підключається до вже існуючого браузера.
Також у screencast.showActions() з’явилася нова опція:
cursor
Вона контролює декорацію курсора, яка відображається для pointer actions.
Крім цього, callback onFrame у screencast.start() тепер отримує timestamp, який показує, коли frame був представлений браузером.
Це корисно для debug-сценаріїв, запису дій юзера, демок або складного дебагінгу flaky-тестів.
Test Runner — нові режими video, soft polling і більше інформації для reporter-ів
У Playwright Test Runner додали кілька практичних покращень.
Нові режими для video
Опція testOptions.video тепер підтримує такий самий набір режимів, як і trace.
Додано нові значення:
'on-all-retries''retain-on-first-failure''retain-on-failure-and-retries'
Це дозволяє точніше контролювати, які відеозаписи створювати і які зберігати після запуску тестів.
Підтримка expect.soft.poll(...)
Тепер підтримується:
expect.soft.poll(...)
Це корисно, коли потрібно періодично перевіряти значення, але не зупиняти тест одразу після першого failure.
fullConfig.argv
Додано:
fullConfig.argv
Це snapshot process.argv з процесу runner-а. Може бути корисним для reporter-ів або кастомної логіки, яка читає аргументи, передані після --.
fullConfig.failOnFlakyTests
Додано:
fullConfig.failOnFlakyTests
Це дзеркалить відповідну config-опцію і дозволяє reporter-ам пояснювати, чому flaky run був позначений як failed.
testInfo.errors
testInfo.errors тепер показує кожну sub-error з AggregateError як окремий запис.
Це покращує діагностику складних failures, де одна помилка складається з кількох вкладених причин.
Новий shorthand -G
Додано короткий
-G
Він працює як shorthand для:
--grep-invert
Інші покращення
Playwright v1.61.0 також додає підтримку Ubuntu 26.04.
Крім того, HAR і trace recordings тепер включають WebSocket requests.
Оновлені версії браузерів
У Playwright v1.61.0 використовуються такі browser versions:
Chromium 149.0.7827.55Mozilla Firefox 151.0WebKit 26.5
Також мої колеги зробили класний огляд у відеоформаті
Всім гарного дня, стабільних тестів та буду радий бачити у своїй групі, щоб слідкувати за оновленнями світу розробки та тестування!
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів