Playwright 1.51: коли тестування стає розумнішим: Git-інформація, покращені Test Steps та LLM-підказки

💡 Усі статті, обговорення, новини про тестування — в одному місці. Приєднуйтесь до QA спільноти!

Вітаю. З вами Артур!

Сьогодні 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() дозволяє емулювати контрастність.
— Нова опція failOnStatusCode для того шоб фейлити тести де є запити, зроблені через APIRequestContext, коли статус коди відмінні від 2xx і 3xx.
— expect(page).toHaveURL() тепер підтримує предикат. Приклад
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.

Всім гарного дня, стабільних тестів та буду радий бачити у своїй групі, щоб слідкувати за оновленнями світу тестування та розробки!


👍ПодобаєтьсяСподобалось2
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі