Playwright 1.51: коли тестування стає розумнішим: Git-інформація, покращені Test Steps та LLM-підказки
Вітаю. З вами Артур!
Сьогодні Playwright релізнув нову версію 1.51. Тож подивимось, що всередині.
StorageState для indexedDB
Якшо ваша апка юзає IndexedDB API шоб сторити токени для аутентифікації, по типу як Firebase Authentication, то включіть опцію indexedDB як true шоб включити IndexedDB в снепшот.
await page.context().storageState({ path: authFile, indexedDB: true });
Copy prompt кнопка
Додали красіву кнопку шоб копіювати попередньозаповнений промпт для LLM який вклчає месседж помилки та контекст.
(чекаю коли вони повноцінно прикрутят ШІ уже). Кнопка буде у HTML репорті, переглядачі трейсів та UI моді.
Сам промт складається з таких частин:
Instructions -опис шо робити моделі: пояснити, запропонувати фікс.
Test info — інфа про твій тест , назву та де знаходиться.
Error details — яка помилка виникла.
Page snapshot — снепшот сторінки.
Test source — кусок твого тесту де він завалився.
Filter visible elements
Нова опція visible для locator.filter() дозволяє матчити тільки видимі елементи
const todoItems = page.getByTestId('todo-item').filter({ visible: true });
Інформація Git у звіті HTML
Зʼявилась опція шоб показувать інфу з гіта. Включіть testConfig.captureGitInfo для запису інформації git у testConfig.metadata
// playwright.config.ts import { defineConfig } from '@playwright/test'; export default defineConfig({ captureGitInfo: { commit: true, diff: true } });
можно включити інфо про сам комміт(хеш комуті, автора, час) та діффчик(шоб покзать діфф у комітах)
Вангую шо по діфчикам коли прикрутят ШІ можно буде відслідкувати помилку або зробити якусь самаризацію у репорті автоматично. Подивимось :)
Покращення у Test Step
TestStepInfo тепер доступний у тестових кроках. Можна додати вкладені кроки або пропустити крок за певних умов. TestStepInfo має інфо про поточний крок тесту. Він передається як аргумент функції step. TestStepInfo надає можливість керувати виконанням кроку тесту. Наприклад: скіпнути для мобілок:
test('some test', async ({ page, isMobile }) => { // Note the new "step" argument: await test.step('here is my step', async step => { step.skip(isMobile, 'not relevant on mobile layouts'); // ... await step.attach('my attachment', { body: 'some text' }); // ... }); });
або другий приклад скіпнути в залежності від брауера
test(’basic test’, async ({ page, browserName }) => {
await test.step(’check some behavior’, async step => {
step.skip(browserName === ’webkit’, ’The feature is not available in WebKit’);
// ... rest of the step code
});
});
Всяке різне
contrast
для методів page.emulateMedia() і browser.newContext() дозволяє емулювати контрастність.await expect(page).toHaveURL(url => { const params = url.searchParams; return params.has('search') && params.has('options') && params.get('id') === '5'; });
Browser Versions
— Chromium 134.0.6998.35
— Mozilla Firefox 135.0
— WebKit 18.4
P.S.
Всім гарного дня, стабільних тестів та буду радий бачити у своїй групі, щоб слідкувати за оновленнями світу тестування та розробки!
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів