Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions .github/workflows/02-tests-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: "Nível 2: Testes Automatizados"
on:
pull_request:
branches: [ main ]

env:
NODE_VERSION: '18'
CHALLENGE_LEVEL: 2
CHALLENGE_NAME: "testes-automatizados"
COVERAGE_MIN: 80 # Cobertura mínima exigida em porcentagem

jobs:
tests-and-coverage:
name: "Testes e Cobertura"
runs-on: ubuntu-latest
outputs:
coverage: ${{ steps.coverage.outputs.coverage }}

steps:
- name: "Checkout do código"
uses: actions/checkout@v4

# INSIRA AQUI A LÓGICA PARA RODAR OS TESTES E VERIFICAR A COBERTURA
###
###
###

- name: "Extrair porcentagem de cobertura" # Esse step será validado pelo desafio, não altere o nome. No final, ele deve gerar o output "coverage" com a porcentagem de cobertura.
id: coverage
run: |
COVERAGE=$(npx nyc report --reporter=text-summary | grep -oP 'Statements\s*:\s*\K[0-9\.]+(?=%)' | head -1)
echo "Coverage: $COVERAGE%"
echo "coverage=$COVERAGE" >> $GITHUB_OUTPUT

generate-certificate: # DAQUI PARA BAIXO, NÃO ALTERAR
name: "Desafio Nível 2 - Certificado"
runs-on: ubuntu-latest
needs: tests-and-coverage
if: success() && needs.tests-and-coverage.outputs.coverage != ''

steps:
- name: "Gerar certificado"
run: |
mkdir -p certificates
cat > certificates/level-2-certificate.md << EOF
# Certificado de Conclusão - Nível 2

**Descomplicando Github Actions - GitHub Actions Edition**
---

Este certificado atesta que **${{ github.actor }}** concluiu com sucesso:
## Nível 2: Testes Automatizados

**Competências desenvolvidas:**
- Automação de testes
- Análise de cobertura
- Lógica de validação com coverage mínimo
- Upload de artefatos

**Cobertura:** >= ${{ env.COVERAGE_MIN }}%
**Data de conclusão:** $(date)
**Repositório:** ${{ github.repository }}
**Workflow:** ${{ github.run_id }}

---
**Badge conquistado:** Testes Automatizados

---
*Certificado gerado automaticamente pelo GitHub Actions*
*LINUXtips*
EOF

- name: "Upload do certificado"
uses: actions/upload-artifact@v4
with:
name: level-2-certificate
path: certificates/
retention-days: 30
24 changes: 16 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ Este projeto foi desenhado para ser o material de apoio do vídeo "Descomplicand

## O que você vai aprender

Neste nível básico você aprenderá:
Neste projeto você aprenderá:

- **Estrutura de um workflow**: jobs, steps, actions do marketplace
- **Como usar actions prontas**: `actions/checkout`, `actions/setup-node`
- **Executar comandos**: instalação de dependências, build, testes básicos
- **Executar comandos**: instalação de dependências, build, testes e cobertura
- **Health checks**: verificar se sua aplicação está funcionando
- **Artefatos**: gerar certificados de conclusão
- **Artefatos**: gerar certificados de conclusão dos níveis 1 e 2

## Como Começar

Expand Down Expand Up @@ -47,22 +47,30 @@ Neste nível básico você aprenderá:
- Faça commit e push
- Vá para a aba "Actions" e veja seu primeiro workflow rodando!

## O que acontece no Workflow?
## O que acontece nos Workflows?

O arquivo `01-basic-ci.yml` demonstra:
O arquivo `01-basic-ci.yml` (Nível 1) demonstra:

1. **Setup do Ambiente**: Configuração do Node.js
2. **Verificação da Estrutura**: Validação dos arquivos do projeto
3. **Build**: Executar o comando de build
4. **Health Check**: Testar se a aplicação inicia corretamente
5. **Certificado**: Gerar um artefato com seu certificado de conclusão
5. **Certificado**: Gerar um artefato com seu certificado de conclusão (level-1-certificate)

## Badge Conquistado
O arquivo `02-tests-ci.yml` (Nível 2) demonstra:

Ao completar este workflow com sucesso, você ganha o badge:
1. **Testes Automatizados**: Executar Jest com cobertura
2. **Cobertura Mínima**: Validar cobertura mínima definida por `COVERAGE_MIN` (80%)
3. **Certificado**: Gerar um artefato com seu certificado do nível 2 (level-2-certificate)

## Badges Conquistados

Ao completar cada workflow com sucesso, você ganha os badges:

![Desafio 01 Concluído](https://img.shields.io/badge/Desafio_01-Concluído-brightgreen?style=for-the-badge&logo=githubactions&logoColor=white)

![Desafio 02 Concluído](https://img.shields.io/badge/Desafio_02-Concluído-8a2be2?style=for-the-badge&logo=github&logoColor=white)

## Entendendo o Código

- **`server.js`**: Aplicação Express simples com dashboard e API
Expand Down
Loading