Skip to content

Commit fdc839f

Browse files
authored
Merge pull request #3 from FabioBartoli/main
Adicionando o Segundo Desafio
2 parents a7da9c4 + f49da2a commit fdc839f

8 files changed

Lines changed: 4985 additions & 437 deletions

File tree

.github/workflows/02-tests-ci.yml

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
name: "Nível 2: Testes Automatizados"
2+
on:
3+
pull_request:
4+
branches: [ main ]
5+
6+
env:
7+
NODE_VERSION: '18'
8+
CHALLENGE_LEVEL: 2
9+
CHALLENGE_NAME: "testes-automatizados"
10+
COVERAGE_MIN: 80 # Cobertura mínima exigida em porcentagem
11+
12+
jobs:
13+
tests-and-coverage:
14+
name: "Testes e Cobertura"
15+
runs-on: ubuntu-latest
16+
outputs:
17+
coverage: ${{ steps.coverage.outputs.coverage }}
18+
19+
steps:
20+
- name: "Checkout do código"
21+
uses: actions/checkout@v4
22+
23+
# INSIRA AQUI A LÓGICA PARA RODAR OS TESTES E VERIFICAR A COBERTURA
24+
###
25+
###
26+
###
27+
28+
- 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.
29+
id: coverage
30+
run: |
31+
COVERAGE=$(npx nyc report --reporter=text-summary | grep -oP 'Statements\s*:\s*\K[0-9\.]+(?=%)' | head -1)
32+
echo "Coverage: $COVERAGE%"
33+
echo "coverage=$COVERAGE" >> $GITHUB_OUTPUT
34+
35+
generate-certificate: # DAQUI PARA BAIXO, NÃO ALTERAR
36+
name: "Desafio Nível 2 - Certificado"
37+
runs-on: ubuntu-latest
38+
needs: tests-and-coverage
39+
if: success() && needs.tests-and-coverage.outputs.coverage != ''
40+
41+
steps:
42+
- name: "Gerar certificado"
43+
run: |
44+
mkdir -p certificates
45+
cat > certificates/level-2-certificate.md << EOF
46+
# Certificado de Conclusão - Nível 2
47+
48+
**Descomplicando Github Actions - GitHub Actions Edition**
49+
---
50+
51+
Este certificado atesta que **${{ github.actor }}** concluiu com sucesso:
52+
## Nível 2: Testes Automatizados
53+
54+
**Competências desenvolvidas:**
55+
- Automação de testes
56+
- Análise de cobertura
57+
- Lógica de validação com coverage mínimo
58+
- Upload de artefatos
59+
60+
**Cobertura:** >= ${{ env.COVERAGE_MIN }}%
61+
**Data de conclusão:** $(date)
62+
**Repositório:** ${{ github.repository }}
63+
**Workflow:** ${{ github.run_id }}
64+
65+
---
66+
**Badge conquistado:** Testes Automatizados
67+
68+
---
69+
*Certificado gerado automaticamente pelo GitHub Actions*
70+
*LINUXtips*
71+
EOF
72+
73+
- name: "Upload do certificado"
74+
uses: actions/upload-artifact@v4
75+
with:
76+
name: level-2-certificate
77+
path: certificates/
78+
retention-days: 30

README.md

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ Este projeto foi desenhado para ser o material de apoio do vídeo "Descomplicand
88

99
## O que você vai aprender
1010

11-
Neste nível básico você aprenderá:
11+
Neste projeto você aprenderá:
1212

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

1919
## Como Começar
2020

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

50-
## O que acontece no Workflow?
50+
## O que acontece nos Workflows?
5151

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

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

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

62-
Ao completar este workflow com sucesso, você ganha o badge:
62+
1. **Testes Automatizados**: Executar Jest com cobertura
63+
2. **Cobertura Mínima**: Validar cobertura mínima definida por `COVERAGE_MIN` (80%)
64+
3. **Certificado**: Gerar um artefato com seu certificado do nível 2 (level-2-certificate)
65+
66+
## Badges Conquistados
67+
68+
Ao completar cada workflow com sucesso, você ganha os badges:
6369

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

72+
![Desafio 02 Concluído](https://img.shields.io/badge/Desafio_02-Concluído-8a2be2?style=for-the-badge&logo=github&logoColor=white)
73+
6674
## Entendendo o Código
6775

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

0 commit comments

Comments
 (0)