Documentação do Sistema de Testes

Visão Geral

Este documento descreve o sistema completo de testes implementado para o projeto Jekyll. O sistema abrange 7 fases de testes automatizados com múltiplas tecnologias.

Estrutura dos Testes

📁 Organização de Diretórios

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
tests/
├── .pa11yci.json
├── playwright.config.js
├── e2e/                          # Testes End-to-End (Playwright)
│   ├── fixtures/
│   ├── page-objects/
│   └── specs/
├── accessibility/                 # Testes de Acessibilidade
│   └── a11y-tests.spec.js
├── unit/
│   ├── js/                       # Testes Unitários JavaScript
│   │   ├── ThemeManager.test.js
│   │   ├── FontSizeManager.test.js
│   │   ├── SidebarStateManager.test.js
│   │   └── SearchEngine.test.js
│   ├── ruby/                     # Testes Unitários Ruby (RSpec)
│   │   └── spec/
│   └── python/                   # Testes Unitários Python (pytest)
│       ├── config/
│       │   ├── pytest.ini
│       │   └── requirements-dev.txt
│       └── tests
│           ├── test_update_repositories_metadata.py
│           └── test_process_docs.py
└── validation/                   # Validação de Build e HTML
    ├── validation_config.yml
    ├── build_validator.rb
    ├── frontmatter_validator.js
    ├── search_index_validator.js
    └── html_validator.py

Fases de Teste Implementadas

🎭 Fase 1: Testes E2E (Playwright)

Objetivo: Validar a experiência completa do usuário no site.

Tecnologias:

Cenários de Teste:

Comandos:

1
2
3
make test-e2e           # Execução headless
make test-e2e-headed    # Com interface gráfica
make test-e2e-debug     # Com Playwright inspector

♿ Fase 2: Testes de Acessibilidade

Objetivo: Garantir conformidade com WCAG 2.1 e acessibilidade universal.

Tecnologias:

Verificações:

Comandos:

1
2
make test-a11y          # Testes interativos
make test-a11y-auto     # Análise automática

🟨 Fase 3: Testes Unitários JavaScript

Objetivo: Validar módulos JavaScript extraídos dos arquivos HTML.

Tecnologia:

Módulos Testados:

Comandos:

1
2
3
make test-unit-js               # Execução básica
make test-unit-js-watch         # Modo watch (desenvolvimento)
make test-unit-js-coverage      # Com relatório de cobertura

💎 Fase 4: Testes Unitários Ruby (RSpec)

Objetivo: Testar plugins e funcionalidades Jekyll personalizadas.

Tecnologia:

Componentes Testados:

Comandos:

1
2
make test-unit-ruby             # Execução básica
make test-unit-ruby-verbose     # Com saída detalhada

🐍 Fase 5: Testes Unitários Python (pytest)

Objetivo: Validar scripts de automação do GitHub.

Tecnologia:

Scripts Testados:

Comandos:

1
2
make test-unit-python           # Execução básica
make test-unit-python-coverage  # Com relatório de cobertura

🏗️ Fase 6: Validação de Build e HTML

Objetivo: Garantir qualidade estrutural e conformidade do site gerado.

Tecnologias:

Validações Implementadas:

Build Validator (Ruby)

Frontmatter Validator (JavaScript)

Search Index Validator (JavaScript)

HTML Validator (Python)

Comandos:

1
2
make test-validation        # Validações estruturais
make test-validation-html   # Validação HTML completa

🚀 Fase 7: Automação e Relatórios

Objetivo: Automatizar execução de testes e gerar relatórios consolidados.

Scripts de Automação

setup-tests.sh:

coverage-report.sh:

GitHub Actions (CI/CD)

Comandos Principais

Comandos Rápidos (Desenvolvimento)

1
2
3
make test-fast          # JavaScript + Ruby + Python unitários
make serve              # Servidor Jekyll para testes
./scripts/setup-tests.sh # Configuração inicial completa

Comandos Completos (CI/Produção)

1
2
3
make test-all           # Todos os testes (build + unit + e2e + a11y + validation)
make test-coverage      # Relatórios de cobertura (JS + Python)
./scripts/coverage-report.sh # Relatório consolidado HTML

Comandos Específicos por Fase

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# E2E
make test-e2e           # Playwright headless
make test-e2e-headed    # Playwright com UI
make test-e2e-debug     # Com inspector

# Acessibilidade  
make test-a11y          # axe-core + pa11y
make test-a11y-auto     # Automático

# Unit Tests
make test-unit-js       # JavaScript (Vitest)
make test-unit-ruby     # Ruby (RSpec)  
make test-unit-python   # Python (pytest)

# Validação
make test-validation    # Build + Frontmatter + Search
make test-validation-html # Validação HTML completa

Métricas de Cobertura

Metas Definidas

Relatórios Gerados

Configurações e Dependências

package.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
  "scripts": {
    "test:e2e": "playwright test tests/e2e/",
    "test:e2e:headed": "playwright test tests/e2e/ --headed",
    "test:e2e:debug": "playwright test tests/e2e/ --debug",
    "test:a11y": "playwright test tests/accessibility/",
    "test:unit": "vitest run tests/unit/js/",
    "test:unit:watch": "vitest tests/unit/js/",
    "test:unit:coverage": "vitest run tests/unit/js/ --coverage"
  },
  "devDependencies": {
    "@playwright/test": "^1.40.0",
    "@axe-core/playwright": "^4.8.2",
    "pa11y-ci": "^3.0.1",
    "vitest": "^1.0.0",
    "@vitest/ui": "^1.0.0",
    "jsdom": "^23.0.0",
    "yaml": "^2.3.4"
  }
}

Gemfile (Ruby)

1
2
3
4
5
group :test do
  gem 'rspec', '~> 3.12'
  gem 'rspec-mocks', '~> 3.12'
  gem 'htmlproofer', '~> 5.0'
end

requirements-dev.txt (Python)

1
2
3
4
5
6
7
8
pytest>=7.4.0
pytest-cov>=4.1.0
coverage>=7.3.0
html5lib>=1.1
beautifulsoup4>=4.12.0
requests>=2.31.0
lxml>=4.9.0
PyYAML>=6.0.1

Troubleshooting

Problemas Comuns

1. Playwright browsers não instalados:

1
npx playwright install --with-deps

2. Dependências Python faltando:

1
pip install -r tests/unit/python/requirements-dev.txt

3. Jekyll não consegue fazer build:

1
2
bundle install
bundle exec jekyll build --verbose

4. Testes E2E falhando (servidor não rodando):

1
2
make serve  # Em terminal separado
make test-e2e

5. Permissões de script:

1
chmod +x scripts/*.sh

Melhorias Futuras

Funcionalidades Planejadas

Otimizações

Conclusão

O sistema de testes implementado oferece uma cobertura completa e automatizada para o projeto Jekyll MC Journey, abrangendo desde testes unitários até validação de acessibilidade e performance. A estrutura modular e os diferentes frameworks garantem qualidade em todas as camadas da aplicação.


Documentação gerada automaticamente
Sistema de Testes MC Journey - v1.0
Última atualização: $(date ‘+%Y-%m-%d’)