velxio/test/backend/e2e/README.md

61 lines
2.1 KiB
Markdown

# 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:
1. Downloads `libqemu-xtensa-amd64.so` and `libqemu-riscv32-amd64.so` from the
[qemu-prebuilt](https://github.com/davidmonterocrespo24/velxio/releases/tag/qemu-prebuilt) release.
2. Downloads ROM files: `esp32-v3-rom.bin`, `esp32-v3-rom-app.bin`, `esp32c3-rom.bin`.
3. Installs arduino-cli + `esp32:esp32` core.
4. Starts `uvicorn app.main:app --port 8001` with `QEMU_ESP32_LIB` and `QEMU_RISCV32_LIB` set.
5. Runs all three JS tests.
## Local prerequisites
1. Backend running with QEMU libs in PATH:
```bash
cd backend
QEMU_ESP32_LIB=/path/to/libqemu-xtensa.so \
QEMU_RISCV32_LIB=/path/to/libqemu-riscv32.so \
uvicorn app.main:app --reload --port 8001
```
On Windows the `.dll` files live in `backend/app/services/`.
2. Node.js 18+ installed.
## Run all e2e tests
Use the convenience script from the repo root:
```bash
# 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 |