Testing And Releases
This page covers the validation ladder for the repository: fast hosted-safe checks, hardware-backed benchmarks, feature-status tracking, and release publication.
Local tests
Run the fast hosted-safe suites from the repository root:
npm run test:unit
npm run test:integration
npm run test:e2e:offline
Run the live hardware-backed suite locally when you have reachable devices on the LAN:
npm run test:e2e:local
Recommended order:
npm run test:unitnpm run test:integrationnpm run test:e2e:offline- target-specific firmware build
- hardware-backed benchmark or live e2e when the change affects runtime behavior
Firmware validation
PlatformIO builds are the primary firmware validation path:
platformio run --environment esp32-s3-devkitm-1
Repeat with other environments when changing board-specific behavior.
Rust parity validation is tracked separately through host-side Rust tests, host benchmarks, and device A/B benchmarks. The current validated behavior status lives in Parity Matrix.
Benchmark and comparison workflows
Generate the current C++ vs Rust device benchmark report:
& '.\scripts\collect-ab-benchmarks.ps1'
Generate the current firmware size report:
npm run report:firmware-sizes
Read the latest summary in Benchmarks And Comparison.
For the release-operator view, see Release Guide.
GitHub automation
The repository includes hosted automation for:
- Firmware builds across supported PlatformIO environments.
- DocFX documentation build validation on pushes and pull requests.
- Rendered docs preview artifacts for pull-request review.
- Python unit and integration tests for the embed pipeline.
- Offline Playwright dashboard integration coverage.
- Semantic-release dry-run validation in CI so release note generation is exercised before merge.
- Semantic-release driven versioning and GitHub release publication.
Hardware-backed live e2e remains separate because GitHub-hosted runners cannot reach local devices.
Release behavior
Conventional commits drive semantic versioning:
feat:creates a minor release.fix:andperf:create a patch release.BREAKING CHANGE:or!creates a major release.
Published release assets include one binary per supported board target and a matching .sha256 checksum. Asset names are board-specific rather than raw PlatformIO environment IDs so users can distinguish the validated lonely-esp32-s3-devkitm-1 release binary from other ESP32-S3 boards.
| PlatformIO environment | Published release target |
|---|---|
esp32-s3-devkitm-1 |
lonely-esp32-s3-devkitm-1 |
esp32dev-uart1 |
esp32-generic-uart1 |
heltec-wifi-lora-32-v3 |
heltec-wifi-lora-32-v3 |
heltec-wifi-lora-32-v4 |
heltec-wifi-lora-32-v4-compatible |
Release checklist:
- Hosted-safe tests are green.
- Primary firmware target builds cleanly.
- Docs build cleanly.
- Release asset naming matches the intended board target.
- If runtime behavior changed, parity matrix and benchmark docs are refreshed.
Build this docs site locally
Install DocFX and build the site from the repository root:
dotnet tool update --global docfx
docfx docs/docfx.json
The generated site is written to docs/_site.