Stack is Node.js, RabbitMQ, MySQL, Redis, and a little bit of Go running on top of Elastic Beanstalk with Docker.
I believe you can run arbitrary commands after you commit to a particular branch, which would allow you to run your tests.
If any of your commands exit with a failure code, the deploy is halted and you're notified via email.
(You can also set the deployments to be manual, allowing you to commit to e.g. "release" without anything happening until you want it to.)