Add LavinMQ testing to CI workflow
This PR adds comprehensive LavinMQ testing to the CI workflow alongside the existing RabbitMQ tests, ensuring the AMQP client library works correctly with both broker implementations.
Changes Made
New CI Jobs Added
-
test-lavinmq: Runs the complete Node.js test suite (62 tests) against LavinMQ across all supported Node.js versions (18.x, 20.x, 22.x, 23.x, 24.x) -
test-browser-lavinmq: Runs browser-based tests against LavinMQ with WebSocket support enabled
Implementation Details
The new LavinMQ jobs use the official cloudamqp/lavinmq-action@v1 GitHub Action, which provides a much simpler setup compared to the existing RabbitMQ configuration:
- name: Start LavinMQ
uses: cloudamqp/lavinmq-action@v1
with:
websocket: true # For browser tests
No certificate generation, complex configuration, or additional dependencies are required for LavinMQ testing.
Benefits
- Broker Compatibility: Validates the client works correctly with both RabbitMQ and LavinMQ AMQP implementations
- Early Issue Detection: Catches broker-specific compatibility issues during development
- Parallel Execution: LavinMQ and RabbitMQ tests run simultaneously for efficient CI
- Zero Code Changes: Uses the same comprehensive test suite without modification
- Backward Compatibility: All existing RabbitMQ tests and TLS support remain unchanged
Test Coverage
All 62 existing tests run against LavinMQ, covering:
- Connection management and channels
- Queue operations (declare, bind, delete, purge)
- Publishing and consuming messages
- Exchange operations
- Confirmations and transactions
- Error handling and edge cases
- Browser WebSocket connectivity
The CI now provides comprehensive AMQP broker testing coverage while maintaining the existing test infrastructure.
Fixes #127.
[!WARNING]
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
https://api.github.com/repos/cloudamqp/lavinmq-action
- Triggering command:
curl -s REDACTED(http block)If you need me to access, download, or install something from one of these locations, you can either:
- Configure Actions setup steps to set up my environment, which run before the firewall is enabled
- Add the appropriate URLs or hosts to the custom allowlist in this repository's Copilot coding agent settings (admins only)
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.