velxio/frontend/src/__tests__
David Montero e68746ed57 test(cyw43): validate WiFi on the production RP2040Simulator path
Headless test that drives the REAL RP2040Simulator (attachCyw43 +
installCyw43PioHooks + lockstep PIO stepping in runFrameForTime), boots
the Pico W firmware, injects a WiFi-connect snippet over the raw REPL, and
asserts isconnected(). Result:

  PYBOOT
  ACTIVE False            (this fw's active() getter reports link status)
  CONN_OK 192.168.4.2     (DHCP-leased IP, isconnected() == True)
  MAINPY_DONE

Reaches link-up in ~31s wall — the production lockstep PIO stepping is
faster than the harness's setTimeout-cranked PIO.

Also fixes a real production bug: the RP2040 logger was
ConsoleLogger(LogLevel.Error) which THROWS on rp2040js unaligned-read
warnings — lwIP reads the IPv4 header at ethernet offset 14 on every
received packet, so WiFi would have crashed on the first DHCP reply.
Now constructed with throwOnError=false.

Gated behind CYW43_PROD_HARNESS=1 (boots real firmware, ~30s).
2026-06-13 00:43:48 +02:00
..
__snapshots__ feat(examples): mixed digital+analog coexistence demo (MCU + AND gate + transistor) 2026-06-05 23:09:41 -03:00
fixtures feat(microsd): SD-over-SPI card storage for AVR, RP2040 and ESP32 2026-06-11 03:59:53 +02:00
helpers fix(stop): preserve display state on Stop, only blank on Reset 2026-05-26 18:54:17 +02:00
AVRSimulator.test.ts fix(sim): keep PwmCallback 2-arg compatible via arity dispatch 2026-06-11 03:29:44 -03:00
PinManager.test.ts fix(sim): keep PwmCallback 2-arg compatible via arity dispatch 2026-06-11 03:29:44 -03:00
RP2040Simulator.test.ts
SignalRouter.test.ts fix(esp32): LEDC signal IDs are 71-86 per ESP32 TRM, not 72-87 2026-05-17 05:42:52 +02:00
ammeter-waveform.test.ts feat(sim): Phase 1c G+F3 — retire legacy CircuitScheduler / eecircuit-engine 2026-05-15 21:46:34 +02:00
arduino-arduino-spi.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
arduino-esp32-uart.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
arduino-pico-digital.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
arduino-pico-i2c.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
arduino-pico-mixed-uart.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
attiny85-simulation.test.ts fix(sim): keep PwmCallback 2-arg compatible via arity dispatch 2026-06-11 03:29:44 -03:00
avr-uart-tx-waveform.test.ts feat(avr/uart): synthesize bit-level TX waveform on PD1/PE1 2026-05-22 19:49:43 +02:00
board-kinds-coverage.test.ts test(board-coverage): accept the 6 new STM32 variant boards as uncovered 2026-05-31 08:37:58 +02:00
board-protocols-audit.test.ts fix(interconnect): classify Arduino Mega UART/I2C function-label pins 2026-06-12 08:29:03 +02:00
board-removal-running-reconcile.test.ts refactor(sim): single-board example load rebuilds from scratch 2026-05-31 23:23:41 +02:00
buzzer-metronome.test.ts fix(sim): monophonic buzzer guard — replace note on pitch change (no stacking) 2026-06-11 02:35:33 -03:00
capacitor-charge-transient.test.ts feat(sim): Phase 1d #3 + #5 — WASM pre-boot on mount + delete dead wire* utils 2026-05-15 22:24:31 +02:00
chipbus-buskernel.test.ts feat(chipbus): Phase 2 - synchronous settle kernel (settle-before-read) 2026-06-05 02:36:54 -03:00
chipbus-buslogic.test.ts feat(chipbus): Phase 1 - 4-valued logic + drive-strength tri-state buses 2026-06-05 02:18:47 -03:00
chipbus-busnets.test.ts feat(chipbus): Phase 1 - 4-valued logic + drive-strength tri-state buses 2026-06-05 02:18:47 -03:00
chipbus-galaksija-boot.test.ts test(chipbus): a real Galaksija (1983 Z80 home computer) boots over the bus 2026-06-05 11:55:28 -03:00
chipbus-galaksija-computer.test.ts feat(chipbus): Galaksija home computer gallery example + browser perf throttle 2026-06-05 13:49:33 -03:00
chipbus-galaksija-display-snoop-race.test.ts fix(chipbus): Galaksija boots + displays + types live in the browser 2026-06-05 15:47:30 -03:00
chipbus-galaksija-display.test.ts feat(chipbus): Galaksija home computer gallery example + browser perf throttle 2026-06-05 13:49:33 -03:00
chipbus-galaksija-keyboard.test.ts feat(chipbus): Galaksija keyboard - type BASIC over the bus 2026-06-05 14:37:42 -03:00
chipbus-galaksija-ram-display.test.ts fix(chipbus): Galaksija boots + displays + types live in the browser 2026-06-05 15:47:30 -03:00
chipbus-galaksija-reset-race.test.ts fix(chipbus): Galaksija boots + displays + types live in the browser 2026-06-05 15:47:30 -03:00
chipbus-netkey.test.ts feat(chipbus): Phase 0 - net-identity shared key for chip-to-chip buses 2026-06-05 01:18:08 -03:00
chipbus-twochip-integration.test.ts feat(chipbus): Phase 1 - 4-valued logic + drive-strength tri-state buses 2026-06-05 02:18:47 -03:00
chipbus-z80-ram-decode.test.ts test(chipbus): Phase 3 core - Z80 + ROM + RAM + address decode over the bus 2026-06-05 10:23:57 -03:00
chipbus-z80-rom-boot.test.ts test(chipbus): live proof - a real Z80 boots from a ROM over the bus 2026-06-05 10:07:26 -03:00
circuit-simulation-service.test.ts fix(circuit-sim): stop() guard + drop edges with no V-source post-rebuild 2026-05-20 03:49:29 +02:00
circuit-verifier.test.ts
component-metadata-bmp280.test.ts
component-to-spice.test.ts test(spice): exclude custom-chip from the static-fixture catalog check 2026-06-11 04:19:35 +02:00
components-metadata-integrity.test.ts test(sim): Phase 1d-tests J + C — vitest.config.ts + components-metadata integrity 2026-05-15 22:58:12 +02:00
cyw43-virtualnet.test.ts feat(cyw43): virtual DHCP/ARP net — WiFi reaches LINK_UP (isconnected) 2026-06-12 23:43:14 +02:00
digitalgate-engine-examples.test.ts feat(digital-gate-engine): 4-bit ripple counter gallery example + sequential controller fix 2026-06-05 21:58:42 -03:00
digitalgate-kernel.test.ts feat(digital-gate-engine): evaluate logic gates on the event-driven kernel 2026-06-05 20:21:33 -03:00
digitalgate-mixed-boundary.test.ts feat(digital-gate-engine): Phase 3 core - digital/analog boundary handoff 2026-06-05 21:01:05 -03:00
digitalgate-sequential.test.ts feat(digital-gate-engine): Phase 5 - sequential logic (D/T/JK flip-flops) 2026-06-05 21:16:43 -03:00
digitalgate-sweep.test.ts feat(digital-gate-engine): sweep all 38 examples + default the flag on 2026-06-05 20:29:32 -03:00
dual-arduino-digital.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
dual-arduino-hw-uart.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
dual-arduino-multi-protocol.test.ts
dual-arduino-software-serial.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
dual-esp32-uart.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
dual-pico-digital.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
dual-pico-multi-protocol.test.ts
dual-pico-serial-passthrough.test.ts
epaper-part-integration.test.ts
esp32-dht22-flow.test.ts test(esp32): add hardResetPinStates to PinManager mocks in 6 test files 2026-05-28 19:31:43 +02:00
esp32-integration.test.ts test(esp32): add hardResetPinStates to PinManager mocks in 6 test files 2026-05-28 19:31:43 +02:00
esp32-multi-servo-gpio-matrix.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
esp32-rectifier-integration.test.ts
esp32-servo-pot.test.ts test(esp32): add hardResetPinStates to PinManager mocks in 6 test files 2026-05-28 19:31:43 +02:00
esp32-uart-classify.test.ts fix(interconnect): classify ESP32 UART pin names so multi-board Serial works 2026-06-12 07:21:47 +02:00
esp32-wifi-bluetooth.test.ts test(esp32): add hardResetPinStates to PinManager mocks in 6 test files 2026-05-28 19:31:43 +02:00
esp32-wifi-compile.test.ts
esp32-wifi-webserver-integration.test.ts test(esp32): add hardResetPinStates to PinManager mocks in 6 test files 2026-05-28 19:31:43 +02:00
esp32c3-blink.test.ts fix(tests): update mocks + assertions for PinManager API changes 2026-05-19 04:52:30 +02:00
esp32c3-simulation.test.ts fix(tests): update mocks + assertions for PinManager API changes 2026-05-19 04:52:30 +02:00
esp32c3-wifi-bluetooth.test.ts test(esp32): add hardResetPinStates to PinManager mocks in 6 test files 2026-05-28 19:31:43 +02:00
examples-all-buckets-smoke.test.ts test(sim): Phase 1d-tests B — smoke test 100-days + epaper + picow-wifi + circuits 2026-05-15 23:05:33 +02:00
examples-analog-live.test.ts feat(sim): Phase 1d #2 + #9 — convergence helpers in Worker + enable LM358 subckt 2026-05-15 22:17:06 +02:00
examples-analog.test.ts feat(sim): Phase 1d #2 + #9 — convergence helpers in Worker + enable LM358 subckt 2026-05-15 22:17:06 +02:00
examples-circuits.test.ts
examples-digital.test.ts feat(digital-gate-engine): 4-bit ripple counter gallery example + sequential controller fix 2026-06-05 21:58:42 -03:00
examples-gallery-smoke.test.ts feat(sim): Phase 1d #1 — gallery smoke test imports real examples + shared helper 2026-05-15 22:11:28 +02:00
examples-netlist-snapshot.test.ts test(sim): Phase 1d-tests A — netlist snapshots for every gallery example 2026-05-15 23:00:14 +02:00
examples-pico-doom.test.ts
fat-image.test.ts feat(microsd): SD-over-SPI card storage for AVR, RP2040 and ESP32 2026-06-11 03:59:53 +02:00
firmware-loader.test.ts
flip-flop-parts.test.ts
i2c-complex-scenarios.test.ts
i2c-esp32-multiboard-bridge.test.ts
i2c-esp32-real-firmware.test.ts
i2c-interconnect-bridge.test.ts
i2c-lcd-coupling-gap.test.ts
i2c-multi-board-slave-gap.test.ts
i2c-real-firmware.test.ts
install-libraries.test.ts
instruments.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
integration.test.ts
interactive-parts.test.ts
interconnect-routing.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
issue-122-micropython-esp32.test.ts
library-compile.integration.test.ts ci: Phase 1d-tests I + K + L — workflow hardening + nightly library-compile 2026-05-15 23:19:11 +02:00
load-example-transitions.test.ts feat(sim): Stop halts custom chips + LEDs go dark; retro chip examples go board-less 2026-06-04 04:32:44 +02:00
load-ngspice-for-node.test.ts feat(sim): Phase 1c F1 — NgSpiceNodeAdapter runs real WASM in Node tests 2026-05-15 20:49:39 +02:00
logic-families.test.ts
logic-gate-parts.test.ts
mega-emulation.test.ts fix(sim): keep PwmCallback 2-arg compatible via arity dispatch 2026-06-11 03:29:44 -03:00
microsd-real-firmware.test.ts feat(microsd): SD-over-SPI card storage for AVR, RP2040 and ESP32 2026-06-11 03:59:53 +02:00
mixed-mode-bjt-switch-integration.test.ts feat(sim): Phase 1c G+F3 — retire legacy CircuitScheduler / eecircuit-engine 2026-05-15 21:46:34 +02:00
mixed-mode-scheduler.test.ts feat(sim): Phase 1c A4+A5 — scheduler depends on SolverPort 2026-05-15 19:24:12 +02:00
motor-parts.test.ts
multi-board-integration.test.ts test(frontend): fix 2 test-mock bugs that blocked the deploy gate 2026-05-28 19:26:21 +02:00
netlist-builder.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
ngspice-interactive.test.ts
ngspice-node-adapter.test.ts feat(sim): Phase 1c F1 — NgSpiceNodeAdapter runs real WASM in Node tests 2026-05-15 20:49:39 +02:00
oscilloscope-trigger.test.ts feat(scope/trigger): add Auto / Normal / Single-shot trigger modes 2026-05-22 21:11:03 +02:00
part-simulators-coverage.test.ts test(sim): Phase 1d-tests E + F — part simulator coverage + solver determinism 2026-05-15 23:10:05 +02:00
phase-2-device-models.test.ts
phase-2-lm358-subckt.test.ts
phase-4-wire-resistance.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
pi-single-board-examples.test.ts feat(examples): add single-board Raspberry Pi 3/4/5 GPIO examples 2026-06-02 04:36:58 +02:00
pi3-pico-uart.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
piSlaveScanner.test.ts feat(pi): pluggable slave handler + canvas wire detection for I2C/SPI/UART 2026-05-18 16:26:37 +02:00
picow-cyw43-boot-harness.investigate.test.ts feat(cyw43): virtual DHCP/ARP net — WiFi reaches LINK_UP (isconnected) 2026-06-12 23:43:14 +02:00
picow-cyw43-integration.test.ts feat(cyw43): WiFi associates — join events drive link up (status NOIP) 2026-06-12 23:33:24 +02:00
picow-cyw43-prod-sim.investigate.test.ts test(cyw43): validate WiFi on the production RP2040Simulator path 2026-06-13 00:43:48 +02:00
pin-position-rotation.test.ts fix(canvas): wires off pins after rotation — wrapper offset was (4,6) instead of (6,6) 2026-05-26 15:16:04 +02:00
pin-resolver-phase1b.test.ts
pin-resolver.test.ts
protocol-parts.test.ts feat(microsd): SD-over-SPI card storage for AVR, RP2040 and ESP32 2026-06-11 03:59:53 +02:00
rp2040-pio-servo.test.ts
rp2040-realtime.test.ts fix(rp2040): keep delay()-based sketches real-time on slower hosts 2026-06-10 18:21:29 +02:00
sd-card-gate.test.ts feat(microsd): SD-over-SPI card storage for AVR, RP2040 and ESP32 2026-06-11 03:59:53 +02:00
sensor-parts.test.ts
serial-batching.test.ts
simulation-parts.test.ts fix(sim): mature the buzzer — per-note oscillators, sim-time scheduling, ramps + metronome tests 2026-06-09 09:22:57 -03:00
simulation.test.ts
solver-determinism.test.ts test(sim): Phase 1d-tests E + F — part simulator coverage + solver determinism 2026-05-15 23:10:05 +02:00
solver-perf-baseline.test.ts test(sim): Phase 1d-tests D + G — board-kind coverage matrix + perf baseline 2026-05-15 23:13:48 +02:00
solver-port-contract.test.ts feat(sim): Phase 1c A2+A3 — NgSpiceWorkerAdapter + FakeSolverAdapter 2026-05-15 19:21:46 +02:00
spice-ac.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
spice-active.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
spice-avr-mixed.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
spice-digital.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
spice-mosfet-diag.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
spice-mosfet-pwm.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
spice-npn-switch-diag.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
spice-npn-switch-integration.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
spice-passive.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
spice-rectifier-integration.test.ts feat(sim): Phase 1c G+F3 — retire legacy CircuitScheduler / eecircuit-engine 2026-05-15 21:46:34 +02:00
spice-rectifier-live-repro.test.ts feat(sim): Phase 1c G+F3 — retire legacy CircuitScheduler / eecircuit-engine 2026-05-15 21:46:34 +02:00
spice-relaxation-oscillator.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
spice-relay-integration.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
spice-signal-generator-tran.test.ts feat(sim): Phase 1c G+F3 — retire legacy CircuitScheduler / eecircuit-engine 2026-05-15 21:46:34 +02:00
spice-smoke.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
spice-transient.test.ts feat(sim): Phase 1c F2 — migrate 22 SPICE test files to NgSpiceNodeAdapter 2026-05-15 21:23:53 +02:00
ssd168x-decoder.test.ts fix(epaper): correct orientation across all boards + Pico VCC wire 2026-06-04 23:15:37 -03:00
ssd1306-render.test.ts
triple-pico-digital-chain.test.ts refactor(esp32): retire ledc_update + broadcastPwm + channelGpioMemo 2026-05-19 04:05:34 +02:00
uc8159c-decoder.test.ts
undo-redo.test.ts
virtual-i2c-devices.test.ts
voltmeter-waveform.test.ts feat(sim): Phase 1c G+F3 — retire legacy CircuitScheduler / eecircuit-engine 2026-05-15 21:46:34 +02:00
waveform-stats.test.ts