@devix-tecnologia/directus-extension-inframe
Version:
DEPRECATED: Use 'directus-extension-inframe' instead. This package is no longer maintained.
172 lines (117 loc) • 4.64 kB
Markdown
# Testing Documentation
Este documento descreve a estratégia de testes implementada para a extensão `directus-extension-inframe`.
## Estrutura de Testes
### Arquivos de Teste
- `tests/index.spec.ts` - Testes principais da extensão
- `tests/setup.ts` - Configuração do ambiente de teste
- `tests/helper_test.ts` - Funções auxiliares para testes
- `tests/test-env.ts` - Configuração de variáveis de ambiente
- `tests/test-logger.ts` - Logger para testes
- `tests/directus-versions.js` - Lista de versões do Directus para testar
### Configuração de Testes
- `vitest.config.js` - Configuração do Vitest
- `docker-compose.test.yml` - Container Docker para testes
- `tsconfig.test.json` - Configuração TypeScript para testes
## Estratégia de Testes
### Testes de Compatibilidade
Os testes são executados contra múltiplas versões do Directus para garantir compatibilidade:
- **Directus 9.x**: Versões finais da linha 9.x
- **Directus 10.x**: Versões estáveis da linha 10.x
- **Directus 11.x**: Versões mais recentes da linha 11.x
- **Latest**: Sempre a versão mais recente disponível
### Testes Implementados
1. **Configuração da Extensão**
- Verifica se a extensão tem a configuração correta (id, nome, ícone)
- Testa se as rotas estão configuradas adequadamente
2. **Integração com Directus**
- Cria uma coleção de teste dinamicamente
- Insere itens de teste com diferentes status
- Verifica se a API do Directus está funcionando
3. **Funcionalidade da Extensão**
- Testa filtros de itens publicados vs rascunhos
- Verifica estrutura dos dados retornados
- Valida URLs e títulos dos itens
4. **Compatibilidade entre Versões**
- Verifica se a extensão funciona em diferentes versões do Directus
- Identifica quebras de compatibilidade automaticamente
## Executando os Testes
### Localmente
```bash
# Instalar dependências
pnpm install
# Executar todos os testes
pnpm test
# Executar testes em modo watch
pnpm test:watch
# Executar com coverage
pnpm test:coverage
# Testar com versão específica do Directus
DIRECTUS_VERSION=11.10.2 pnpm test
```
### Docker
```bash
# Iniciar container de teste
docker compose -f docker-compose.test.yml up -d
# Parar container
docker compose -f docker-compose.test.yml down
# Ver logs do container
docker compose -f docker-compose.test.yml logs
```
## CI/CD
### GitHub Actions
- **CI Workflow** (`.github/workflows/ci.yml`):
- Executa em push/PR para `main` e `develop`
- Roda lint, build e testes
- Usa matriz de versões do Directus
- **Release Workflow** (`.github/workflows/release.yml`):
- Executa apenas na branch `main`
- Faz release automático com semantic-release
- Atualiza versões do Directus automaticamente (cron diário)
### Dependabot
Configurado em `.github/dependabot.yml` para:
- Atualizar dependências npm semanalmente
- Atualizar GitHub Actions
- Agrupar dependências relacionadas
## Estrutura do Container de Teste
O `docker-compose.test.yml` configura:
- **Directus**: Imagem oficial com versão variável
- **Banco**: SQLite em memória (tmpfs)
- **Storage**: Sistema de arquivos temporário
- **Rede**: Rede isolada para testes
### Variáveis de Ambiente
```env
DIRECTUS_VERSION=latest
DIRECTUS_PUBLIC_URL=http://localhost:18055
DIRECTUS_ADMIN_EMAIL=admin@example.com
DIRECTUS_ADMIN_PASSWORD=admin123
DEBUG_TESTS=false
```
## Manutenção
### Atualizando Versões do Directus
As versões são atualizadas automaticamente via:
- Cron job diário no GitHub Actions
- Script `.github/scripts/updateDirectusVersions.js`
- Pull request automático com as novas versões
### Versões Bloqueadas
Versões problemáticas podem ser bloqueadas em `directus-versions.js`:
```javascript
export const blockedDirectusVersions = ['11.10.1'];
```
## Troubleshooting
### Testes Falhando
1. Verificar se o Docker está rodando
2. Verificar se a porta 18055 está disponível
3. Checar logs do container: `docker compose -f docker-compose.test.yml logs`
4. Limpar containers: `docker compose -f docker-compose.test.yml down --volumes`
### Timeout nos Testes
- Aumentar timeout em `vitest.config.js`
- Verificar se o Directus está iniciando corretamente
- Checar recursos do sistema (memória, CPU)
### Problemas de Rede
- Verificar configuração de rede no Docker
- Testar conectividade: `curl http://localhost:18055/server/health`
- Verificar firewall/proxy
## Referências
- [Vitest Documentation](https://vitest.dev/)
- [Directus Extensions Documentation](https://docs.directus.io/extensions/)
- [Docker Compose Documentation](https://docs.docker.com/compose/)