velxio/test/test_custom_chips
David Montero Crespo 71616e580d Add end-to-end tests for ESP32 I2C functionality and circuit verification
- Implemented `i2c-esp32-real-firmware.test.ts` to test ESP32 I2C communication via backend and WebSocket.
- Created `load-example-transitions.test.ts` to ensure proper loading of examples between board-less and board-based contexts.
- Added `CircuitVerificationModal.tsx` to display circuit verification results before running simulations.
- Developed `circuitVerifier.ts` to perform pre-flight checks for circuit safety, identifying potential issues like short circuits and component overloads.
- Introduced minimal ESP32 I2C master sketch `esp32_i2c_writer.ino` for testing I2C transactions.
2026-05-12 16:55:15 -03:00
..
fixtures Add ESP32 chip demos and comprehensive tests for I2C, SPI, and UART interactions 2026-04-28 19:24:39 -03:00
scripts Add ESP32 chip demos and comprehensive tests for I2C, SPI, and UART interactions 2026-04-28 19:24:39 -03:00
sdk Add ESP32 chip demos and comprehensive tests for I2C, SPI, and UART interactions 2026-04-28 19:24:39 -03:00
sketches Add end-to-end tests for ESP32 I2C functionality and circuit verification 2026-05-12 16:55:15 -03:00
src Add ESP32 chip demos and comprehensive tests for I2C, SPI, and UART interactions 2026-04-28 19:24:39 -03:00
test Add ESP32 chip demos and comprehensive tests for I2C, SPI, and UART interactions 2026-04-28 19:24:39 -03:00
.gitignore Add ESP32 chip demos and comprehensive tests for I2C, SPI, and UART interactions 2026-04-28 19:24:39 -03:00
README.md Add ESP32 chip demos and comprehensive tests for I2C, SPI, and UART interactions 2026-04-28 19:24:39 -03:00
package-lock.json Add ESP32 chip demos and comprehensive tests for I2C, SPI, and UART interactions 2026-04-28 19:24:39 -03:00
package.json Add ESP32 chip demos and comprehensive tests for I2C, SPI, and UART interactions 2026-04-28 19:24:39 -03:00
vitest.config.js Add ESP32 chip demos and comprehensive tests for I2C, SPI, and UART interactions 2026-04-28 19:24:39 -03:00

README.md

test_custom_chips

Sandbox aislado para validar el sistema de custom chips de Velxio antes de integrarlo al frontend. Cero dependencia de Wokwi.

Objetivos

  1. Probar que se puede cargar un .wasm (chip compilado a partir de C) y enrutarlo al simulador.
  2. Probar que un sketch de Arduino real (.hex compilado con arduino-cli) puede comunicarse con el chip vía GPIO e I2C.
  3. Mantener fidelidad 1:1 con la infraestructura de Velxio (PinManager, I2CBusManager, AVRSimulator) para que el código que se valide acá sea trivial de portar.

Estructura

test_custom_chips/
├── package.json
├── README.md
├── vitest.config.js
├── sdk/
│   ├── include/
│   │   └── velxio-chip.h            ← API que ven los chips
│   └── examples/
│       ├── inverter.c
│       ├── inverter.chip.json
│       ├── eeprom-24c01.c
│       └── eeprom-24c01.chip.json
├── scripts/
│   ├── compile-chip.sh              ← clang invocation Linux/macOS
│   ├── compile-chip.ps1             ← clang invocation Windows
│   ├── compile-all.sh               ← compila todos los ejemplos
│   └── setup-wasi-sdk.md            ← cómo instalar wasi-sdk
├── src/                             ← runtime y mirrors de Velxio
│   ├── ChipRuntime.js               ← loader WASM + host imports
│   ├── WasiShim.js                  ← WASI mínimo (fd_write, proc_exit)
│   ├── PinManager.js                ← espejo de Velxio
│   ├── I2CBus.js                    ← espejo del I2CBusManager
│   ├── AVRHarness.js                ← avr8js wrapper Velxio-fiel
│   ├── intelHex.js                  ← parser
│   └── index.js
├── fixtures/                        ← .wasm compilados + .hex sketches
└── test/
    ├── js/                          ← tests que NO requieren clang
    │   ├── 01_pin_manager.test.js
    │   ├── 02_i2c_bus.test.js
    │   ├── 03_avr_harness.test.js
    │   └── 04_runtime_imports.test.js
    └── e2e/                         ← tests que requieren .wasm compilado
        ├── 05_chip_inverter.test.js
        └── 06_chip_eeprom_24c01.test.js

Quickstart

# 1. Instalar deps
cd test/test_custom_chips
npm install

# 2. (Solo para tests E2E) instalar wasi-sdk siguiendo scripts/setup-wasi-sdk.md

# 3. (Solo para tests E2E) compilar los ejemplos
npm run compile:examples

# 4. Correr tests
npm test            # todo
npm run test:js     # solo tests JS-only (no requieren wasi-sdk)
npm run test:e2e    # solo E2E con WASM

Los tests e2e/ se hacen it.skip automáticamente si el .wasm correspondiente no está en fixtures/. Eso permite correr la suite parcialmente sin tener wasi-sdk instalado.

Por qué un sandbox separado

Igual que test_circuit/ validó el solver SPICE antes de integrarlo, este sandbox valida el runtime de chips antes de tocar el frontend de Velxio. Cuando los tests pasen end-to-end, los archivos de src/ se portan al frontend (con tipado TS) e integran con el editor.

Estado actual

Ver ../autosearch/04_findings.md para el log corrido de qué funciona y qué falta.