Технический обзор самого значимого релиза Playwright в 2026 году — виртуальная passkey-аутентификация, нативный доступ к Web Storage API и существенно улучшенный тест-раннер.
Playwright 1.61, вышедший 15 июня 2026 года, — одно из самых значительных обновлений популярного фреймворка для автоматизации браузеров в этом году. Релиз затрагивает три области, напрямую влияющие на то, как команды пишут и поддерживают E2E-тесты: WebAuthn passkey-аутентификация, Web Storage API и масштабное обновление тест-раннера.
Если вы поддерживаете CI-пайплайны или пишете интеграционные тесты для приложений, использующих passkey, localStorage или сложную логику повторных запусков — этот релиз меняет подход к каждой из этих задач. Ниже — полный разбор каждой новой возможности с рабочими примерами кода, заметками по миграции и спецификациями браузеров.
Главная функция Playwright 1.61 — виртуальный аутентификатор — встроенный
менеджер WebAuthn-учётных данных, доступный через browserContext.credentials.
Это первая нативная поддержка тестирования регистрации и аутентификации 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-тесте,
прочитать учётные данные через credentials.get() и передать их в последующие
тесты. Это позволяет реализовать реалистичное тестирование жизненного цикла passkey —
регистрация в одном шаге, аутентификация в другом — без внешнего управления состоянием
учётных данных.
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-пайплайнов.
Опция testOptions.video теперь поддерживает те же режимы, что и trace:
on-all-retries — запись видео для каждой повторной попыткиretain-on-first-failure — сохранить видео только для первого падения, удалить успешные прогоныretain-on-failure-and-retries — сохранить видео для первого падения и всех последующих повторных попыток
Эти режимы дают точный контроль над использованием дискового пространства в CI. Если вас
интересуют только ошибки, retain-on-first-failure экономит значительный объём
памяти по сравнению с записью всего подряд.
Мягкие утверждения теперь поддерживают опрос через expect.soft.poll(...).
Как и обычные мягкие утверждения, они не останавливают тест немедленно — ошибки собираются
и сообщаются после завершения теста. Вариант с опросом полезен для условий, требующих
времени для стабилизации, таких как асинхронные обновления UI или изменения состояния
на сервере.
fullConfig.argv предоставляет снимок process.argv из процесса
раннера, делая пользовательские аргументы CLI, переданные после разделителя --,
доступными в конфигурационных файлах и кастомных репортерах.
fullConfig.failOnFlakyTests отражает одноимённую опцию конфигурации, делая её
читаемой внутри репортеров. Это позволяет вашему репортеру объяснить, почему flaky-прогон
упал, или отобразить контекст обнаружения flaky-тестов в CI-дашбордах.
Два новых свойства APIResponse, соответствующих их браузерным аналогам:
apiResponse.securityDetails() — возвращает TLS-детали безопасности (протокол, шифр, издатель сертификата), полезно для проверки HTTPS-конфигурации в тестовых средахapiResponse.serverAddr() — возвращает разрешённый IP-адрес сервера и порт, помогает при отладке DNS-маршрутизации и конфигурации балансировщиков
Новая опция artifactsDir в browserType.connectOverCDP() управляет
тем, где сохраняются артефакты (trace, загрузки, скриншоты) при подключении Playwright к
существующему экземпляру браузера через CDP. Ранее пути артефактов было сложнее
контролировать в CDP-режиме — это изменение приводит их в соответствие со стандартным
workflow запуска.
Screencast API также получил опцию cursor в
screencast.showActions(), которая отображает индикатор курсора на экране.
Это полезно для демонстрационных записей и отладочных видео, где нужно показать, с каким
именно элементом взаимодействует Playwright.
Playwright 1.61 включает последние версии браузерных движков:
Релиз также протестирован на стабильных каналах Google Chrome 149 и Microsoft Edge 149.
Настройка надёжных E2E-тестов требует продуманной архитектуры — выбор правильных инструментов, структурирование тестов для поддержки и настройка CI для стабильного выполнения. Если вы планируете стратегию автоматизации или нуждаетесь в помощи с миграцией на Playwright 1.61, свяжитесь со мной для бесплатной консультации.
Я — full-stack разработчик с обширным опытом создания и тестирования production-приложений. Живу в Минске, работаю удалённо по всему миру. Давайте обсудим ваш проект.
Нужна помощь с автоматизацией тестирования или миграцией на Playwright 1.61? Расскажите о проекте — я дам предварительную оценку. Бесплатно.