I continued my quest for a solution to create automated tests using seleniumRC and C# and this time, I took a look at this new project called Flex Pilot.
FlexPilot is a open source testing tool that integrates with selenium, it has a bootstrapper to make the application testable, it is able to use a selenium IDE recorder, and you can access elements using chain syntax (like accessing with xpath).
Here is what I did to start building tests with flex pilot:
- Rebuilded flexpilot: source is http://github.com/mde/flex-pilot/archives/master and executed build.py this will update FlexPilot.swf and FPBootstrap.swf located under org/flex_pilot folder (place this file where the app is located)
- Copied the content from src/org/flex_pilot folder to the flex's app libs folder example C:\source\MyAppInFlex\libs
- Imported Bootstrap in the flex app
import org.flex_pilot.FPBootstrap;
- Set
FPBootstrap.flex_pilotLibPath
the path on the server where FPBootstrap
can find FlexPilot.swf. The Loader fetches FlexPilot.swf via a Loader
class.
FPBootstrap.flex_pilotLibPath = '/flash/org/flex_pilot/FlexPilot.swf';
- Initialize
FPBootstrap
- this fetches and loads FlexPilot.swf, and gives FlexPilot Flash a context to use for testing. This context is usually a reference to app’s Stage.
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" xmlns:local="*" creationComplete="init()
applicationComplete="initFlexPilot()">
......
<mx:Script>
<![CDATA[
...............
import mx.utils.ObjectUtil;
import org.flex_pilot.FPBootstrap;
...............
private function initFlexPilot():void
{
FPBootstrap.flex_pilotLibPath = 'FlexPilot.swf';
FPBootstrap.init(stage);
}
......
- Compiled application:
mxmlc -source-path=. -source-path+=../libs MyAppInFlex.mxml -o MyAppInFlex.swf
- If present, remove tags like
<noscript>
around the flex object in your HTML. - If the configuration is working, Firebug will return “function” when calling
document.getElementById('MyAppInFlex').fp_click
- This is the “
hello world
” example of a test method on C#
[TestMethod]
public void TestMethodFlexPilot()
{
selenium.Open("http://localhost/testapp.html");
selenium.RunScript("document.getElementById('MyAppInFlex').fp_type({name:'usernameTextInput',
text:'Flex Pilot'})");
selenium.RunScript("document.getElementById('MyAppInFlex').fp_click
({name:'secureCheckBox'})");
}
FlexPilot has seleniumRC
client drivers available for Java, Python and Ruby (no C# client driver available yet).