Testes automatizados com GitHub Actions - Chameleon Devlog #2

Testes automatizados com GitHub Actions - Chameleon Devlog #2

.NET
API
CI/CD
Desenvolvimento
Chameleon

🦎 Recap rápido

Pra quem caiu de paraquedas: O Chameleon é um projeto open source, API de encurtamento de URLs, .NET 9, PostgreSQL, Docker, e a promessa de ser production ready. No último devlog trabalhamos um pouco na divisão de responsabilidades do projeto.

🧪 Da teoria ao push: testando antes de quebrar o main

Depois do primeiro passo com o Chameleon, veio aquele momento inevitável: rodar os testes toda vez antes de dar um push.

Quer dizer… Inevitável pra quem não gosta de viver perigosamente.

No desenvolvimento orientado a go horse é comum aquela rotina de confiança cega:

"Ah, só mexi num detalhe, nem vou rodar os testes agora..."
"Ops... por que o deploy caiu?"

O problema é clássico:
Se não automatizar, vai esquecer. Se esquecer, vai quebrar.

E para evitar isso vamos implementar um fluxo simples de CI que roda nossos testes sempre que um novo commit é feito na branch main do nosso projeto. Preparando o terreno para os futuros deploys automatizados.

🤖 O fluxo de CI mais simples que resolve 90% dos problemas

O foco era só um:

  • Buildar o projeto
  • Rodar os testes
  • Falhar se algo estiver errado

Nada de deploy automático por enquanto, nem integração com nuvem, nem notifications no Slack. Apenas o essencial: testes rodando no push e no pull request pro main.

name: .NET

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v4
    - name: Setup .NET
      uses: actions/setup-dotnet@v4
      with:
        dotnet-version: 9.0.x
    - name: Restore dependencies
      run: dotnet restore
    - name: Build
      run: dotnet build --no-restore
    - name: Test
      run: dotnet test --no-build --verbosity normal

🔍 O pipeline feijão com arroz:

  1. on.push e on.pull_request Toda vez que eu um push é feito no main ou um PR é aberto o fluxo roda.

  2. runs-on: ubuntu-latest Por que Ubuntu? Porque é rápido, grátis e funciona.

  3. Setup do .NET 9 Só mandar o dotnet-version: 9.0.x e tá pronto.

  4. Restore, Build e Test Sequência clássica:

  • 📥 Baixa as dependências
  • 🔨 Compila o projeto
  • ✅ Roda os testes

🏗️ Pequenas vitórias > Features novas

A suíte de testes do Chameleon ainda é focada em xUnit + Moq. Mas o plano é, aos poucos, incluir testes de integração e talvez até alguns end-to-end com containers isolados.

Esse tipo de setup pode parecer pequeno, mas é o tipo de coisa que constrói a base do projeto de verdade.

Antes de ter cache, autenticação e métricas... O projeto precisa não quebrar toda vez que alguém mexe no código.

🔮 Próximos passos?

Com uma estrutura bem definida e os testes rodando ainda sobram algumas pontas soltas:

  1. Definir um formato adequeado para as respostas de API + Atualizar Documentação
  2. CRUD completo para urls encurtadas
  3. Autenticação e Deploy da primeira versão

Por enquanto, é isso! Código está no repositório, CI rodando, cobertura crescendo... E o Chameleon cada vez mais perto de sair da fase de side project pra algo realmente usável.

🔗 Repositório do Chameleon no GitHub

Open Source Software Hell Yeah!!! ヽ(・∀・)ノ

Compartilhar este post