Web testing with Javascript

Posted by Andy Gavin on Tue, 2006-02-14 10:41

Some people at thoughtworks have come up with a useful test engine for testing web services. Selenium allows all the tests to be run in the browser. Using its javascript engine. As they point out, it offers a way of checking that functionality works in a in all browsers.


it looks like a fusion of functionality from FIT and WATIR.

Actually, Selenium and Watir were open-sourced at about the same time, though they were developed independently of each other without knowledge of each other's code when they started. As an interesting footnote to history, Bret Pettichord, one of Watir's main authors, also worked at ThoughtWorks at the time both projects were being open sourced. (I'm still at ThoughtWorks, but Brett is not.)

When I came up with Selenium, I was actually trying to implement FIT for JavaScript, because I needed a functional testing tool that was tester/end-user friendly, and after a bit of research, I was intrigued by the FIT "view of the world" in this regard. I even wrote Ward about it and was looking forward to getting my name "in lights" here-->http://fit.c2.com/wiki.cgi?DownloadNow

I noticed on the FIT site that there were plenty of implementations for server-side stuff, but for specifically testing apps with in-browser JavaScript, there was nothing. I quickly realized FIT's "action fixture" spec was seriously incomplete for handling a web GUI. (There were only 4 commands - something like 'start', 'enter', 'check' and 'press')-- when I started adding more and more commands to do the GUI testing I needed, I quickly realized I was 'forking' the FIT spec and was coming up with something new. Since I was rapidly expanding the "action fixture" spec and was not really even interested in the row and column FIT fixtures, Selenium was no longer "FIT for JavaScript". (No pun intended. ;-)

Another footnote, I tried using JSUnit, first, for my testing needs, but it couldn't readily handle waiting for page transitions (i.e. when you click a button that brings you to a new page, and having the test wait until that page is loaded before continuing the test).

Add new comment