Skip to content

Realizando e adaptando boa parte das refatorações sugeridas no PR 1 #12

Realizando e adaptando boa parte das refatorações sugeridas no PR 1

Realizando e adaptando boa parte das refatorações sugeridas no PR 1 #12

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