Hi,
Yesterday I wanted to add some functional tests for Create page/space actions and I found
that the Selenium version we're using doesn't work on Snow Leopard (my OS) so I
started looking at issues and found that the pb was fixed in Selenium2/WebDriver. Since I
had wanted to explore it for a while I took the time to do a quick exploration...
Selenium2 is the merge of Selenium and WebDriver.
Pros of Selenium2:
* No more JS sandbox. In selenium1 all the selenium API is executed as JS in the browser.
In Selenium2 the browsers are controlled using their native APIs (JNA).
* Faster (as a consequence of the previous point)
* Allows to do stuff such as file uploads, etc since there's no longer the issue of
the JS sandbox
* No need to start a Selenium Proxy. All you need is to start XE and then you can run the
tests as simple JUnit tests.
* The API is much cleaner (this is to be expected with hindsight). See
http://seleniumhq.org/docs/09_webdriver.html
* There's a very fast executing HtmlUnit driver (not to be used with tests using JS
though since it emulates browser JS support and thus cannot guarantee the result in the
real browser)
Now Selenium2 also recommends to use the PageObject pattern which IMO is a very good
pattern that we should use. More here:
http://code.google.com/p/selenium/wiki/PageObjects
In order to get a feel of it, I've committed a first test in the sandbox using the
PageObjects pattern:
http://svn.xwiki.org/svnroot/xwiki/contrib/sandbox/webdriver-ui-tests/
To run the test:
* Start a local XE on port 8080
* Open the project in your IDE and run LoginTest as a JUnit test
Let me know what you think.
My opinion
* We should test it more, on Ajaxy web pages to verify it's stable and working well
enough
* If that works well enough then we could make it our default way of writing functional
UI tests and start migrating existing tests one by one + write new ones in it
I forgot to mention that there's a backward compatibility driver too so existing tests
are supposed to work too (with some doubts on complex sutff):