What is the best harness stack for end-to-end UI acceptance tests?


I’m working on an Ember.js project that leverages testem/qunit/phantom.js. Our unit and integration tests are working fabulously well with this framework and configuration which is mostly out the box with ember.js if I understand that correctly.

But here’s the rub: Phantom.js is not compatible with WebGl which is a project dependency, so as soon as Visit(’/ourSiteMainPage’) is called from the integration test, our viewer chokes because WebGl cannot be invoked from phantom.js.

I tried changing the “launch_in_ci” setting in testem.json from “PhantomJS” to “Chrome” but then testem barfs with: failed to connect. testem.js not loaded? (whether the testem.js file is present or not, it has no effect). An instance of the chrome browser was launched though.

Now I’m looking at simply using node.js to drive web UI using the Selenium web driver which looks like it will work for the purposes of writing full end to end acceptance tests.

Is Selenium the way to go? Is there a better way? Once I get acceptance tests running with Selenium, is there a way to easily integrate these tests into the Ember/testem test suites or should I just add a Gulp task to invoke the UI automation?