Session
Windmill: Automated Testing of Your Ajax Web Applications
Mikeal Rogers, QA Development Engineer, Open Source Applications Foundation
Track: Web Applications (client-side and server-side)
Date: Thursday, July 26
Time: 10:45am
- 11:30am
Location: E145
Project Windmill was created with the intention of reaching 100% automated testing of heavy Ajax web applications after trying desperately to make existing solutions work.
Windmill controls the browser with JavaScript. Windmills server provides a proxy interface that dynamically loads its js controller for testing any remote site. The server has a continuous communication workflow with the js controller in the browser over JSON-RPC. Any language can, in turn, interface with the server over XML-RPC.
Test Authoring
Tests are written in JSON, either manually or through an interactive in-browser development environment. Tests are parsed in python and sent to the controller over JSON-RPC, which makes additional test markups easy to add.
Debugging
The worst experiences we had with competing tools was the painful process of test debugging. Windmill makes heavy use of log4js in the controller, and all information can be communicated back to the server, which in turn uses the python logger. Tests can be paused at any time and debugged, the entire dom tree serialized and logged, and both the server and controller have interactive shells available via the browser or command line.
Performance
All of Windmills advanced features are sandwiched around the simulated browser actions; this means that Windmill can be a very accurate tool for performance testing and Windmill functional UI tests double as your performance tests. Windmill also includes application-specific hooks, so sections of time can be broken down even further and large lags in time can be more precisely tracked.





















