O reporter HTML integrado do Playwright não tem detalhamento passo a passo, nenhum histórico de tendências entre execuções no CI, e nenhuma forma de vincular falhas a um bug tracker. O Allure adiciona os três através do adaptador allure-playwright, que escreve resultados brutos que você então compila em um relatório interativo com gráficos de tendências e categorias de falhas.

O que o Allure oferece

  • Suites de teste organizadas por arquivo, describe block e nome do teste
  • Timeline mostrando execução paralela de testes
  • Detalhamento passo a passo do que aconteceu em cada teste
  • Anexos: screenshots, vídeos, logs do console inline no relatório
  • Tendências: taxas de aprovação/reprovação em múltiplas execuções
  • Informações de ambiente: qual navegador, OS, versão do app foi testada
  • Categorias: agrupar falhas por tipo (bugs de produto, bugs de teste, flaky)

Instalação

# Instalar o adaptador Allure para Playwright
npm install -D allure-playwright

# Instalar o Allure CLI para gerar e abrir relatórios
npm install -D allure-commandline

Ou instalar o Allure CLI globalmente:

npm install -g allure-commandline

Configuração

Adicione o Allure como reporter no playwright.config.ts:

import { defineConfig } from '@playwright/test';

export default defineConfig({
  reporter: [
    ['list'],               // Output no console durante a execução
    ['allure-playwright'],  // Geração do relatório Allure
  ],
  
  // Opcional: configurar o Allure especificamente
  // reporter: [
  //   ['allure-playwright', {
  //     detail: true,
  //     outputFolder: 'allure-results',
  //     suiteTitle: false,
  //   }],
  // ],
});

O reporter escreve os resultados brutos em allure-results/ durante a execução dos testes. Você então gera o relatório HTML a partir desses resultados.

Rodando e visualizando relatórios

# Rodar os testes (escreve em allure-results/)
npx playwright test

# Gerar relatório HTML
npx allure generate allure-results --clean -o allure-report

# Abrir no navegador
npx allure open allure-report

Ou combinar geração e abertura:

npx allure generate allure-results --clean && npx allure open allure-report

Adicione ao package.json para conveniência:

{
  "scripts": {
    "test": "npx playwright test",
    "report": "npx allure generate allure-results --clean -o allure-report && npx allure open allure-report"
  }
}

Então: npm test && npm run report

Adicionando steps aos testes

O Allure pode mostrar detalhamentos passo a passo se você anotar seu código:

import { test, expect } from '@playwright/test';
import { allure } from 'allure-playwright';

test('login bem-sucedido', async ({ page }) => {
  await allure.step('Navegar para a página de login', async () => {
    await page.goto('/login');
  });
  
  await allure.step('Inserir credenciais', async () => {
    await page.fill('[data-testid="email"]', 'user@test.com');
    await page.fill('[data-testid="password"]', 'ValidPass1');
  });
  
  await allure.step('Enviar formulário de login', async () => {
    await page.click('[data-testid="submit"]');
  });
  
  await allure.step('Verificar redirecionamento para o dashboard', async () => {
    await expect(page).toHaveURL('/dashboard');
    await expect(page.getByTestId('welcome')).toBeVisible();
  });
});

No relatório Allure, cada step aparece separadamente com status de aprovado/reprovado.

Adicionando metadados

Anote os testes com metadados para melhor organização e filtragem:

test('pagamento com cartão válido', async ({ page }) => {
  // Labels para filtragem e agrupamento
  allure.label('feature', 'Checkout');
  allure.label('story', 'Pagamento com cartão de crédito');
  allure.severity('critical');  // 'blocker' | 'critical' | 'normal' | 'minor' | 'trivial'
  allure.owner('qa-team');
  
  // Link para issues e casos de teste
  allure.issue('PROJ-123', 'https://jira.minhaempresa.com/PROJ-123');
  allure.tmsLink('TC-456', 'https://testrail.minhaempresa.com/TC-456');
  
  // Descrição
  allure.description('Verificar que cartão de teste Stripe válido completa a compra');
  
  // Tags
  allure.tag('smoke');
  allure.tag('payment');
  
  // ... código do teste
});

Anexando screenshots e arquivos

import { allure } from 'allure-playwright';
import * as fs from 'fs';

test('verifica layout da página', async ({ page }) => {
  await page.goto('/dashboard');
  
  // Anexar screenshot manualmente
  const screenshot = await page.screenshot();
  await allure.attachment('Screenshot do dashboard', screenshot, 'image/png');
  
  // Anexar arquivo de texto
  const logContent = 'Teste iniciado em: ' + new Date().toISOString();
  await allure.attachment('Log do teste', Buffer.from(logContent), 'text/plain');
  
  // Anexar dados JSON
  const apiResponse = { status: 'ok', users: 42 };
  await allure.attachment(
    'Resposta da API',
    Buffer.from(JSON.stringify(apiResponse, null, 2)),
    'application/json'
  );
});

Screenshots em caso de falha são anexadas automaticamente se você as configurar no playwright.config.ts:

use: {
  screenshot: 'only-on-failure',
  video: 'retain-on-failure',
}

Informações de ambiente

Adicione detalhes do ambiente para que o relatório mostre o que foi testado:

// No playwright.config.ts ou no global setup
// Cria um arquivo allure-results/environment.properties

// global-setup.ts
import * as fs from 'fs';
import * as path from 'path';

export default async function globalSetup() {
  const envProps = [
    `BASE_URL=${process.env.BASE_URL || 'http://localhost:3000'}`,
    `ENV=${process.env.TEST_ENV || 'local'}`,
    `BROWSER=chromium`,
    `APP_VERSION=${process.env.APP_VERSION || 'desconhecido'}`,
  ].join('\n');
  
  fs.mkdirSync('allure-results', { recursive: true });
  fs.writeFileSync(path.join('allure-results', 'environment.properties'), envProps);
}

Isso aparece na seção Environment do relatório Allure.

Configuração de categorias

Categorias agrupam falhas de teste por tipo. Crie allure-results/categories.json:

[
  {
    "name": "Bugs de Produto",
    "messageRegex": ".*Expected.*",
    "matchedStatuses": ["failed"]
  },
  {
    "name": "Problemas de Infraestrutura de Teste",
    "messageRegex": ".*net::ERR.*|.*Navigation timeout.*|.*Connection refused.*",
    "matchedStatuses": ["failed", "broken"]
  },
  {
    "name": "Flakiness de Teste",
    "matchedStatuses": ["flaky"]
  }
]

O Allure categoriza automaticamente as falhas com base em padrões de mensagens de erro.

Integração com CI/CD

GitHub Actions

- name: Rodar testes Playwright
  run: npx playwright test

- name: Gerar relatório Allure
  if: always()
  run: npx allure generate allure-results --clean -o allure-report

- name: Fazer upload do relatório Allure
  uses: actions/upload-artifact@v4
  if: always()
  with:
    name: allure-report
    path: allure-report/
    retention-days: 30

- name: Fazer upload dos resultados brutos (para dados de tendência)
  uses: actions/upload-artifact@v4
  if: always()
  with:
    name: allure-results
    path: allure-results/

Allure TestOps (versão cloud)

Para histórico de tendências persistente entre execuções no CI, o Allure TestOps (serviço pago) armazena resultados centralmente. Alternativa gratuita: baixe os artefatos allure-results de execuções anteriores e inclua-os no próximo comando allure generate.

Playwright Report vs Allure Report

| Recurso | Playwright HTML | Allure |

|---------|----------------|--------|

| Setup necessário | Nenhum | Instalar + passo de geração |

| Detalhamento de steps | Não | Sim (com anotações) |

| Histórico de tendências | Não | Sim |

| Categorias | Não | Sim (configurável) |

| Links para ferramentas externas | Não | Sim (Jira, TestRail) |

| Melhor para | Uso diário rápido | Relatórios para stakeholders, histórico de CI |

Use o relatório integrado do Playwright localmente para feedback rápido. Use o Allure no CI para histórico persistente e relatórios para stakeholders.

Resumo

# Instalar
npm install -D allure-playwright allure-commandline

# Configurar no playwright.config.ts
reporter: [['allure-playwright']]

# Rodar → gerar → visualizar
npx playwright test
npx allure generate allure-results --clean
npx allure open allure-report

Recursos principais para usar:

  • allure.step() para detalhamento legível do teste
  • allure.severity() e labels para filtragem
  • allure.issue() para vincular falhas ao bug tracker
  • Propriedades de ambiente para documentar o que foi testado

O Allure é mais valioso quando você compartilha resultados de teste com desenvolvedores e product managers. Eles precisam entender o que falhou e por quê: o formato visual comunica mais do que uma lista de nomes de teste.

→ Veja também: Relatórios de Testes Playwright: HTML Integrado vs Allure | Relatórios de Testes no CI: Formatos, Ferramentas e Integração | GitHub Actions para Testes Playwright: A Configuração Completa (2026)