Gerando Allure Report de forma automática com Github Actions

Rafael Peixoto
5 min readNov 26, 2022
Recorte de um relatório com allure report

No dia 21/11/2022, no evento do Júlio de Lima, Conferência de Testes de API Rest, tive a oportunidade de apresentar a seguinte palestra: Melhorando a automação de testes de API Rest na prática. Você pode conferir essa e outras palestras do evento nesse link.

O meu foco era apresentar dicas de como melhorar o seu código de teste mesmo sem ter muito conhecimento em programação. Acredito ter passado dicas importantes, mas um detalhe nessa palestra foi o que mais chamou a atenção das pessoas e foi o motivo que fez com que muitos me procurassem para aprender como fazer o relatório que mostro ao final da palestra.

Dado a repercussão que esse assunto "secundário" causou, resolvi escrever esse artigo e compartilhar os passos de como criar um relatório utilizando o framework Allure Report combinando Github Actions para fazer um deploy do relatório em uma Github Page.

O REPOSITÓRIO

Vou utilizar o mesmo repositório que usado na palestra. Trata-se de uma API Rest simples que eu mesmo desenvolvi para "brincar"/praticar algumas coisas. Essa API foi desenvolvida em Java com Spring Boot e Gradle. Você pode fazer um fork do projeto através desse link.

Com o projeto em mãos, você precisa acessar as "Settings" do repositório conforme a seguir:

Print tela principal do repositório apontando para Settings

Após isso, clique em "Pages" e faça as mesmas configurações apontadas na imagem a seguir:

É importante que em "Source" você escolha "Deploy from a branch". Também escolha as opções "gh-pages" e "/(root)". Essas configurações nos permitirão publicar e versionar nosso report.

Tendo isso configurado, vamos voltar ao projeto. Precisamos resolver mais dois pontos: fazer o nosso código ser capaz de gerar um allure report e criar uma pipeline através de github actions que seja capaz de executar os testes e, com os resultados, criar um report.

CONFIGURANDO O PROJETO (CÓDIGO)

Para gerar o allure report, precisamos apenas dos seguintes passos dentro do arquivo build.gradle: adicionar as dependências e o plugin do framework.

Adicionando dependência ao classpath
Aplica o plugin do allure report
Adiciona dependências

Obs: como eu criei um novo sourceset no meu projeto para separar os testes unitários dos testes de integração precisei adicionar as dependências em "testRunTimeOnly" e "integrationTestRuntimeOnly". Caso você não tenha essa separação e seus testes estejam todos em "test", basta adicionar a primeira. Reforço que todas essas configurações estão no arquivo build.gradle.

AS ACTIONS

Com isso feito, podemos ir para a última parte que é criar a pipeline com as actions. No projeto existem outros passos que não entrarei em detalhes aqui. Vou focar apenas nas partes relativas a geração do report. Se você não sabe o que é uma action, acesse esse link.

As actions ficam em ".github/workflows/pipeline-allure-report.yml". Veja um trecho do código:

  Tests:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v2
with:
java-version: '11'
distribution: 'adopt'

- name: Grant execute permission for gradlew
run: chmod +x gradlew

- name: Unit Tests
run: ./gradlew test -x integrationTest

- name: Integration Tests
run: ./gradlew integrationTest

- name: Get Allure history
uses: actions/checkout@v2
if: always()
continue-on-error: true
with:
ref: gh-pages
path: gh-pages

- name: Allure Report action from marketplace
uses: simple-elf/allure-report-action@master
if: always()
id: allure-report
with:
allure_results: allure-results
gh_pages: gh-pages
allure_report: allure-report
allure_history: allure-history

- name: Deploy report to Github Pages
if: always()
uses: peaceiris/actions-gh-pages@v2
env:
PERSONAL_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PUBLISH_BRANCH: gh-pages
PUBLISH_DIR: allure-history

Estou dizendo que rodaremos essa pipe em um ubuntu na última versão. Faremos o checkout do código nessa máquina configurando o Java 11 e dando permissão de execução ao Gradle. Depois disso, rodaremos tasks do gradle de teste (testes de unidade e integração).

No segundo checkout, configuramos a branch de referência para o allure: gh-pages. Nessa branch que os relatórios serão salvos e versionados.

A action "simple-elf/allure-report-action@master" é que fará a mágica do report. Você precisa se preocupar em apenas dizer onde os "allure-results" são salvos. Allure-results são arquivos que o allure gera (.json) com os resultados dos testes. A partir desses arquivos, o relatório será montado.

A última action "peaceiris/actions-gh-pages@v2" fará o deploy para o Github Pages. Clique aqui se você não sabe o que é Github Pages.

No projeto da apresentação deixei configurado para que a essa pipeline seja executada em dois casos: quando alguém fizer um push na branch main ou quando alguém abrir um pull request para a main.

Dessa forma, toda nova alteração será um gatilho para que essa pipeline de actions seja executada e ao fim, teremos os resultados de teste + relatório publicados na nossa github page.

CÓDIGO

REFERÊNCIAS

Até mais!!!

--

--