Playwright 1.61: Passkeys, WebStorage API и тест-раннер
Playwright 1.61 · Июнь 2026

Playwright 1.61:
Passkeys, WebStorage API и новые функции

Технический обзор самого значимого релиза Playwright в 2026 году — виртуальная passkey-аутентификация, нативный доступ к Web Storage API и существенно улучшенный тест-раннер.

Олег Максимов 21 июня 2026 10 мин

Введение

Playwright 1.61, вышедший 15 июня 2026 года, — одно из самых значительных обновлений популярного фреймворка для автоматизации браузеров в этом году. Релиз затрагивает три области, напрямую влияющие на то, как команды пишут и поддерживают E2E-тесты: WebAuthn passkey-аутентификация, Web Storage API и масштабное обновление тест-раннера.

Если вы поддерживаете CI-пайплайны или пишете интеграционные тесты для приложений, использующих passkey, localStorage или сложную логику повторных запусков — этот релиз меняет подход к каждой из этих задач. Ниже — полный разбор каждой новой возможности с рабочими примерами кода, заметками по миграции и спецификациями браузеров.

Тестирование WebAuthn Passkey

Главная функция Playwright 1.61 — виртуальный аутентификатор — встроенный менеджер WebAuthn-учётных данных, доступный через browserContext.credentials. Это первая нативная поддержка тестирования регистрации и аутентификации passkey без внешнего оборудования или эмуляции платформенного аутентификатора.

Добавление Passkey

Вы можете добавить passkey, созданный вашим бэкендом для тестового пользователя. Виртуальный аутентификатор Playwright прозрачно обрабатывает вызовы navigator.credentials.create() и navigator.credentials.get():

const context = await browser.newContext();

// Добавляем passkey, выпущенный бэкендом
await context.credentials.create('example.com', {
  id: credentialId,
  userHandle,
  privateKey,
  publicKey,
});

await context.credentials.install();

const page = await context.newPage();
await page.goto('https://example.com/login');

// navigator.credentials.get() на странице
// отвечает добавленным passkey
await page.waitForURL('https://example.com/dashboard');

Захват Passkey в Setup-Тестах

Можно также дать приложению зарегистрировать passkey естественным образом в setup-тесте, прочитать учётные данные через credentials.get() и передать их в последующие тесты. Это позволяет реализовать реалистичное тестирование жизненного цикла passkey — регистрация в одном шаге, аутентификация в другом — без внешнего управления состоянием учётных данных.

Web Storage API

Playwright 1.61 добавляет page.localStorage и page.sessionStorage — прямой доступ к Web Storage для текущего origin без выполнения JavaScript на странице.

// Устанавливаем токен для тестов аутентификации
await page.localStorage.setItem('token', 'abc');

// Читаем его обратно
const token = await page.localStorage.getItem('token');

// Список всех записей sessionStorage
const items = await page.sessionStorage.items();

// Удаляем конкретный элемент
await page.localStorage.removeItem('token');

// Очищаем всё хранилище
await page.localStorage.clear();

Это API особенно полезно для инъекции состояния при подготовке тестов. Вместо многошаговой процедуры входа для установки состояния приложения, вы можете вставить токены и настройки напрямую в localStorage перед загрузкой страницы. Это уменьшает flakiness тестов и ускоряет выполнение сьюта.

Доступные методы: setItem(), getItem(), removeItem(), clear() и items() для localStorage и sessionStorage.

Улучшенный Тест-Раннер

Тест-раннер получил несколько значимых обновлений. Это не самые громкие функции, но они заметно улучшают разработку при отладке flaky-тестов и настройке CI-пайплайнов.

Новые Video-Режимы

Опция testOptions.video теперь поддерживает те же режимы, что и trace:

Эти режимы дают точный контроль над использованием дискового пространства в CI. Если вас интересуют только ошибки, retain-on-first-failure экономит значительный объём памяти по сравнению с записью всего подряд.

expect.soft.poll()

Мягкие утверждения теперь поддерживают опрос через expect.soft.poll(...). Как и обычные мягкие утверждения, они не останавливают тест немедленно — ошибки собираются и сообщаются после завершения теста. Вариант с опросом полезен для условий, требующих времени для стабилизации, таких как асинхронные обновления UI или изменения состояния на сервере.

fullConfig.argv и fullConfig.failOnFlakyTests

fullConfig.argv предоставляет снимок process.argv из процесса раннера, делая пользовательские аргументы CLI, переданные после разделителя --, доступными в конфигурационных файлах и кастомных репортерах.

fullConfig.failOnFlakyTests отражает одноимённую опцию конфигурации, делая её читаемой внутри репортеров. Это позволяет вашему репортеру объяснить, почему flaky-прогон упал, или отобразить контекст обнаружения flaky-тестов в CI-дашбордах.

Улучшения Сетевых API

Два новых свойства APIResponse, соответствующих их браузерным аналогам:

Браузер и Screencast

Новая опция artifactsDir в browserType.connectOverCDP() управляет тем, где сохраняются артефакты (trace, загрузки, скриншоты) при подключении Playwright к существующему экземпляру браузера через CDP. Ранее пути артефактов было сложнее контролировать в CDP-режиме — это изменение приводит их в соответствие со стандартным workflow запуска.

Screencast API также получил опцию cursor в screencast.showActions(), которая отображает индикатор курсора на экране. Это полезно для демонстрационных записей и отладочных видео, где нужно показать, с каким именно элементом взаимодействует Playwright.

Прочие Улучшения

Версии Браузеров

Playwright 1.61 включает последние версии браузерных движков:

Релиз также протестирован на стабильных каналах Google Chrome 149 и Microsoft Edge 149.

FAQ

Что нового в Playwright 1.61?
Playwright 1.61 добавляет виртуальный аутентификатор WebAuthn для тестирования passkey, Web Storage API для работы с localStorage/sessionStorage, улучшенный тест-раннер с новыми video-режимами и expect.soft.poll(), новые сетевые API, опцию artifactsDir для connectOverCDP() и поддержку Ubuntu 26.04.
Как тестировать WebAuthn passkey в Playwright 1.61?
Используйте виртуальный аутентификатор browserContext.credentials. Вызовите context.credentials.create(origin, {id, userHandle, privateKey, publicKey}) чтобы добавить passkey, затем context.credentials.install() чтобы сделать его доступным для navigator.credentials.get(). Можно захватить passkey в setup-тесте и переиспользовать в других сьютах.
Что такое Web Storage API в Playwright 1.61?
Page.localStorage и page.sessionStorage дают прямой доступ к Web Storage текущего origin. Методы setItem(), getItem(), removeItem(), clear() и items() позволяют читать и записывать данные без выполнения JavaScript на странице.
Какие новые video-режимы появились в Playwright 1.61?
Три новых режима: on-all-retries (запись видео для всех попыток), retain-on-first-failure (сохранить только для первого падения) и retain-on-failure-and-retries (сохранить для первого падения и всех повторных попыток). Это даёт точный контроль над дисковым пространством в CI.
Как работает expect.soft.poll() в Playwright 1.61?
expect.soft.poll() создаёт мягкое утверждение, которое периодически опрашивает условие до его выполнения или истечения таймаута. Мягкие утверждения не останавливают тест немедленно — они собирают ошибки и сообщают о них после завершения теста. Удобно для некритичных проверок в асинхронных сценариях.
С какими версиями браузеров выходит Playwright 1.61?
Playwright 1.61 включает Chromium 149.0.7827.55, Mozilla Firefox 151.0 и WebKit 26.5. Протестирован на стабильных каналах Google Chrome 149 и Microsoft Edge 149.
Playwright 1.61 поддерживает запись WebSocket трафика?
Да. HAR-экспорт и trace-записи теперь включают WebSocket-соединения. Это важно для отладки real-time приложений (чат, live-обновления, коллаборативные инструменты), где WebSocket-трафик раньше был невидим при анализе.

Нужна помощь с E2E-тестированием?

Настройка надёжных E2E-тестов требует продуманной архитектуры — выбор правильных инструментов, структурирование тестов для поддержки и настройка CI для стабильного выполнения. Если вы планируете стратегию автоматизации или нуждаетесь в помощи с миграцией на Playwright 1.61, свяжитесь со мной для бесплатной консультации.

Я — full-stack разработчик с обширным опытом создания и тестирования production-приложений. Живу в Минске, работаю удалённо по всему миру. Давайте обсудим ваш проект.

Контакты

Обсудим ваш проект

Нужна помощь с автоматизацией тестирования или миграцией на Playwright 1.61? Расскажите о проекте — я дам предварительную оценку. Бесплатно.