ci/docker_utils/avr8js/README.md
This directory contains a Docker-based AVR8JS emulator setup for testing Arduino firmware in CI/CD pipelines.
ATtiny85 cannot be tested with AVR8JS due to a fundamental hardware limitation:
ANALOG_COMP_vect interrupt)See FINDINGS.md in the project root for complete root cause analysis.
Test.ino (Arduino sketch)
↓ Compile with PlatformIO
firmware.hex
↓ Docker volume mount
AVR8JS Emulator (Node.js/TypeScript)
↓ Capture serial output
Test validation
Dockerfile.avr8js - Docker image definitionmain.ts - CLI entry point and test validationexecute.ts - AVR8JS runner with USART captureavr8js_docker.py - Python wrapper for CI integrationpackage.json - Node.js dependenciesfrom ci.docker_utils.avr8js_docker import DockerAVR8jsRunner
runner = DockerAVR8jsRunner()
exit_code = runner.run(
elf_path=Path("firmware.elf"),
mcu="atmega328p",
frequency=16000000,
timeout=30
)
uv run python ci/docker_utils/avr8js_docker.py firmware.elf 30
docker run --rm -v /path/to/firmware:/firmware:ro \
niteris/fastled-avr8js:latest /firmware/firmware.hex 30
To add a new platform, ensure:
avr8js_docker_template.yml with MCU mappingFINDINGS.md