Key Changes

  • Запись HAR в Tracing: Функции tracing.startHar() и tracing.stopHar() теперь являются полноценными API для трассировки. Это позволяет записывать HAR-трафик в определенном скоупе с использованием await using, упрощая захват сетевого трафика во время тестов.
    await using har = await context.tracing.startHar('trace.har');
    const page = await context.newPage();
    await page.goto('https://playwright.dev');
    // HAR is finalized when `har` goes out of scope.
    
  • API Drop: Новый метод locator.drop() имитирует внешние действия drag-and-drop, поддерживая файлы или данные. Это ценно для тестирования зон загрузки файлов и интерактивных элементов, работая стабильно во всех браузерах.
    await page.locator('#dropzone').drop({
      files: { name: 'note.txt', mimeType: 'text/plain', buffer: Buffer.from('hello') },
    });
    
  • Aria Snapshots: expect(page).toMatchAriaSnapshot() теперь работает непосредственно с объектом Page. Новая опция boxes для ariaSnapshot() добавляет координаты ограничивающего прямоугольника, что полезно для тестирования доступности с помощью ИИ.
  • Управление Тестами: test.abort() позволяет немедленно прервать текущий тест из фикстуры, хука или обработчика маршрута с опциональным сообщением. Это полезно при обнаружении невосстановимой ошибки или некорректного использования.
    test('does not publish to the shared page', async ({ page }) => {
      await page.route('**/publish', route => {
        test.abort('Tests must not publish to the shared page. Use the `clone` option.');
        return route.abort();
      });
      // ...
    });
    
  • Новые API: Playwright v1.60.0 представляет несколько новых API для более тонкого контроля и улучшенной обработки событий. Событие browser.on('context') позволяет отслеживать новые контексты браузера, в то время как BrowserContext теперь зеркалирует события жизненного цикла страниц, такие как download, frameattached, pageclose и pageload. Это упрощает управление событиями на нескольких страницах в рамках одного контекста. Для локаторов, getByRole() получает опцию description, что позволяет более точно тестировать доступность, сопоставляя доступное описание. expect(locator).toHaveCSS() теперь может проверять вычисляемые стили псевдоэлементов (::before, ::after) с помощью опции pseudo. Визуальная отладка улучшена благодаря locator.highlight(), поддерживающему опцию style для пользовательских наложений, и page.hideHighlight() для их удаления. Управление сетью также улучшено с помощью webSocketRoute.protocols() для получения запрошенных субпротоколов WebSocket и browserType.connectOverCDP(), предлагающего опцию noDefaults для отключения стандартных переопределений Playwright.

Impact for QA Teams

Эти обновления расширяют возможности автоматизации тестирования, особенно в части сетевого взаимодействия, сценариев drag-and-drop и тестирования доступности. QA-инженеры могут создавать более точные и надежные тесты, повышая стабильность и покрытие тестовых наборов. Для сравнения с другими инструментами, ознакомьтесь с нашей статьей Playwright vs Cypress.