Simtronics — Testes e Limitações

Cobertura de testes automatizados, evidências de qualidade e limites honestos do Simtronics na versão atual.

Testes e Limitações

Transparência sobre o que os testes cobrem — e o que ainda não cobrem.

Cobertura de testes automatizados

Suíte de simulação (13 testes)

node tooling/test-simulation.mjs

  • 3 circuitos do plano rodando no engine real em Node (divisor .op, RC lowpass .tran, RC Bode .ac).
  • DC sweep com escala como primeiro vetor.
  • Netlist inválida → SimFailure.
  • AC 1 (sem DC 0) produz dados com Note: no log — não é erro fatal.
  • Fixtures de parsing: tran (unidade s/V), op (escala sintética), ac (re/im, magnitude |X|), dc (primeiro vetor como escala).
  • Cliente de simulação: correlação por id, rejeição de chamada concorrente, cancelamento por dispose().

Suíte esquemática (42 testes)

node tooling/test-schematic.mjs

  • 3 circuitos §4.4 desenhados como Schematic → netlist gerada → executada no engine real.
  • T-junction (pino no meio do segmento conecta).
  • Cruzamento interior×interior sem vértice (não conecta).
  • Polaridade de fontes (n+/n-).
  • 6 circuitos v1.2 (NPN, PNP, NMOS, PMOS, transformador padrão e customizado).
  • Colisão de namespace: T1 + LT1P, case-insensitive (Rfoo/RFOO).
  • Parser de escalar SPICE: BF= rejeitado, BF=garbage rejeitado, BF=100 IS=1e-15 VAF=-50 aceito.
  • Transformador: Lp negativo/zero rejeitado, k=0.5junk rejeitado (consumo integral), k=-0.9 aceito.
  • Wire: coordenada fracionária, diagonal, comprimento zero — todos com subjectId.
  • Wire órfão (sem pinos) → ORPHAN_WIRE + subjectId.
  • Multiline injection rejeitada.
  • Estabilidade: mesmo Schematic → netlist idêntica.

Gate no Chromium (33 verificações)

  • Circuito inicial, 11 itens da paleta e netlist gerada.
  • Carregamento tardio do worker/engine apenas após Simular.
  • Quatro modos de visualização e preferências de grade persistidas.
  • Propriedades (ID, valor com espaços e rotação), zoom, pan, tela cheia e normalização de fio diagonal em trechos ortogonais.
  • Três presets reais: divisor .op, RC .tran e Bode .ac.
  • Erro controlado para netlist inválida, sem travar a interface.
  • Desktop 1440×900 e mobile 375×812 sem overflow horizontal da página.

O que ainda não tem cobertura automatizada contínua

  • Regressão visual pixel a pixel do SVG e dos gráficos.
  • Gestos multitoque em dispositivos móveis físicos.
  • Performance com circuitos grandes (>50 componentes).
  • O deploy em infraestrutura pública, que permanece fora do escopo desta rodada. O build local e o fluxo no Chrome fazem parte do gate final.

Limitações honestas (v0)

Desktop-first

O editor foi projetado para desktop. Mobile pode ser utilizável mas sem paridade total de touch (sem pinch-zoom, sem gestos multitoque). Melhorias de touch estão planejadas para fases posteriores.

Fluxo unidirecional

Na v0, alterar o esquema regenera a netlist, mas editar o código manualmente não atualiza o desenho. Back-annotation (código → esquema) é uma feature futura.

Sem undo/redo

Desfazer/refazer ações no canvas não está implementado. É uma limitação conhecida, com alta prioridade para a próxima iteração.

Fios não re-roteiam

Uma vez desenhado, o traçado do fio é fixo. Não há algoritmo de re-roteamento automático (evitar obstáculos, minimizar curvas).

Subconjunto SPICE

O engine suporta ngspice completo, mas o editor esquemático cobre um subconjunto:

  • Análises: .op, .tran, .ac, .dc.
  • Componentes: R, C, L, V, I, ground, NPN, PNP, NMOS, PMOS, transformador.
  • Fontes: DC, PULSE, AC.
  • Modelos: NPN/PNP padrão, NMOS/PMOS level=1, parâmetros customizados.

Fora do escopo atual: fontes comportamentais (B), linhas de transmissão (T), subcircuitos (.subckt), análise de ruído (.noise), Fourier (.four).

Sem persistência

Circuitos não são salvos entre sessões. Recarregar a página perde o trabalho. Persistência local (localStorage/IndexedDB) está nos planos de curto prazo.

Node.js para testes apenas

O engine roda em Node para testes automatizados, mas o caminho de produção é exclusivamente browser (Web Worker + WASM).


Anterior: 03 — Editor esquemático · Índice: 00 — Introdução · Próximo: 05 — Melhorias próximas