UNPKG

@devix-tecnologia/directus-extension-inframe

Version:

DEPRECATED: Use 'directus-extension-inframe' instead. This package is no longer maintained.

335 lines (264 loc) 7.84 kB
# Melhorias Sugeridas para directus-file-zip Este documento lista melhorias identificadas durante a implementação de testes no projeto `directus-extension-inframe` que poderiam beneficiar o projeto `directus-file-zip`. ## 🚀 Melhorias de Alta Prioridade ### 1. Job de Build Separado no CI/CD **Problema**: Atualmente o build é testado durante o release **Solução**: Adicionar job separado de build no CI ```yaml # .github/workflows/ci.yml e release.yml build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: actions/setup-node@v4 with: node-version: 22.17.0 - uses: pnpm/action-setup@v4 with: version: 10.20.0 run_install: false - run: pnpm install - run: pnpm build ``` **Benefícios**: - Detecta problemas de build antes do release - Feedback mais rápido para desenvolvedores - Evita releases quebrados ### 2. Dependabot com Agrupamento Inteligente **Problema**: Muitos PRs individuais para dependências relacionadas **Solução**: Agrupar dependências por categoria ```yaml # .github/dependabot.yml version: 2 updates: - package-ecosystem: "npm" directory: "/" schedule: interval: "weekly" day: "monday" open-pull-requests-limit: 10 groups: devix-dependencies: patterns: - "@devix-tecnologia/*" directus-dependencies: patterns: - "@directus/*" - "directus" semantic-release: patterns: - "@semantic-release/*" - "semantic-release" eslint-dependencies: patterns: - "eslint*" - "@eslint/*" typescript-dependencies: patterns: - "typescript*" - "@types/*" ``` **Benefícios**: - Reduz número de PRs de dependências - Agrupa atualizações relacionadas - Facilita revisão e merge ### 3. CI em Múltiplas Branches **Problema**: CI roda na branch `main` **Solução**: Incluir branch `develop` no CI ```yaml # .github/workflows/ci.yml on: push: branches: ['main', 'develop'] pull_request: branches: ['main', 'develop'] ``` **Benefícios**: - Detecta problemas mais cedo no desenvolvimento - Garante qualidade na branch de desenvolvimento - Reduz surpresas no merge para main ## 📊 Melhorias de Média Prioridade ### 4. Coverage de Testes Aprimorado **Problema**: Falta relatórios detalhados de cobertura **Solução**: Configurar coverage com múltiplos formatos ```javascript // vitest.config.js export default defineConfig({ test: { coverage: { provider: 'v8', reporter: ['text', 'json', 'html'], exclude: [ 'node_modules/', 'dist/', 'src/tests/', '**/*.spec.ts', '**/*.test.ts' ] }, }, }); ``` **Scripts adicionais**: ```json { "scripts": { "test:coverage": "vitest run --coverage", "test:watch": "vitest", "test:ui": "vitest --ui" } } ``` **Benefícios**: - Relatórios visuais de cobertura - Identificação de código não testado - Melhora qualidade dos testes ### 5. Documentação Expandida de Testes **Problema**: Falta documentação detalhada sobre execução de testes **Solução**: Criar documentação abrangente ```markdown # docs/TESTING.md ## Estrutura de Testes ## Executando Localmente ## Troubleshooting ## Versões do Directus Testadas ## Adicionando Novos Testes ``` **Estrutura recomendada**: ``` project/ ├── src/ ├── tests/ # Testes separados do código fonte ├── setup.ts └── *.spec.ts ├── docs/ └── package.json ``` **Arquivo de exemplo**: ```env # .env.example DIRECTUS_VERSION=latest DIRECTUS_PUBLIC_URL=http://localhost:18055 DIRECTUS_ADMIN_EMAIL=admin@example.com DIRECTUS_ADMIN_PASSWORD=admin123 DEBUG_TESTS=false ``` **Benefícios**: - Facilita onboarding de novos desenvolvedores - Reduz tempo de setup - Documenta troubleshooting comum ### 6. Configuração TypeScript para Testes **Problema**: Configuração TypeScript não otimizada para testes **Solução**: Criar configuração específica ```json // tsconfig.test.json { "extends": "./tsconfig.base.json", "compilerOptions": { "types": ["vitest/globals", "node"], "moduleResolution": "node", "allowImportingTsExtensions": false, "resolveJsonModule": true }, "include": [ "src/tests/**/*", "vitest.config.js" ] } ``` **Benefícios**: - Melhor suporte de tipos nos testes - Separação de configurações - IntelliSense aprimorado ## 🔧 Melhorias de Baixa Prioridade ### 7. Refinamentos de ESLint **Problema**: ESLint muito restritivo em arquivos de teste **Solução**: Configurações específicas para testes ```typescript // src/tests/test-logger.ts /* eslint-disable no-console */ export const logger = { // Permite console apenas em logs de teste }; ``` **Configuração ESLint**: ```json { "overrides": [ { "files": ["src/tests/**/*"], "rules": { "no-console": "off", "@typescript-eslint/no-unused-vars": ["error", { "argsIgnorePattern": "^_" }] } } ] } ``` ### 8. Melhor Tratamento de Erros nos Testes **Problema**: Erros esperados geram warnings desnecessários **Solução**: Usar convenção de underscore para erros ignorados ```typescript // Antes } catch (error) { // Silently ignore - gera warning ESLint } // Depois } catch (_error) { // Silently ignore - sem warning } ``` ### 9. Logs de Debug Estruturados **Problema**: Logs de debug não estruturados **Solução**: Sistema de logs melhorado ```typescript export const logger = { currentTest: '', setCurrentTest(test: string) { this.currentTest = test; }, debug(message: string, ...args: any[]) { if (process.env.DEBUG_TESTS) { console.log(`[DEBUG] ${this.currentTest ? `[${this.currentTest}] ` : ''}${message}`, ...args); } }, // ... outros métodos }; ``` ### 10. Workflow de Release Aprimorado **Problema**: Release workflow poderia ser mais robusto **Solução**: Adicionar mais validações ```yaml release: needs: [lint, build, test] # Adicionar dependency do build if: github.event_name == 'push' runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: actions/setup-node@v4 - uses: pnpm/action-setup@v4 - run: pnpm install - run: pnpm build # Garantir build antes do release - name: Release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_TOKEN: ${{ secrets.NPM_TOKEN }} run: npx semantic-release --access public ``` ## 📋 Plano de Implementação ### Fase 1 (Impacto Imediato) - [ ] Adicionar job de build separado - [ ] Configurar dependabot com agrupamento - [ ] Incluir branch develop no CI ### Fase 2 (Melhoria de Qualidade) - [ ] Configurar coverage de testes - [ ] Criar documentação de testes - [ ] Adicionar configuração TypeScript para testes ### Fase 3 (Refinamentos) - [ ] Melhorar configuração ESLint - [ ] Implementar logs estruturados - [ ] Aprimorar workflow de release ## 🎯 Critérios de Sucesso - Build quebrado detectado antes do release - Menos PRs de dependências (agrupadas) - Problemas detectados na branch develop - Coverage de testes > 80% - Documentação completa para novos desenvolvedores - Zero warnings ESLint desnecessários ## 📚 Referências - [Dependabot Configuration](https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file) - [GitHub Actions Best Practices](https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions) - [Vitest Coverage](https://vitest.dev/guide/coverage.html) - [TypeScript Project References](https://www.typescriptlang.org/docs/handbook/project-references.html)