Skip to content
Closed
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
115 changes: 65 additions & 50 deletions .github/workflows/02-tests-ci.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
name: "Nível 2: Testes Automatizados"
on:
pull_request:
branches: [ main ]
branches: [main]


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

jobs:
tests-and-coverage:
Expand All @@ -20,59 +21,73 @@ jobs:
- name: "Checkout do código"
uses: actions/checkout@v4

# INSIRA AQUI A LÓGICA PARA RODAR OS TESTES E VERIFICAR A COBERTURA
###
###
###
- name: "Setup Node.js"
uses: actions/setup-node@v5
with:
node-version: ${{ env.NODE_VERSION }}

- name: "Instalar Deps"
run: npm ci

- name: "Executar tests"
run: npm run tests


- 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


- name: "Valida se os testes passaram"
if: ${{ steps.coverage.outputs.coverage < env.COVERAGE_MIN }}
run: |
echo "Cobertura mínima não atendida: Esperado - ${{ env.COVERAGE_MIN }}%. Atingido: ${{ steps.coverage.outputs.coverage }}%"
exit 1

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
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
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
## Testando GitHub Actions Vivaldo Junior 09/10/2025

# Descomplicando GitHub Actions

Se inscreva na aula ao vivo e gratuita: https://quiz.linuxtips.io/github-actions

Bem-vindo ao **Descomplicando GitHub Actions**! Este projeto foi criado pela comunidade **LINUXtips** para você aprender os conceitos básicos de CI/CD na prática de forma simples e direta.
Bem-vindo ao Vivaldo Junior ao **Descomplicando GitHub Actions**! Este projeto foi criado pela comunidade **LINUXtips** para você aprender os conceitos básicos de CI/CD na prática de forma simples e direta.

Este projeto foi desenhado para ser o material de apoio do vídeo "Descomplicando GitHub Actions" no [canal da LINUXtips no YouTube](https://youtube.com/linuxtips). A ideia é que você possa codificar junto e aprender na prática.

Expand Down