Sobre esta ferramenta
A maioria das suítes de teste precisa do mesmo esqueleto de CI: fazer checkout do código, instalar um runtime, instalar dependências e navegadores, rodar os testes e guardar o relatório quando algo falha. Este gerador escreve esse workflow para Playwright (TypeScript), Cypress, Selenium com Java e Maven, ou pytest, usando as versões major atuais das actions oficiais (checkout@v4, setup-node@v4, setup-java@v4, setup-python@v5, cache@v4, upload-artifact@v4). Para Playwright, ele pode dividir a suíte em jobs paralelos com --shard=i/n e depois juntar os blob reports em um único relatório HTML, seguindo o padrão documentado do Playwright. Execuções agendadas usam cron de 5 campos em UTC, como o GitHub Actions exige.
Como usar
- Escolha o framework e a versão do runtime e depois os gatilhos: push, pull_request, um agendamento cron ou workflow_dispatch manual.
- Selecione os navegadores e, para Playwright, a quantidade de shards. Mantenha o cache e o upload de relatório ativados, a menos que tenha um motivo para não fazê-lo.
- Copie ou baixe o YAML, salve em .github/workflows/ no seu repositório e confira se comandos como npm ci ou pip install -r requirements.txt correspondem ao seu projeto.
Perguntas frequentes: Gerador de workflow do GitHub Actions para testes
Por que o agendamento roda em uma hora diferente da que eu esperava?
O GitHub Actions avalia o cron em UTC, então converta a partir do seu fuso local. Execuções agendadas também podem começar atrasadas em períodos de pico, e em repositórios públicos os workflows agendados são desativados automaticamente após 60 dias sem atividade no repositório.
Como funciona o sharding do Playwright aqui?
Uma matrix inicia um job por shard, e cada um roda npx playwright test --shard=i/n com o blob reporter. Um job seguinte baixa todos os blob reports e roda npx playwright merge-reports para produzir um único artefato de relatório HTML.
Onde coloco credenciais, como a senha de um usuário de teste?
Guarde-as como secrets do repositório ou do ambiente e referencie-as com ${{ secrets.NAME }} em um bloco env. Nunca faça commit delas no arquivo de workflow.