2. History
● Windmill
● GTI
● Se Builder 1 release
● People care
3. Now
● Preparing for a 2.0 release
● 1 year of development
● Refactor
● Addition of Selenium 2 support
● Moved to github
● Apache 2 license
● sebuilder.com
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. 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("http://www.sebuilder.com/");
get http://www.sebuilder.com/
19. Converting
● Can automatically convert some scripts
● Upgrade path
● "What would this look like in Selenium 2?"
FirefoxDriver wd = new FirefoxDriver ();
open http://www.sebuilder.com/ wd.manage().timeouts().implicitlyWait(
60, TimeUnit.SECONDS);
wd.get("http://www.sebuilder.com/ ");
waitForPageToLoad 60000 if (!wd.getTitle().equals( "Se Builder" )){
wd.close();
throw new RuntimeException ("failed");
assertTitle Se Builder }
wd.close();
23. Kill version-specific code
Selenium 1 Rec Converter Selenium 2 Rec
All GUI Code
Common data structures
HTML/JS/jQuery
24. Goal: Modularity
● List of n (= 2) supported script types
● Extensible list of step types
● Extensible list of export formats
● Extensible GUI
25. // TODO
● Se Builder is in Beta
● Want more features
● Want fewer bugs
26. Broader Support
● More step types
● More export languages and frameworks:
JUnit, TestNG, C#, Ruby, Perl
● It's easy
27. Beautiful exported code
● It's important
● Need consistent test behaviour
● Exported code used as base for more code
● Set a good example
● Help establish good practices
28. Selenium 2 Suites
● Format for storing suites
● Based on JSON
● Exporting suites to code
29. Extensibility
● Ecosystem of plugins is key
● Custom steps and export formats
● Custom widgets
● Flash support, etc.
● Keep core Se Builder simple
30. Step Plugins
● Definition of new steps (name, parameters)
● Record code
● Playback code
● Export code
● Selenium 2 JSON specifies plugins
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. 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. Wanted: Contributors
● Try it out and give feedback
● Write about it
● Fix bugs
● Improve quality of exported code
● Add a new export language/framework
● It's on GitHub: fork it & add new features!
34. What now?
● Get involved
● Let's make some plans
● Let's unify and execute