Flex automation. tools comparison


Published on

Comparison of tools to be used for Flex automation QA with Selenium.

Published in: Business, Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Flex automation. tools comparison

  1. 1. Lohika Flex Automation. Tools comparison Dmitry Irzhov 12. 17. 2011
  2. 2. <ul><li>We define the most appropriate tool to automate flex / flash applications </li></ul><ul><li>Based on a set of utility functions, ability to describe the controls, we define some of the tools more versatile and less costly for automation </li></ul>Goal
  3. 3. <ul><li>There are paid tools for automation the flash / flex applications: RIATest, TestComplete, SiktTest, Rational Functional Tester, HP QTP, as well as free: FunFX, FlexMonkey, SeleniumFlex, FlexPilot </li></ul><ul><li>Flex / Flash API extends </li></ul><ul><li>Versioning browsers often grows </li></ul>Current Situation
  4. 4. <ul><li>Cross-browser compatibility </li></ul><ul><li>Ability to describe any control with any nesting </li></ul><ul><li>Availability of documentation </li></ul><ul><li>Supporting flex 3&4 </li></ul><ul><li>Ability to change / add a set of tool functions </li></ul>Requirements for the tool
  5. 5. Architecture
  6. 6. Locators <ul><li>Monkium generates monkeyId for elements which do not specify automationName or id </li></ul><ul><li>Monkium not support chain * (can be described by Container Property / Value) </li></ul>Pilot Monkium SFAPI id + + + automationName + + + Property Value + + + Generated Id - + - chain + +/- +
  7. 7. Documented functions <ul><li>A set of Monkium functions can be found only if write commands in the FlexMonkey </li></ul><ul><li>A set of FlexPilot functions can be seen on the developer's site </li></ul><ul><li>A set of SFAPI functions is described as FlexPilot in the user-extensions.js file </li></ul><ul><li>Note: SFAPI contains the largest set of commands </li></ul>
  8. 8. PopUpButton <ul><li>PopUp arrow button is not accessible </li></ul><ul><li>Need to use native open() method </li></ul>Action Pilot Monkium SFAPI click + + + open - + -
  9. 9. Edit Field <ul><li>SFAPI </li></ul><ul><li>document.getElementById('testApp').getFlexProperty('id:ta','text'); </li></ul><ul><li>Pilot </li></ul><ul><li>document.getElementById('testApp').fp_getPropertyValue({'id':'ta','attrName':'text'}); </li></ul><ul><li>Monkium </li></ul><ul><li>document.getElementById('testApp').getForSelenium('<VerifyProperty value=&quot;ta&quot; propertyString=&quot;text&quot; expectedValue=&quot;sample&quot; propertyType=&quot;equals&quot; prop=&quot;automationName&quot;/>', ''); </li></ul>Action Pilot Monkium SFAPI click + + + type + + + getText + + +
  10. 10. ComboBox <ul><li>Pilot </li></ul><ul><li>fp_getPropertyValue({'chain': 'id:cardCmb/className:ComboBoxSkin/className:TextInput', 'attrName':'text'}); - unable to use selectedIndex.label </li></ul><ul><li>Monkium </li></ul><ul><li>getForSelenium('<VerifyProperty value=&quot;cardCmb&quot; propertyString=&quot;selectedIndex.label&quot; prop=”id&quot;/>', ''); </li></ul><ul><li>SFAPI </li></ul><ul><li>getFlexText('id:cardCmb.selectedItem',''); </li></ul>Action Pilot Monkium SFAPI select + + + type + + + getText + - +
  11. 11. DropDownList <ul><li>Pilot </li></ul><ul><li>fp_getPropertyValue({'chain':'id:list1/className:*/className:Label', 'attrName':'text'}); - can be returned non-selected label </li></ul><ul><li>Monkium </li></ul><ul><li>getForSelenium('<VerifyProperty value=&quot;list1&quot; propertyString=&quot;selectedItem.label&quot; prop=&quot;automationName&quot;/>', ''); - return error on non-selected contro </li></ul><ul><li>SFAPI </li></ul><ul><li>getFlexText('id:list1.selectedItem',''); - return wrong selection on non-selected control </li></ul>Action Pilot Monkium SFAPI select + + + getText + + +
  12. 12. List <ul><li>Pilot </li></ul><ul><li>document.getElementById('testApp').fp_select({'id':'myList', 'index':'1'}); </li></ul><ul><li>Monkium </li></ul><ul><li>Unable to select and get selection if List is with ItemRenderer </li></ul>Action Pilot Monkium SFAPI select + - + getSelection + - +
  13. 13. Advanced Grid <ul><li>Monkium has a small set of commands (HeaderClick, Select) </li></ul><ul><li>SFAPI has a variety of methods (getFlexDataGridUIComponentLabel, getFlexDataGridCell, getFlexDataGridRowCount, etc.) </li></ul>
  14. 14. Tree <ul><li>Monkium </li></ul><ul><li><UIEvent command=&quot;Open&quot; value=&quot;myTree&quot; prop=&quot;automationName&quot;><arg value=&quot;Inbox&quot; /></UIEvent> </li></ul><ul><li>It is not possible to automate custom controls in tree nodes (such as RadioButton or CheckBox) </li></ul><ul><li>Pilot </li></ul><ul><li>No methods to work with Tree, but can be implemented using separate controls of Tree </li></ul>Action Pilot Monkium SFAPI open - + - select - + -
  15. 15. Context Menu <ul><li>Pilot </li></ul><ul><li>fp_rightClick({'id':'testApp','contextMenuIndex':'1'}); - locator should be the root object of application </li></ul>Action Pilot Monkium SFAPI rightClick + - -
  16. 16. Scrolling <ul><li>Pilot </li></ul><ul><li>fp_click({'chain':'id:dg/className:VScrollBar/className:Button/className:ScrollBarDownButtonSkin'}); </li></ul><ul><li>Monkium </li></ul><ul><li>playFromSelenium('<UIEvent command=&quot;Scroll&quot; value=&quot;dg&quot; prop=&quot;id&quot;><arg value=&quot;0&quot;/><arg value=&quot;2&quot;/></UIEvent>',&quot;&quot;); </li></ul><ul><li>There are many ways to solve the issue for List control with ItemRenderer: </li></ul><ul><li>Use ensureIndexIsVisible(index) or call Event.CHANGE for ScrollBar </li></ul><ul><li>Setting list.layout.verticalScrollPosition </li></ul><ul><li>Setting ScrollBar.value </li></ul>Action Pilot Monkium SFAPI Grid Scroll + + + List Scroll with Renderer -* -* -*
  17. 17. FlexMonkium Disadvantages <ul><li>After performing a dozen commands you can not continue running (only after you restart the application) http://www.gorillalogic.com/forumpost/1011 </li></ul><ul><li>The command set can be seen only in the source code or in FlexMonkey </li></ul><ul><li>No support for chain or XPath (Container Property, Container Value) </li></ul>
  18. 18. FlexPilot Disadvantages <ul><li>Small set of commands, but they are atomic and based on them can be implemented the missing commands </li></ul><ul><li>The project is poorly developing </li></ul><ul><li>No support for XPath </li></ul>
  19. 19. Resources <ul><li>SFAPI </li></ul><ul><li>http :// code.google.com /p/ sfapi / </li></ul><ul><li>FlexPilot </li></ul><ul><li>https :// github.com / mde / flex-pilot </li></ul><ul><li>FlexMonkium </li></ul><ul><li>http://www.gorillalogic.com/flexmonkium </li></ul><ul><li>FlasInspector </li></ul><ul><li>https :// addons.mozilla.org / ru / firefox / addon /flashinspector-194381/ </li></ul>