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(semDC 0) produz dados comNote: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 pordispose().
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=garbagerejeitado,BF=100 IS=1e-15 VAF=-50aceito. - Transformador:
Lpnegativo/zero rejeitado,k=0.5junkrejeitado (consumo integral),k=-0.9aceito. - 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.trane 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