velxio/frontend/src
David Montero Crespo c939005bf7 test(esp32): integration tests for QEMU examples
Closes the loop on the four ESP32 fixes that landed earlier in this
series. Each previously-broken or noisy example now has a regression
test that compiles the sketch through the production ESP-IDF compiler
and runs it in QEMU via esp32_worker.py — the same code path the
WebSocket /ws/{client_id} endpoint drives in production. Testing the
worker directly skips the WS transport but exercises the same compile
→ flash → boot → serial cascade.

Coverage:
- TestEsp32SerialCleanliness — DHT22, Servo+Pot, Joystick, Dual ADC
  Asserts the user's Serial.print substring shows up AND no
  `I (xxx) gpio:|wifi:|phy:` info-level ESP-IDF logs leak through.
  This validates the sdkconfig CONFIG_LOG_DEFAULT_LEVEL_WARN change
  from commit b373c97.

- TestEsp32CompileSuccess — BLE Advertise, LEDC RGB
  BLE Advertise validates the sdkconfig switch to Bluedroid (was
  NimBLE-only, which broke arduino-esp32's BLEDevice.h).
  LEDC RGB validates velxio_compat.h's ledcAttach() shim from
  commit f6f6f43; the sketch uses the arduino-esp32 3.x one-shot API
  on a 2.0.17 toolchain.

- TestEsp32WiFiSketches — WiFi Connect, WiFi WebServer
  Regression coverage to make sure the sdkconfig changes didn't break
  WiFi association. Connect must reach an "IP Address:" line; Server
  must report "Server started".

- frontend/src/__tests__/component-metadata-bmp280.test.ts
  Sanity check that the BMP280 entry from commit 1f3f2e0 survives
  metadata regeneration.

All ESP-IDF/QEMU tests use unittest.skipUnless on
_toolchain_available() so they no-op cleanly on dev boxes without
libqemu-xtensa, and only do real work in the Docker CI image.

Sketches are inlined verbatim from the public Velxio examples.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 18:39:22 -03:00
..
__pro_stub__ feat: add optional extension hooks for private overlays 2026-05-04 14:03:20 -03:00
__tests__ test(esp32): integration tests for QEMU examples 2026-05-08 18:39:22 -03:00
assets
components fix(serial-monitor): strip ANSI escape sequences from board output 2026-05-08 16:32:59 -03:00
data fix(docs): RISC-V emulation goes through QEMU, not a TypeScript browser core 2026-05-07 21:56:29 +02:00
hooks
pages feat(canvas): keyboard shortcuts + toolbar undo/redo buttons 2026-05-08 12:11:53 -03:00
services feat(components): add mergeComponents API to ComponentRegistry 2026-05-05 10:34:43 -03:00
simulation fix(frontend): polyfill crypto.randomUUID for non-secure contexts 2026-05-05 13:41:30 -03:00
store feat(canvas): undo/redo command pattern + history slice 2026-05-08 12:03:17 -03:00
tokens feat(design): tokens, webfonts, Lucide icons, board PNG/WebP picture strip 2026-05-07 20:45:44 +02:00
types feat(components): pro_only flag + registry merge API + picker gate hook 2026-05-05 10:33:53 -03:00
utils feat: add touch-friendly components for improved mobile usability 2026-05-08 11:12:26 -03:00
velxio-elements
App.css feat(editor): view-mode toggle, agent-chat slot, toolbar polish 2026-05-08 00:56:51 -03:00
App.tsx feat(frontend): /pricing route placeholder + UserResponse subscription fields 2026-05-05 10:24:01 -03:00
entry-server.tsx
index.css feat(design): tokens, webfonts, Lucide icons, board PNG/WebP picture strip 2026-05-07 20:45:44 +02:00
main.tsx feat: add optional extension hooks for private overlays 2026-05-04 14:03:20 -03:00
seoRoutes.ts fix(docs): RISC-V emulation goes through QEMU, not a TypeScript browser core 2026-05-07 21:56:29 +02:00
vite-env.d.ts