😱 Улучшайте тестовые отчёты в Playwright
Недавно я работал над тестовым решением и, как обычно, дошёл до момента, когда у меня оказалось так много тестов с большим количеством шагов, что стало всё сложнее получать процедурный обзор моих тестов
Это старая проблема автоматизации тестирования. Одним из настоящих преимуществ языка Gherkin является возможность получать человекочитаемый обзор сценариев тестов
Но теперь, если вы используете Playwright, вы можете сочетать test.step и декораторы методов TypeScript для тестовых методов и получать ещё более наглядные HTML-отчёты и Dashboard-репорты
О чём я говорю? Как это будет выглядеть?
Скриншот показывает, что верхнеуровневый контур нашего тестового отчёта содержит только высокоуровневые действия. Это даёт нам более наглядный обзор того, в чём на самом деле состоит наш тестовый сценарий или история.
Как это сделать?
Предусловие: у вас уже есть тестовый фреймворк, использующий POM или некоторый абстрактный слой на базе классов для шагов теста.
🟠Создайте переиспользуемый декоратор для своего проекта. Он будет маскировать официальный метод Playwright Test Step.
🟠Примените декоратор к методам вашего POM.
import test from 'playwright/test';
//Your test method decorator
export function testStep(nameOverride?: string) {
return function <T extends (...args: any[]) => any>(target: T, context: ClassMethodDecoratorContext) {
return function replacementMethod(this: any, ...args: Parameters<T>) {
const stepName = nameOverride ?? `${this.constructor.name}.${String(context.name)}`;
//this allows us to use the step title
return test.step(stepName, async () => {
return await target.call(this, ...args);
});
};
};
}
//your POM
export class SampleTestPage {
@testStep('Login with existing user')
async login() {
await this.page.getByTestId("your-button")
}
}
//your test spec
test('Login test', async () => {
const app = new SampleTestPage()
await app.login()
})
Теперь каждый раз, когда вы вызываете методы POM в спецификациях тестов, в отчётах Playwright будет появляться новый структурированный раздел. Нетрудно представить, насколько это будет существенно для большинства систем управления тестами.
👉Новости 👉База вопросов
