Hey folks,
So I’ve been spending some of my cycles at Elemica recently working on improving our automated browser testing. We’ve historically tried to use Selenium and in general
nobody likes interacting with the code we need to work with to make it work and it takes an incredibly long time to run. At first, I thought this was largely a symptom of our API choice. Though I think I found a better API through
webdriver.io (a Node library) – we still ran headlong into a lot of problems.
Some issues we’ve run into center around timing actions for AJAX requests by either inserting really long pauses or injecting JS into the browser to check the jQuery active request counts and the fact that the Selenium architecture itself doesn’t seem to be really reliable. It’s regularly ignoring custom script timeouts I send it, tests written that pass in Chrome don’t pass in Phantom, the speed that Phantom has boasted just doesn’t hold water when run through webdriver, Firefox appears to have been broken with Selenium since January, and Safari just kind of ignores your requests to start a webdriver session.
All in all, I’m not confident that Selenium is a reliable platform for developing cross-browser functional tests. We have historically become very disheartened by the unreliability of tests which kills any internal motivation to maintain them effectively.
As a result we’ve started investigating other solutions to see what’s out there. I tried using Casper with Phantom directly, which really wouldn’t answer the question of cross-browser compatibility but would be interesting to check, and it experienced some of the same inherent problems that we had with Selenium. Additionally, we found a tool called Sahi that’s almost good enough to make writing these tests a point and click operation. Some things don’t work quite so well for a Lift application, but we’ve reached out to them to ask them whether or not there are configuration settings that might be able to fix those rough edges.
Anyway, I’m interested in asking: What is everyone using for this need? Has everyone else just been suffering with Selenium’s problems or are there other solutions that you guys have found to meet this need?
Would love to hear your thoughts.
Cheers,