# 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:e2eOs relatórios de cobertura são gerados em coverage/:
coverage/index.html— HTML navegávelcoverage/lcov.info— LCOV para integração com IDEs
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 |
O ambiente de testes (src/test-setup.ts) fornece:
- Mock do
useTranslationdoreact-i18nextcom mapeamento de chaves para o inglês e interpolação - Mock do
electronAPIemglobalThiscobrindo todos os métodos IPC - Registro dos matchers
@testing-library/jest-dom/vitest
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) |