Skip to content

Latest commit

 

History

History
75 lines (57 loc) · 16.7 KB

File metadata and controls

75 lines (57 loc) · 16.7 KB

Testes

Comandos

# Run all tests
npm test

# Watch mode
npm run test:watch

# With coverage report
npm run test:coverage

# Unit tests only
npm run test:unit

# Integration tests (matches src/**/*.integration.{test,spec}.{ts,tsx})
npm run test:integration

# E2E tests (requires build)
npm run test:e2e

Os relatórios de cobertura são gerados em coverage/:

  • coverage/index.html — HTML navegável
  • coverage/lcov.info — LCOV para integração com IDEs

Suite de testes

A suite roda com Vitest 4 (123 arquivos de teste, 1603 testes, todos passando). A cobertura usa o provider v8.

Área Arquivos (testes) O que cobre
Shared errors.test.ts, constants.test.ts, codec-containers.test.ts, validation.test.ts, types.test.ts, logger.test.ts, ipc-channels.test.ts, estimate.test.ts Normalização de erros, todas as constantes compartilhadas, mapeamento codec/contêiner, helpers de validação, contratos de tipos, logger, registro de canais IPC, estimativa
Main cli.test.ts, index.test.ts, capabilities.test.ts, job-queue.test.ts, process-utils.test.ts, image-file-info.test.ts, image-info.test.ts, image-preview.test.ts, video-preview.test.ts, cli-logo.test.ts, media-binaries.test.ts, power-actions.test.ts, preview-cache.test.ts Entrada CLI, ciclo de vida das janelas, análise de encoders, semântica da fila, utilitários de processos, geração de previews de imagem/vídeo, resolução de binários de mídia, ações de energia, cache de previews
Main CLI cli/cli-cli.test.ts, cli/cli-options.test.ts, cli/cli-convert.test.ts, cli/cli-compress.test.ts, cli/cli-util.test.ts, cli/cli-integration.integration.test.ts Parsing de subcomandos do CLI, tratamento de opções, subcomandos convert/compress, funções utilitárias, testes de integração
Main IPC ipc/player.test.ts, ipc/image.test.ts, ipc/dialogs.test.ts, ipc/conversion.test.ts, ipc/window.test.ts, ipc/queue.test.ts, ipc/timeline.test.ts, ipc/send.test.ts, ipc/handlers.test.ts, ipc/system.test.ts, ipc/capabilities.test.ts Handlers IPC por canal, broadcast de eventos, wrapping de erros, handlers do sistema
Main transcoders transcoders/ffmpeg-core.test.ts, transcoders/hwaccel.test.ts, transcoders/ffmpeg-utils.test.ts, transcoders/fftool-core.test.ts, transcoders/bmf-core.test.ts, transcoders/ffprobe-mapper.test.ts, transcoders/factory.test.ts, transcoders/interface.test.ts, transcoders/integration-audio.test.ts Os três núcleos, construção das flags de aceleração por hardware, mapeamento ffprobe, dispatch da fábrica, contrato da interface transcoder
Main player / queue / timeline player/frame-decoder.test.ts, queue/queue-transfer.test.ts, timeline/timeline-media.test.ts Decodificação de frames rawvideo, pipe de áudio, buffering, transferência da fila, extração de forma de onda, geração da montagem de miniaturas
Preload preload/index.test.ts Superfície completa da ponte electronAPI, cada método IPC
Componentes renderer VideoTimeline.test.tsx, MediaPlayer.test.tsx, CodecSelect.test.tsx, StreamDetails.test.tsx, ErrorBanner.test.tsx, AppDrawer.test.tsx, FileSummary.test.tsx, QueueJobCard.test.tsx, FileDropZone.test.tsx, BatchControls.test.tsx, ErrorSnackbar.test.tsx, ExifSection.test.tsx, FilePathField.test.tsx, TimeField.test.tsx, TitleBar.test.tsx, ConfirmDialog.test.tsx, ErrorBoundary.test.tsx, GroupedSelect.test.tsx, ProgressBar.test.tsx, ToastContainer.test.tsx, LanguageMenu.test.tsx, PageContainer.test.tsx, EllipsisTooltip.test.tsx, Footer.test.tsx, CloseConfirmDialog.test.tsx, BatchEncodingPanel.test.tsx, FormField.test.tsx, NavJobPopover.test.tsx, MediaPreview.test.tsx, ShortcutsHelpDialog.test.tsx, QueueDropArea.test.tsx, QueueAddReviewDialog.test.tsx, QueueJobOptionsDialog.test.tsx Renderização, interações, estados de erro, acessibilidade para todos os componentes de UI compartilhados
Hooks do renderer useConversion.test.tsx, useErrorHandler.test.ts, useFormErrors.test.ts, useMediaTask.test.ts, useLanguageDirection.test.tsx, useHotkeys.test.tsx Orquestração de conversão, tratamento de erros, validação de formulários, ciclo de vida de tarefas de mídia, direção RTL, atalhos de teclado
Páginas do renderer VideoCut.test.tsx, Convert.test.tsx, ImageCompress.test.tsx, AudioExtract.test.tsx, Settings.test.tsx, BatchQueue.test.tsx, Logs.test.tsx, MediaInfo.test.tsx, Dashboard.test.tsx, About.test.tsx Fluxos completos de página: estado dos formulários, validação, invocações IPC, persistência de configurações, about/update
Stores do renderer conversionStore.test.ts, audioExtractStore.test.ts, settingsStore.test.ts, errorStore.test.ts, queueStore.test.ts, toastStore.test.ts, logStore.test.ts, videoCutStore.test.ts, taskStore.test.ts, batchConfig.test.ts, dismissedAlertsStore.test.ts Transições de estado e persistência dos stores Zustand
Utilitários renderer formatters.test.ts, preview-cache.test.ts, lunar-calendar.test.ts, easter-egg-dates.test.ts, batch-options.test.ts, queue-reorder.test.ts Helpers de formatação, cache de previews, datas dos easter eggs, opções de lote, lógica de reordenação da fila
App renderer / misc App.test.tsx, colors.test.ts, sessionCleanup.test.ts, constants/shortcuts.test.ts Roteamento do shell do app, paleta de cores, limpeza de sessão, atalhos de teclado
Integração error-flow.test.ts Pipeline completo: Error → formatError → store → exibição → limpeza

Configuração de testes

O ambiente de testes (src/test-setup.ts) fornece:

  • Mock do useTranslation do react-i18next com mapeamento de chaves para o inglês e interpolação
  • Mock do electronAPI em globalThis cobrindo todos os métodos IPC
  • Registro dos matchers @testing-library/jest-dom/vitest

Testes E2E

Os testes end-to-end baseados em Playwright vivem em e2e/ (ambiente node, timeouts de 60 s) e são condicionados à variável de ambiente E2E ou a CI:

Arquivo O que cobre
e2e/cli.spec.ts Modo CLI: --help/-h, subcomandos (convert, info, capabilities, compress, extract-audio, batch), sintaxe plana legada, flags globais (--quiet, --no-color, --theme)
e2e/specs/shell.spec.ts Shell do app: título da janela, presença do electronAPI, todas as rotas de navegação, navegação do drawer, controles de janela, menu de idiomas
e2e/specs/convert.spec.ts Página Convert: seleção de arquivos, autocompletar saída, opções de codec/bitrate/escala/pixel/transcoder, cópia sem perdas, conversão com progresso, pause/resume, cancelar
e2e/specs/batch.spec.ts Fila de lotes: estado vazio, adicionar arquivos via diálogo de revisão, eventos da fila, progresso ao vivo, cancelar tudo, filtro de status, remover job, reordenar arrastando, confirmação de fechamento da janela
e2e/specs/audio-extract.spec.ts Extração de áudio: botão desabilitado, seleção de vídeo com streams de áudio, mudanças de codec/bitrate, extração com toast de sucesso
e2e/specs/image-compress.spec.ts Compressão de imagens: dropzone, seleção de imagem com preview, mudanças de formato/qualidade/escala, compressão com toast de sucesso
e2e/specs/media-info.spec.ts Media info: análise de vídeo (streams, detalhes de codecs), análise de imagem (dados EXIF)
e2e/specs/settings.spec.ts Configurações: cartões de tema, troca de tema, sempre visível, iniciar com o sistema, persistência do modo hwaccel
e2e/specs/logs.spec.ts Logs: emissão de entradas, filtragem por nível, limpar tudo, download com toast
e2e/specs/video-cut.spec.ts Corte de vídeo: botão desabilitado, timeline + forma de onda + miniaturas, alternância duração/hora final, arrasto da cabeça de reprodução, corte com progresso, cancelar, limpeza do formulário
e2e/specs/real-convert.spec.ts Tier B (real): conversão FFmpeg real sem mocks (condicionado a E2E_REAL=1)