Кастомные матчеры в ассертах
Теперь можно расширять assertions кастомными матчерами, доступными в объекте expect
.
test.spec.ts
import { expect as baseExpect } from '@playwright/test'; export const expect = baseExpect.extend({ async toHaveAmount(locator: Locator, expected: number, options?: { timeout?: number }) { // ... see documentation for how to write matchers. }, }); test('pass', async ({ page }) => { await expect(page.getByTestId('cart')).toHaveAmount(5); });
Полный пример — в документации.
Объединение фикстур
Теперь можно объединять тестовые фикстуры из нескольких файлов или модулей:
fixtures.ts
import { mergeTests } from '@playwright/test'; import { test as dbTest } from 'database-test-utils'; import { test as a11yTest } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest);
test.spec.ts
import { test } from './fixtures'; test('passes', async ({ database, page, a11y }) => { // use database and a11y fixtures. });
Объединение пользовательских матчеров ожиданий
Теперь можно объединять пользовательские матчеры ожиданий из нескольких файлов или модулей:
fixtures.ts
import { mergeTests, mergeExpects } from '@playwright/test'; import { test as dbTest, expect as dbExpect } from 'database-test-utils'; import { test as a11yTest, expect as a11yExpect } from 'a11y-test-utils'; export const test = mergeTests(dbTest, a11yTest); export const expect = mergeExpects(dbExpect, a11yExpect);
test.spec.ts
import { test, expect } from './fixtures'; test('passes', async ({ page, database }) => { await expect(database).toHaveDatabaseUser('admin'); await expect(page).toPassA11yAudit(); });
Сворачивание деталей реализации
Закрыть шаги теста в рамку. Теперь можно пометить test.step()
как «boxed», чтобы ошибки внутри него указывали на место вызова шага:
async function login(page) { await test.step('login', async () => { // ... }, { box: true }); // Note the "box" option here. }
Error: Timed out 5000ms waiting for expect(locator).toBeVisible() ... error details omitted ... 14 | await page.goto('https://github.com/login'); > 15 | await login(page); | ^ 16 | });
Полный пример — в документации по test.step()
.
Новые API
expect(locator).toHaveAttribute()
Версии браузеров
- Chromium 119.0.6045.9
- Mozilla Firefox 118.0.1
- WebKit 17.4
v1.39 протестирована на стабильных релизах:
- Google Chrome 118
- Microsoft Edge 118
Блиц-практикум по нововведениям v1.39:
Канал Тестировщик | IT — все туториалы по инструментам будем собирать там