
Testes automatizados com GitHub Actions - Chameleon Devlog #2
🦎 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:
-
on.push e on.pull_request Toda vez que eu um push é feito no main ou um PR é aberto o fluxo roda.
-
runs-on: ubuntu-latest Por que Ubuntu? Porque é rápido, grátis e funciona.
-
Setup do .NET 9 Só mandar o dotnet-version: 9.0.x e tá pronto.
-
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:
- Definir um formato adequeado para as respostas de API + Atualizar Documentação
- CRUD completo para urls encurtadas
- 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!!! ヽ(・∀・)ノ