Playwright v1.61: passkeys, Web Storage API

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

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

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.localStorage
  • page.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

Додано короткий CLI-варіант:

-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.55
  • Mozilla Firefox 151.0
  • WebKit 26.5

Також мої колеги зробили класний огляд у відеоформаті

Всім гарного дня, стабільних тестів та буду радий бачити у своїй групі, щоб слідкувати за оновленнями світу розробки та тестування!

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

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