Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introducing Selenium Builder – the Future of Test Development


Published on

Published in: Technology

Introducing Selenium Builder – the Future of Test Development

  1. 1. Se BuilderLets talk about the future. @admc @zarkonnen_com
  2. 2. History● Windmill● GTI● Se Builder 1 release● People care
  3. 3. Now● Preparing for a 2.0 release● 1 year of development● Refactor● Addition of Selenium 2 support● Moved to github● Apache 2 license●
  4. 4. Usage
  5. 5. Community● We need community● We need plugins● We need multiple browsers● We need your help
  6. 6. David Stark● Originally drafted to fix some bugs in GTI● Rewrote most of it → Se Builder
  7. 7. Se Builder: It does both● Same UX for Selenium 1/2● Easier start with Selenium 2● Transition path
  8. 8. Selenium 1 Support● A simple alternative to Selenium IDE
  9. 9. Selenium 1: Recording
  10. 10. Selenium 1: Editing
  11. 11. Selenium 1: Playback
  12. 12. Selenium 1: Save/Load
  13. 13. Selenium 1: Suites
  14. 14. Selenium 1: Extensions● user_extensions.js● Compatible with Selenium IDE
  15. 15. Selenium 2 Support● Selenium 1: List of steps● Selenium 2: More flexible API● Too flexible for simple IDE● Want to keep UX similar to Selenium 1
  16. 16. Selenium 2 Steps● Simplify tests back to list of steps● Step types that map onto Sel 1 actions● Less flexible, but better UX● Fine for most purposes?● Might add control flow later driver.get(""); get
  17. 17. Result: Identical UX
  18. 18. JSON Format● Selenium 1 has Selenese● JSON file for Selenium 2 steps{ "seleniumVersion": "2", "formatVersion": 1, "steps": [ { "type": "get", "url": "" }, { "type": "verifyTextPresent", "text": "Open Source" }, { "type": "clickElement", "locator": { "type": "link text", "value": "Docs" } } ]}
  19. 19. Converting● Can automatically convert some scripts● Upgrade path● "What would this look like in Selenium 2?" FirefoxDriver wd = new FirefoxDriver ();open wd.manage().timeouts().implicitlyWait( 60, TimeUnit.SECONDS); wd.get(" ");waitForPageToLoad 60000 if (!wd.getTitle().equals( "Se Builder" )){ wd.close(); throw new RuntimeException ("failed");assertTitle Se Builder } wd.close();
  20. 20. Selenium 2 Support● Record● Edit● Play back● Load, save & export
  21. 21. Architecture● Based on HTML/JS/jQuery● Thin XUL wrapper● Mostly browser-agnostic Window: XUL Se Builder Code HTML/JS/jQuery
  22. 22. Architecture● Selenium version-agnostic Selenium 1 Converter Selenium 2 Menus, etc. Script Editing GUI Recording Common data structures HTML/JS/jQuery
  23. 23. Kill version-specific code Selenium 1 Rec Converter Selenium 2 Rec All GUI Code Common data structures HTML/JS/jQuery
  24. 24. Goal: Modularity● List of n (= 2) supported script types● Extensible list of step types● Extensible list of export formats● Extensible GUI
  25. 25. // TODO● Se Builder is in Beta● Want more features● Want fewer bugs
  26. 26. Broader Support● More step types● More export languages and frameworks: JUnit, TestNG, C#, Ruby, Perl● Its easy
  27. 27. Beautiful exported code● Its important● Need consistent test behaviour● Exported code used as base for more code● Set a good example● Help establish good practices
  28. 28. Selenium 2 Suites● Format for storing suites● Based on JSON● Exporting suites to code
  29. 29. Extensibility● Ecosystem of plugins is key● Custom steps and export formats● Custom widgets● Flash support, etc.● Keep core Se Builder simple
  30. 30. Step Plugins● Definition of new steps (name, parameters)● Record code● Playback code● Export code● Selenium 2 JSON specifies plugins
  31. 31. GUI Plugins● HTML/JS/jQuery makes this easy● Define listeners● Define widget attachment points● Good hooks → clean extensions● What hooks do you need?
  32. 32. Other Browsers● HTML/JS not tied to browser like XUL● Recording is fiddly and browser-specific● Goal: Insulate browser-specific code● Then port to Chrome, etc.● Who wants to give it a try?
  33. 33. Wanted: Contributors● Try it out and give feedback● Write about it● Fix bugs● Improve quality of exported code● Add a new export language/framework● Its on GitHub: fork it & add new features!
  34. 34. What now?● Get involved● Lets make some plans● Lets unify and execute
  35. 35. Questions● You know you do.
  36. 36. Thanks!@seleniumconf is awesome.●●● @admc, @zarkonnen_com● @seleniumbuilder