2.1 KiB
2.1 KiB
Backend E2E Tests (JavaScript / Node.js)
These tests compile real firmware via the backend API and run the full simulation through a WebSocket, verifying sensor readings in the serial output.
CI status
These tests run in GitHub Actions via .github/workflows/backend-e2e-tests.yml.
The CI workflow:
- Downloads
libqemu-xtensa-amd64.soandlibqemu-riscv32-amd64.sofrom the qemu-prebuilt release. - Downloads ROM files:
esp32-v3-rom.bin,esp32-v3-rom-app.bin,esp32c3-rom.bin. - Installs arduino-cli +
esp32:esp32core. - Starts
uvicorn app.main:app --port 8001withQEMU_ESP32_LIBandQEMU_RISCV32_LIBset. - Runs all three JS tests.
Local prerequisites
-
Backend running with QEMU libs in PATH:
cd backend QEMU_ESP32_LIB=/path/to/libqemu-xtensa.so \ QEMU_RISCV32_LIB=/path/to/libqemu-riscv32.so \ uvicorn app.main:app --reload --port 8001On Windows the
.dllfiles live inbackend/app/services/. -
Node.js 18+ installed.
Run all e2e tests
Use the convenience script from the repo root:
# Windows
scripts\run-e2e-tests.bat
# Or individually (from repo root):
node test/backend/e2e/test_dht22_simulation.mjs --timeout=60
node test/backend/e2e/test_hcsr04_simulation.mjs --timeout=75
node test/backend/e2e/test_mpu6050_simulation.mjs --timeout=60
Tests
| File | Sensor | What it verifies | Typical runtime |
|---|---|---|---|
test_dht22_simulation.mjs |
DHT22 (GPIO4) | Temperature & humidity readings, sensor_update changes values |
~50 s |
test_hcsr04_simulation.mjs |
HC-SR04 (GPIO18/19) | Distance at 10/40/100/200 cm, sensor_update changes distance |
~60 s |
test_mpu6050_simulation.mjs |
MPU-6050 (I2C) | Accelerometer/gyroscope I2C readings | ~40 s |
Pass criteria
| Test | Passes when |
|---|---|
| DHT22 | First reading received + values change after sensor_update |
| HC-SR04 | ≥3 correct readings, ≥2 distances, miss rate ≤30% |
| MPU-6050 | I2C communication established, sensor data in serial output |