Compartilhe:

Publicado em 6 de December de 2022

Gerando Allure Report Com Github Actions

Apresentar os resultados de testes, sejam eles de qualquer nível ou tipo, é uma atividade importante. Não basta apenas escrever testes, o time precisa ter visibilidade dos seus resultados. Ao rodar testes automatizados em uma esteira de integração contínua, por exemplo, as pessoas envolvidas com o código até conseguem ter acesso ao que foi testado e se os testes passaram ou não, mas será que as pessoas de negócio também essa visão? E se for preciso uma apresentação mais formal para todos os envolvidos demonstrandos os resultados de teste? Seria legal ter algum relatório fácil com todas essas informações, não é mesmo?

Para resolver isso, podemos utilizar o Allure Report que é um framework que permite a geração de relatórios automáticos de teste. Nesse post, vou demonstrar como você pode gerar um relatório de teste de forma automática na sua pipeline.

Para demonstrar isso, vou utilizar um projeto pessoal do meu github. O projeto é uma API Rest desenvolvida em Java com gradle e Spring Boot. O projeto já possui as dependências necessárias como JUnit 5 e Allure Report.

Além disso, esse projeto já possui um arquivo .yml com as configurações de actions que vamos precisar (veremos mais a frente). Vamos conhecer o projeto.

O REPOSITÓRIO

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.

Referências

Tags:TestesAllure ReportGithub ActionsJava

Publicado por: PagBank Engineering