Realizando e adaptando boa parte das refatorações sugeridas no PR 1 #12
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Pipeline Testes Automatizados E2E (Ponta a Ponta) Front ServeRest Cypress | |
# executa o workflow toda vez que for realizado um push ou pull-request no repositório | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
# permite também executar esse workflow manualmente na aba "Actions" do GitHub | |
workflow_dispatch: | |
# entrada de dados | |
inputs: | |
spec: | |
description: Executar testes em modo headless (2º plano) por spec (suíte de testes) | |
# executar por padrão todas as suítes de testes presentes na pasta "e2e" incluindo as subpastas | |
default: cypress/e2e/** | |
jobs: | |
testes-automatizados-e2e-front-serve-rest-cypress-chrome: | |
# agente de execução/runner do tipo máquina virtual bem enxuta, sem interface gráfica | |
runs-on: ubuntu-latest | |
# template cypress com todas as dependências necessárias para executar os testes | |
container: | |
image: cypress/browsers:node18.12.0-chrome103-ff107 | |
# usuário com perfil administrador | |
options: --user 1001 | |
steps: | |
- name: Passo 1 - Obter cópia do código-fonte do repositório | |
uses: actions/checkout@v3.3.0 | |
- name: Passo 2 - Redirecionar o conteúdo de "secrets.LOGIN_ENV" para o arquivo "login.json" | |
run: | | |
echo '${{ secrets.LOGIN_ENV }}' > ./cypress/fixtures/login.json | |
- name: Passo 3 - Instalar dependências, Executar testes em modo headless (2º plano) em um ambiente de desenvolvimento e Gerar os resultados dos testes | |
uses: cypress-io/github-action@v5.0.8 | |
with: | |
# forçar, mesmo tendo possíveis conflitos, a instalação das dependências do projeto do arquivo "package.json" | |
install-command: npm install --force | |
browser: chrome | |
# executar testes em modo headless (2º plano) | |
spec: ${{ github.event.inputs.spec }} # configurado em "on > workflow_dispatch > inputs > spec" | |
- name: Passo 4 - Armazenar os resultados dos testes em vídeos | |
uses: actions/upload-artifact@v3 | |
# expressão condicional para que sempre seja executado independentemente dos resultados dos steps anteriores | |
if: ${{ always() }} | |
with: | |
name: cypress-videos-chrome | |
path: ./cypress/videos | |
# armazena por 30 dias | |
retention-days: 30 | |
- name: Passo 5 - Armazenar os resultados dos testes que falharam em screenshots | |
uses: actions/upload-artifact@v3 | |
if: ${{ failure() }} | |
with: | |
name: cypress-screenshots-chrome | |
path: ./cypress/screenshots | |
retention-days: 30 |