Pular para o conteúdo principal

Serenity BDD com Playwright

O módulo serenity-playwright fornece integração perfeita entre as poderosas capacidades de relatórios do Serenity BDD e a automação de navegador moderna do Playwright. Essa combinação oferece o melhor dos dois mundos:

  • Velocidade e Confiabilidade do Playwright - Automação de navegador moderna com espera automática
  • Relatórios Ricos do Serenity - Documentação passo a passo com capturas de tela
  • Suporte ao Page Object Pattern - Arquitetura de testes limpa e fácil de manter
  • Testes Cross-Browser - Suporte a Chromium, Firefox e WebKit

Por que Playwright com Serenity?

O Playwright é uma biblioteca moderna de automação de navegador desenvolvida pela Microsoft que oferece várias vantagens:

  • Espera automática - O Playwright espera automaticamente que os elementos estejam prontos para ação antes de executar ações
  • Múltiplos Contextos de Navegador - Execute testes em contextos de navegador isolados para paralelização verdadeira
  • Interceptação de Rede - Simule e modifique requisições de rede facilmente
  • Emulação Mobile - Teste designs responsivos com emulação de dispositivos
  • Suporte Web Moderno - Suporte de primeira classe para Shadow DOM, iframes e web components

Combinado com o Serenity BDD, você obtém:

  • Captura Automática de Tela - Capturas de tela a cada conclusão de passo
  • Relatórios HTML Ricos - Relatórios interativos com documentação passo a passo
  • Documentação Viva - Testes que documentam como sua aplicação funciona
  • Captura de Código-Fonte da Página - Snapshots HTML para depuração de testes que falharam

Duas Abordagens: Page Object ou Screenplay

O Serenity Playwright suporta duas abordagens arquiteturais:

Page Object Pattern (Tradicional)

O padrão clássico de três camadas familiar à maioria dos engenheiros de automação de testes:

Classe de Teste (cenários de negócio)
└── Step Library (métodos @Step para relatórios do Serenity)
└── Page Object (encapsula locators e interações com a página)

Essa separação garante:

  • Testes leem como requisitos de negócio sem detalhes técnicos
  • Step Library fornecem relatórios ricos do Serenity com anotações @Step
  • Page Object encapsulam todas as estratégias de localização e lógica específica da página

Screenplay Pattern (Moderno)

O Screenplay Pattern é uma abordagem mais moderna, centrada no ator:

Classe de Teste (cenários de negócio)
└── Actor executa Task e faz Question
└── Task usam Target para interagir com a UI

Com Screenplay:

  • Actor representam usuários com habilidades (Ability), como navegar na web
  • Task expressam ações de alto nível em linguagem de negócio
  • Question consultam o estado da aplicação
  • Target definem elementos de UI usando seletores do Playwright

Ambas as abordagens se integram perfeitamente com os relatórios do Serenity.

Exemplos Rápidos

Abordagem Page Object

Veja como é um teste Serenity Playwright baseado em Page Object:

@ExtendWith(SerenityJUnit5Extension.class)
class SearchTest {

@Steps
WikipediaSteps wikipedia;

private Page page;

@BeforeEach
void setup() {
page = browser.newPage();
PlaywrightSerenity.registerPage(page);
}

@Test
void shouldSearchForATerm() {
wikipedia.openWikipedia(page);
wikipedia.searchFor(page, "Playwright");
wikipedia.verifyTitleContains(page, "Playwright");
}
}

Abordagem Screenplay

Veja o mesmo teste usando o Screenplay Pattern:

@ExtendWith(SerenityJUnit5Extension.class)
class SearchTest {

Actor researcher;

@BeforeEach
void setup() {
researcher = Actor.named("Researcher");
researcher.can(BrowseTheWebWithPlaywright.usingTheDefaultConfiguration());
}

@Test
void shouldSearchForATerm() {
researcher.attemptsTo(
Open.url("https://en.wikipedia.org"),
SearchFor.term("Playwright"),
Ensure.that(ThePageTitle.displayed()).contains("Playwright")
);
}
}

Ambas as abordagens leem como especificações - sem seletores CSS ou chamadas de API de baixo nível do Playwright, apenas linguagem de negócio clara.

Começando

Pronto para começar? Vá para o guia de Primeiros Passos para configurar seu primeiro projeto Serenity Playwright.

Para um exemplo completo:

  • Abordagem Page Object: Confira o Tutorial TodoMVC que mostra passo a passo como construir uma suíte de testes completa
  • Abordagem Screenplay: Veja o guia Screenplay com Playwright para o padrão centrado no ator com exemplos abrangentes