Hi,
We have a complex web application which uses a lot of JavaScript along with XMPP and a Rails application. It has come to the point where we need to test the entire system end-to-end. We need to be able to ensure various tasks can be completed without errors, one such task would be to negotiate a 1-on-1 chat session with another party on the system. As all of the tasks on our application envolve user to user interaction we would like to be able to simulate this by driving 2 browsers at the same time which communicate via the web application. I've been thinking of using selenium or watir and their waiting functions to wait for specific things to happen before proceeding. For example:
- open 2 browsers at our site
- browser 1 waits for a question to be published
- browser 2 publishes a question then waits for an offer to be received
- browser 1 sees the question, sends an offer and waits for it to be accepted
- browser 2 sees the offer and accepts it then waits for a chat session to start
- etc...
I can see this kind of testing becoming rather tricky to write and maintain. It would rely on specific elements of the page so if these are changed the tests would need to be altered. Also if we change the flow of the application even slightly the suit would probably need to be modified quite heavily.
So my question is, has anyone done this kind of testing? If so what tools would you suggest using and do you have any tips on writing the tests?
We will need to drive actual browsers, not headless, and it would need to be possible to integrate this with our CI, we currently use Sauce Labs and selenium as part of our CI setup.