Test everything on CI

CI was previously only running the unit, functional and integration tests. This makes it run all the test suits. It also updates the JavaScript test runner to return the correct exit code so CI will fail when the JavaScript tests fail.