SlideShare a Scribd company logo
Findings	
  and	
  Challenges	
  
  Background	
  
  Tools	
  
  Past	
  
  Challenges	
  
  “The	
  Decision”	
  	
  
  Benefits	
  
  Conversion	
  
  Present	
  
  Examples	
  
  Custom	
  framework	
  written	
  in	
  Java	
  
  In	
  house	
  test	
  management	
  system	
  
    TestElements	
  
     ▪  Projects	
  
       ▪  Test	
  Suites	
  
            Test	
  Cases	
  
               Actions	
  
                  Data	
  Elements	
  
                  Object	
  Store	
  
  Fully	
  integrated	
  with	
  our	
  Framework	
  
  Eclipse	
  IDE	
  
  TestElements	
  
  Results	
  Viewer	
  
       +	
  iPad	
  version	
  
  SauceLabs	
  
    SeleniumIDE	
  
  Firebug	
  
  Ivy	
  
  Git	
  -­‐	
  version	
  control	
  
  Selenium	
  1	
  &	
  Selenium	
  Grid	
  
     6	
  lab	
  machines	
  
      ▪  Mac’s	
  and	
  PCs	
  with	
  different	
  browser	
  combinations	
  
     RC	
  for	
  each	
  desired	
  browser	
  on	
  local	
  machines	
  
     RC	
  for	
  each	
  desired	
  browser	
  on	
  each	
  remote	
  
     machine	
  running	
  on	
  SeleniumGrid	
  
  Maintenance	
  of	
  RC’s	
  
  If	
  1	
  RC	
  had	
  an	
  issue,	
  must	
  kill	
  all	
  RC’s,	
  restart	
  
   HUB,	
  and	
  restart	
  each	
  one	
  again	
  
  >	
  800	
  test	
  cases	
  executed	
  amongst	
  6	
  
   machines	
  multiple	
  times	
  a	
  day	
  
       ▪  (approx.	
  2500/day)	
  
  Parallel	
  execution	
  was	
  challenging	
  
     Cross	
  browser	
  testing	
  
  Solved	
  every	
  challenge	
  on	
  the	
  list	
  
  Selenium	
  RC’s	
  in	
  the	
  cloud	
  
     No	
  maintenance	
  
  Video	
  
  Replaced	
  Selenium	
  with	
  
  WebDriverBackedSelenium	
  
     Selenium	
  1	
  backwards	
  compatible	
  
  New	
  code	
  would	
  use	
  WebDriver	
  
  WebDriverBackedSelenium	
  on	
  Sauce	
  
     Each	
  selenium	
  1	
  command	
  would	
  spit	
  back	
  
      javascript,	
  causing	
  very	
  slow	
  test	
  execution	
  times	
  
     WebDriver	
  commands	
  were	
  OK	
  
  Did	
  not	
  realize	
  this	
  right	
  away	
  
  Santiago	
  the	
  ‘Sauce	
  Ninja’	
  
  Convert	
  EVERYTHING…	
  
  No	
  more	
  XPATH!	
  
    CSS_SELECTOR	
  
     ▪  Native	
  support	
  on	
  each	
  browser	
  
    ID	
  
    LINK_TEXT	
  
    Improve	
  execution	
  speed	
  on	
  Sauce	
  	
  
       (no	
  more	
  JavaScript)	
  
    Better	
  emulation	
  of	
  user	
  interactions	
  
    Better	
  API	
  –	
  More	
  object	
  oriented	
  
    Stability	
  
    Improve	
  logic	
  in	
  codebase	
  
    Don’t	
  want	
  to	
  be	
  left	
  behind	
  
    New	
  version	
  of	
  Selenium	
  all	
  the	
  time	
  
       Bug	
  fixes,	
  improvements	
  
       Feel	
  they	
  care	
  about	
  the	
  product	
  
    Fun	
  
  Line	
  by	
  Line	
  conversion	
  
     remove	
  any	
  selenium1	
  references	
  
  Not	
  enough	
  documentation	
  existed	
  
  Not	
  everything	
  appeared	
  to	
  be	
  easily	
  
  converted	
  
     hover	
  /	
  mouseOver	
  
     select	
  from	
  combo	
  box	
  
     attachFile	
  
  Different	
  functionality	
  
     Objects	
  must	
  be	
  visible	
  before	
  acting	
  on	
  them	
  
     Type	
  mechanism	
  does	
  not	
  clear	
  the	
  text	
  field	
  
      before	
  filling	
  it	
  out	
  *	
  changed	
  in	
  2.6	
  
     Selenium2	
  is	
  blocking	
  
       ▪  No	
  more	
  waitForPageToLoad(….)	
  	
  
     Use	
  ExpectedCondition	
  class	
  to	
  wait	
  for	
  
       presence	
  /	
  visibility	
  of	
  element	
  
  Different	
  names	
  
     no	
  more	
  isElementPresent	
  /	
  isVisible 	
  	
  
  Simplify	
  codebase	
  
  Find	
  Selenium2	
  conversion	
  for	
  everything	
  
   and	
  create	
  wrapper	
  in	
  our	
  Framework	
  
  SeleniumBase.java	
  was	
  born	
  
    Custom	
  WebDriver	
  commands	
  
    All	
  scripts	
  extend	
  from	
  this	
  class	
  
    Less	
  clutter	
  
    Maintainability	
  
public WebDriver getWebDriver() {	
       return webDriver;	
}	
	
public WebElement getWebElement(LocatorType locatorType, String locator) throws Exception {	
       return getWebDriver().findElement(by(locatorType, locator));	
}	
	
public List<WebElement> getWebElements(LocatorType locatorType, String locator) throws Exception {	
       return getWebDriver().findElements(by(locatorType, locator));	
}	
	
public boolean isElementPresent(LocatorType locatorType, String locator) throws Exception { 	
       return getWebElements(locatorType,locator).size() > 0;	
}	
	
public boolean isVisible(LocatorType locatorType, String locator) throws Exception {	
       return getWebElement(locatorType,locator).isDisplayed();	
}	
	
public void waitForElementPresent(final LocatorType locatorType, final String locator) throws Exception {	
      getWait().until(new ExpectedCondition<Boolean>() { 	
         public Boolean apply(WebDriver d) {	
             try {	
                return isElementPresent(locatorType, locator);	
             } catch (Exception e) {	
                return false;	
             }	
         } 	
      });	
}	
  
public void clearAndSendKeys(LocatorType locatorType, String locator, String keys) throws Exception {	
       getWebElement(locatorType, locator).clear();	
       getWebElement(locatorType, locator).sendKeys(keys);	
}	
	
public void check(LocatorType locatorType, String locator) throws Exception {	
       if(!getWebElement(locatorType, locator).isSelected())	
           getWebElement(locatorType, locator).click();	
}	
	
public void mouseOver(LocatorType locatorType, String locator) throws Exception{	
       Actions action = new Actions(getWebDriver());	
       action.moveToElement(getWebElement(locatorType, locator)).perform();	
}	
	
public void selectComboBoxByVisibleText(LocatorType locatorType, String locator, String value) throws
       Exception{	
       Select comboBox = new Select(getWebElement(locatorType, locator));	
       comboBox.selectByVisibleText(value);	
}	
	
public void switchToWindow(String windowTitle){	
       Set<String> windowHandles = getWebDriver().getWindowHandles();	
      	Iterator<String> iter = windowHandles.iterator();	
	
      	while(iter.hasNext()){	
      	    String currentWindowHandle = iter.next();	
      	    getWebDriver().switchTo().window(currentWindowHandle);	
      	    if(getWebDriver().getTitle().equals(windowTitle))	
      	     	break;	
       }	
}	
  
clearAndSendKeys(LocatorType.ID,"Gilt Login Page","Email Address Text Field”,emailAddress);	
clearAndSendKeys(LocatorType.ID,"Gilt Login Page","Password Text Field”,password);	
getWebElement(LocatorType.ID,"Gilt Login Page","Sign In Button").click();
waitForElementPresentAndVisible(LocatorType.CSS_SELECTOR,"Gilt Carousel Bar","Selected Tab");	
mouseOver(LocatorType.CSS_SELECTOR,"Gilt Carousel Bar","Selected Tab");	
List<WebElement> saleTitle = getWebElements(LocatorType.CSS_SELECTOR,"Gilt Carousel Bar","Selected Tab Sale Links");	
	
  
List<WebElement> productLookTitleAll = 	
   getWebElements(LocatorType.CSS_SELECTOR,"Gilt Product Listing Page","Product Look Title Links");	
List<WebElement> productLookTitleAvailable =	
   getWebElements(LocatorType.CSS_SELECTOR,"Gilt Product Listing Page","Available Product Look Title Links");	
List<WebElement> productLookSoldOut = 	
   getWebElements(LocatorType.CSS_SELECTOR,"Gilt Product Listing Page","Sold Out Product Look Title Links");	
  
  99.9999%	
  converted	
  to	
  Selenium2	
  
        ▪  attachFile()	
  
  Stable	
  results	
  
  Clean,	
  easy	
  to	
  manage	
  code	
  
  SeleniumBase	
  continues	
  to	
  grow	
  
  Ivy	
  to	
  manage	
  dependencies	
  
     Upgrade	
  to	
  Selenium	
  2.x	
  quickly	
  
     Push	
  changes	
  to	
  team	
  through	
  Git	
  
  Make	
  the	
  switch	
  
     Spread	
  the	
  work	
  out	
  to	
  save	
  time	
  
  Be	
  aware	
  of	
  the	
  differences	
  b/t	
  Sel1	
  and	
  Sel2	
  
     More	
  documentation	
  
  Modularize	
  common	
  selenium	
  commands	
  
  Selenium	
  Users	
  google	
  group	
  
  Question???	
  
  Comments….	
  

Email:	
  jsanchez@gilt.com	
  
	
  
Invitation:	
  http://www.gilt.com/invite/josesanchez	
  
	
  

More Related Content

What's hot

React, Redux and es6/7
React, Redux and es6/7React, Redux and es6/7
React, Redux and es6/7
Dongho Cho
 
Academy PRO: React JS. Redux & Tooling
Academy PRO: React JS. Redux & ToolingAcademy PRO: React JS. Redux & Tooling
Academy PRO: React JS. Redux & Tooling
Binary Studio
 
Testable, Object-Oriented JavaScript
Testable, Object-Oriented JavaScriptTestable, Object-Oriented JavaScript
Testable, Object-Oriented JavaScript
Jon Kruger
 
OSMC 2009 | Application Monitoring - Bridging the gap... by Michael Medin
OSMC 2009 |  Application Monitoring - Bridging the gap... by Michael MedinOSMC 2009 |  Application Monitoring - Bridging the gap... by Michael Medin
OSMC 2009 | Application Monitoring - Bridging the gap... by Michael Medin
NETWAYS
 
Venturing Into The Wild: A .NET Developer's Experience As A Ruby Developer
Venturing Into The Wild: A .NET Developer's Experience As A Ruby DeveloperVenturing Into The Wild: A .NET Developer's Experience As A Ruby Developer
Venturing Into The Wild: A .NET Developer's Experience As A Ruby Developer
Jon Kruger
 
React state managmenet with Redux
React state managmenet with ReduxReact state managmenet with Redux
React state managmenet with Redux
Vedran Blaženka
 
React и redux
React и reduxReact и redux
Basic Tutorial of React for Programmers
Basic Tutorial of React for ProgrammersBasic Tutorial of React for Programmers
Basic Tutorial of React for Programmers
David Rodenas
 
J Query The Write Less Do More Javascript Library
J Query   The Write Less Do More Javascript LibraryJ Query   The Write Less Do More Javascript Library
J Query The Write Less Do More Javascript Libraryrsnarayanan
 
React Lifecycle and Reconciliation
React Lifecycle and ReconciliationReact Lifecycle and Reconciliation
React Lifecycle and Reconciliation
Zhihao Li
 
Art of Javascript
Art of JavascriptArt of Javascript
Art of Javascript
Tarek Yehia
 
Java EE 8 security and JSON binding API
Java EE 8 security and JSON binding APIJava EE 8 security and JSON binding API
Java EE 8 security and JSON binding API
Alex Theedom
 
What's New in Enterprise JavaBean Technology ?
What's New in Enterprise JavaBean Technology ?What's New in Enterprise JavaBean Technology ?
What's New in Enterprise JavaBean Technology ?
Sanjeeb Sahoo
 
UI testing in Xcode 7
UI testing in Xcode 7UI testing in Xcode 7
UI testing in Xcode 7
Dominique Stranz
 
"Migrate large gwt applications - Lessons Learned" By Harald Pehl
"Migrate large gwt applications - Lessons Learned" By Harald Pehl"Migrate large gwt applications - Lessons Learned" By Harald Pehl
"Migrate large gwt applications - Lessons Learned" By Harald Pehl
GWTcon
 
Mobile Day - React Native
Mobile Day - React NativeMobile Day - React Native
Mobile Day - React Native
Software Guru
 

What's hot (19)

jQuery Presentasion
jQuery PresentasionjQuery Presentasion
jQuery Presentasion
 
React, Redux and es6/7
React, Redux and es6/7React, Redux and es6/7
React, Redux and es6/7
 
Academy PRO: React JS. Redux & Tooling
Academy PRO: React JS. Redux & ToolingAcademy PRO: React JS. Redux & Tooling
Academy PRO: React JS. Redux & Tooling
 
Testable, Object-Oriented JavaScript
Testable, Object-Oriented JavaScriptTestable, Object-Oriented JavaScript
Testable, Object-Oriented JavaScript
 
OSMC 2009 | Application Monitoring - Bridging the gap... by Michael Medin
OSMC 2009 |  Application Monitoring - Bridging the gap... by Michael MedinOSMC 2009 |  Application Monitoring - Bridging the gap... by Michael Medin
OSMC 2009 | Application Monitoring - Bridging the gap... by Michael Medin
 
Venturing Into The Wild: A .NET Developer's Experience As A Ruby Developer
Venturing Into The Wild: A .NET Developer's Experience As A Ruby DeveloperVenturing Into The Wild: A .NET Developer's Experience As A Ruby Developer
Venturing Into The Wild: A .NET Developer's Experience As A Ruby Developer
 
DirectToWeb 2.0
DirectToWeb 2.0DirectToWeb 2.0
DirectToWeb 2.0
 
React state managmenet with Redux
React state managmenet with ReduxReact state managmenet with Redux
React state managmenet with Redux
 
React и redux
React и reduxReact и redux
React и redux
 
Basic Tutorial of React for Programmers
Basic Tutorial of React for ProgrammersBasic Tutorial of React for Programmers
Basic Tutorial of React for Programmers
 
J query training
J query trainingJ query training
J query training
 
J Query The Write Less Do More Javascript Library
J Query   The Write Less Do More Javascript LibraryJ Query   The Write Less Do More Javascript Library
J Query The Write Less Do More Javascript Library
 
React Lifecycle and Reconciliation
React Lifecycle and ReconciliationReact Lifecycle and Reconciliation
React Lifecycle and Reconciliation
 
Art of Javascript
Art of JavascriptArt of Javascript
Art of Javascript
 
Java EE 8 security and JSON binding API
Java EE 8 security and JSON binding APIJava EE 8 security and JSON binding API
Java EE 8 security and JSON binding API
 
What's New in Enterprise JavaBean Technology ?
What's New in Enterprise JavaBean Technology ?What's New in Enterprise JavaBean Technology ?
What's New in Enterprise JavaBean Technology ?
 
UI testing in Xcode 7
UI testing in Xcode 7UI testing in Xcode 7
UI testing in Xcode 7
 
"Migrate large gwt applications - Lessons Learned" By Harald Pehl
"Migrate large gwt applications - Lessons Learned" By Harald Pehl"Migrate large gwt applications - Lessons Learned" By Harald Pehl
"Migrate large gwt applications - Lessons Learned" By Harald Pehl
 
Mobile Day - React Native
Mobile Day - React NativeMobile Day - React Native
Mobile Day - React Native
 

Viewers also liked

Beyond the Release: CI That Transforms Organizations
Beyond the Release: CI That Transforms OrganizationsBeyond the Release: CI That Transforms Organizations
Beyond the Release: CI That Transforms Organizations
Sauce Labs
 
WebDriver: The Final Frontier - Selenium Camp 2014
WebDriver: The Final Frontier - Selenium Camp 2014WebDriver: The Final Frontier - Selenium Camp 2014
WebDriver: The Final Frontier - Selenium Camp 2014
Sauce Labs
 
Combining Front-End and Backend Testing with Sauce Labs & BlazeMeter
Combining Front-End and Backend Testing with Sauce Labs & BlazeMeterCombining Front-End and Backend Testing with Sauce Labs & BlazeMeter
Combining Front-End and Backend Testing with Sauce Labs & BlazeMeter
Sauce Labs
 
Transitioning from Traditional to Modern QA
Transitioning from Traditional to Modern QATransitioning from Traditional to Modern QA
Transitioning from Traditional to Modern QA
Sauce Labs
 
Accelerating DevOps Collaboration with Sauce Labs and JIRA
Accelerating DevOps Collaboration with Sauce Labs and JIRAAccelerating DevOps Collaboration with Sauce Labs and JIRA
Accelerating DevOps Collaboration with Sauce Labs and JIRA
Sauce Labs
 
Making the Transition from Manual to Automated Testing
Making the Transition from Manual to Automated TestingMaking the Transition from Manual to Automated Testing
Making the Transition from Manual to Automated Testing
Sauce Labs
 

Viewers also liked (6)

Beyond the Release: CI That Transforms Organizations
Beyond the Release: CI That Transforms OrganizationsBeyond the Release: CI That Transforms Organizations
Beyond the Release: CI That Transforms Organizations
 
WebDriver: The Final Frontier - Selenium Camp 2014
WebDriver: The Final Frontier - Selenium Camp 2014WebDriver: The Final Frontier - Selenium Camp 2014
WebDriver: The Final Frontier - Selenium Camp 2014
 
Combining Front-End and Backend Testing with Sauce Labs & BlazeMeter
Combining Front-End and Backend Testing with Sauce Labs & BlazeMeterCombining Front-End and Backend Testing with Sauce Labs & BlazeMeter
Combining Front-End and Backend Testing with Sauce Labs & BlazeMeter
 
Transitioning from Traditional to Modern QA
Transitioning from Traditional to Modern QATransitioning from Traditional to Modern QA
Transitioning from Traditional to Modern QA
 
Accelerating DevOps Collaboration with Sauce Labs and JIRA
Accelerating DevOps Collaboration with Sauce Labs and JIRAAccelerating DevOps Collaboration with Sauce Labs and JIRA
Accelerating DevOps Collaboration with Sauce Labs and JIRA
 
Making the Transition from Manual to Automated Testing
Making the Transition from Manual to Automated TestingMaking the Transition from Manual to Automated Testing
Making the Transition from Manual to Automated Testing
 

Similar to Gilt Groupe's Selenium 2 Conversion Challenges

Top100summit 谷歌-scott-improve your automated web application testing
Top100summit  谷歌-scott-improve your automated web application testingTop100summit  谷歌-scott-improve your automated web application testing
Top100summit 谷歌-scott-improve your automated web application testingdrewz lin
 
Web driver training
Web driver trainingWeb driver training
Web driver training
Dipesh Bhatewara
 
Automation with Selenium Presented by Quontra Solutions
Automation with Selenium Presented by Quontra SolutionsAutomation with Selenium Presented by Quontra Solutions
Automation with Selenium Presented by Quontra Solutions
Quontra Solutions
 
Web UI test automation instruments
Web UI test automation instrumentsWeb UI test automation instruments
Web UI test automation instruments
Artem Nagornyi
 
Тарас Олексин - Sculpt! Your! Tests!
Тарас Олексин  - Sculpt! Your! Tests!Тарас Олексин  - Sculpt! Your! Tests!
Тарас Олексин - Sculpt! Your! Tests!
DataArt
 
Javascript frameworks: Backbone.js
Javascript frameworks: Backbone.jsJavascript frameworks: Backbone.js
Javascript frameworks: Backbone.jsSoós Gábor
 
Latest Selenium Interview Questions And Answers.pdf
Latest Selenium Interview Questions And Answers.pdfLatest Selenium Interview Questions And Answers.pdf
Latest Selenium Interview Questions And Answers.pdf
Varsha Rajput
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)
Christian Rokitta
 
Apache Wicket Web Framework
Apache Wicket Web FrameworkApache Wicket Web Framework
Apache Wicket Web Framework
Luther Baker
 
Dropwizard
DropwizardDropwizard
Dropwizard
Scott Leberknight
 
Escape from the automation hell
Escape from the automation hellEscape from the automation hell
Escape from the automation hell
Nikita Simonovets
 
Testcontainers - Geekout EE 2017 presentation
Testcontainers - Geekout EE 2017 presentationTestcontainers - Geekout EE 2017 presentation
Testcontainers - Geekout EE 2017 presentation
Richard North
 
Component Based Unit Testing ADF with Selenium
Component Based Unit Testing ADF with SeleniumComponent Based Unit Testing ADF with Selenium
Component Based Unit Testing ADF with Selenium
Richard Olrichs
 
Automated Testing ADF with Selenium
Automated Testing ADF with SeleniumAutomated Testing ADF with Selenium
Automated Testing ADF with Selenium
Wilfred van der Deijl
 
Automation Testing
Automation TestingAutomation Testing
Automation Testing
RomSoft SRL
 
Java. Explicit and Implicit Wait. Testing Ajax Applications
Java. Explicit and Implicit Wait. Testing Ajax ApplicationsJava. Explicit and Implicit Wait. Testing Ajax Applications
Java. Explicit and Implicit Wait. Testing Ajax Applications
Марія Русин
 
Automated acceptance test
Automated acceptance testAutomated acceptance test
Automated acceptance test
Bryan Liu
 
JavaFX for Business Application Developers
JavaFX for Business Application DevelopersJavaFX for Business Application Developers
JavaFX for Business Application Developers
Michael Heinrichs
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
toddbr
 
Improving Your Selenium WebDriver Tests - Belgium testing days_2016
Improving Your Selenium WebDriver Tests - Belgium testing days_2016Improving Your Selenium WebDriver Tests - Belgium testing days_2016
Improving Your Selenium WebDriver Tests - Belgium testing days_2016
Roy de Kleijn
 

Similar to Gilt Groupe's Selenium 2 Conversion Challenges (20)

Top100summit 谷歌-scott-improve your automated web application testing
Top100summit  谷歌-scott-improve your automated web application testingTop100summit  谷歌-scott-improve your automated web application testing
Top100summit 谷歌-scott-improve your automated web application testing
 
Web driver training
Web driver trainingWeb driver training
Web driver training
 
Automation with Selenium Presented by Quontra Solutions
Automation with Selenium Presented by Quontra SolutionsAutomation with Selenium Presented by Quontra Solutions
Automation with Selenium Presented by Quontra Solutions
 
Web UI test automation instruments
Web UI test automation instrumentsWeb UI test automation instruments
Web UI test automation instruments
 
Тарас Олексин - Sculpt! Your! Tests!
Тарас Олексин  - Sculpt! Your! Tests!Тарас Олексин  - Sculpt! Your! Tests!
Тарас Олексин - Sculpt! Your! Tests!
 
Javascript frameworks: Backbone.js
Javascript frameworks: Backbone.jsJavascript frameworks: Backbone.js
Javascript frameworks: Backbone.js
 
Latest Selenium Interview Questions And Answers.pdf
Latest Selenium Interview Questions And Answers.pdfLatest Selenium Interview Questions And Answers.pdf
Latest Selenium Interview Questions And Answers.pdf
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)
 
Apache Wicket Web Framework
Apache Wicket Web FrameworkApache Wicket Web Framework
Apache Wicket Web Framework
 
Dropwizard
DropwizardDropwizard
Dropwizard
 
Escape from the automation hell
Escape from the automation hellEscape from the automation hell
Escape from the automation hell
 
Testcontainers - Geekout EE 2017 presentation
Testcontainers - Geekout EE 2017 presentationTestcontainers - Geekout EE 2017 presentation
Testcontainers - Geekout EE 2017 presentation
 
Component Based Unit Testing ADF with Selenium
Component Based Unit Testing ADF with SeleniumComponent Based Unit Testing ADF with Selenium
Component Based Unit Testing ADF with Selenium
 
Automated Testing ADF with Selenium
Automated Testing ADF with SeleniumAutomated Testing ADF with Selenium
Automated Testing ADF with Selenium
 
Automation Testing
Automation TestingAutomation Testing
Automation Testing
 
Java. Explicit and Implicit Wait. Testing Ajax Applications
Java. Explicit and Implicit Wait. Testing Ajax ApplicationsJava. Explicit and Implicit Wait. Testing Ajax Applications
Java. Explicit and Implicit Wait. Testing Ajax Applications
 
Automated acceptance test
Automated acceptance testAutomated acceptance test
Automated acceptance test
 
JavaFX for Business Application Developers
JavaFX for Business Application DevelopersJavaFX for Business Application Developers
JavaFX for Business Application Developers
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
Improving Your Selenium WebDriver Tests - Belgium testing days_2016
Improving Your Selenium WebDriver Tests - Belgium testing days_2016Improving Your Selenium WebDriver Tests - Belgium testing days_2016
Improving Your Selenium WebDriver Tests - Belgium testing days_2016
 

More from Sauce Labs

Simplify Salesforce Testing with AI-Driven Codeless Tools
Simplify Salesforce Testing with AI-Driven Codeless ToolsSimplify Salesforce Testing with AI-Driven Codeless Tools
Simplify Salesforce Testing with AI-Driven Codeless Tools
Sauce Labs
 
Testing on Mobile Devices with Location Services
Testing on Mobile Devices with Location ServicesTesting on Mobile Devices with Location Services
Testing on Mobile Devices with Location Services
Sauce Labs
 
Your Framework for Success: introduction to JavaScript Testing at Scale
Your Framework for Success: introduction to JavaScript Testing at ScaleYour Framework for Success: introduction to JavaScript Testing at Scale
Your Framework for Success: introduction to JavaScript Testing at Scale
Sauce Labs
 
Automating Hybrid Applications with Appium
Automating Hybrid Applications with AppiumAutomating Hybrid Applications with Appium
Automating Hybrid Applications with Appium
Sauce Labs
 
Quality at Speed: More API Testing, Less UI Testing
Quality at Speed: More API Testing, Less UI TestingQuality at Speed: More API Testing, Less UI Testing
Quality at Speed: More API Testing, Less UI Testing
Sauce Labs
 
Creating Digital Confidence with Test Automation
Creating Digital Confidence with Test AutomationCreating Digital Confidence with Test Automation
Creating Digital Confidence with Test Automation
Sauce Labs
 
Just Enough (Automated) Testing
Just Enough (Automated) TestingJust Enough (Automated) Testing
Just Enough (Automated) Testing
Sauce Labs
 
Using Axe to Add Accessibility Checks to Your Existing Selenium Tests
Using Axe to Add Accessibility Checks to Your Existing Selenium TestsUsing Axe to Add Accessibility Checks to Your Existing Selenium Tests
Using Axe to Add Accessibility Checks to Your Existing Selenium Tests
Sauce Labs
 
How Open Source Helps to Bring Back Product Obsession
How Open Source Helps to Bring Back Product ObsessionHow Open Source Helps to Bring Back Product Obsession
How Open Source Helps to Bring Back Product Obsession
Sauce Labs
 
Webinar: A Sneak Peek at Selenium 4 with Simon Stewart
Webinar: A Sneak Peek at Selenium 4 with Simon StewartWebinar: A Sneak Peek at Selenium 4 with Simon Stewart
Webinar: A Sneak Peek at Selenium 4 with Simon Stewart
Sauce Labs
 
[Deu] Test Automatisierung Mit Web Driver.io
[Deu] Test Automatisierung Mit Web Driver.io[Deu] Test Automatisierung Mit Web Driver.io
[Deu] Test Automatisierung Mit Web Driver.io
Sauce Labs
 
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...
Sauce Labs
 
Accelerating Your Digital Agenda with Continuous Testing ft. Forrester
Accelerating Your Digital Agenda with Continuous Testing ft. ForresterAccelerating Your Digital Agenda with Continuous Testing ft. Forrester
Accelerating Your Digital Agenda with Continuous Testing ft. Forrester
Sauce Labs
 
How to Measure Success in Continuous Testing
How to Measure Success in Continuous TestingHow to Measure Success in Continuous Testing
How to Measure Success in Continuous Testing
Sauce Labs
 
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...
Sauce Labs
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation
Sauce Labs
 
Sauce Labs Webinar: Rising Importance of Software Testing
Sauce Labs Webinar: Rising Importance of Software TestingSauce Labs Webinar: Rising Importance of Software Testing
Sauce Labs Webinar: Rising Importance of Software Testing
Sauce Labs
 
BDD With Selenide by Hima Bindu Peteti
BDD With Selenide by Hima Bindu PetetiBDD With Selenide by Hima Bindu Peteti
BDD With Selenide by Hima Bindu Peteti
Sauce Labs
 
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Sauce Labs
 
Continuous Delivery for "Mature" Codebases by Melisa Benua
Continuous Delivery for "Mature" Codebases by Melisa BenuaContinuous Delivery for "Mature" Codebases by Melisa Benua
Continuous Delivery for "Mature" Codebases by Melisa Benua
Sauce Labs
 

More from Sauce Labs (20)

Simplify Salesforce Testing with AI-Driven Codeless Tools
Simplify Salesforce Testing with AI-Driven Codeless ToolsSimplify Salesforce Testing with AI-Driven Codeless Tools
Simplify Salesforce Testing with AI-Driven Codeless Tools
 
Testing on Mobile Devices with Location Services
Testing on Mobile Devices with Location ServicesTesting on Mobile Devices with Location Services
Testing on Mobile Devices with Location Services
 
Your Framework for Success: introduction to JavaScript Testing at Scale
Your Framework for Success: introduction to JavaScript Testing at ScaleYour Framework for Success: introduction to JavaScript Testing at Scale
Your Framework for Success: introduction to JavaScript Testing at Scale
 
Automating Hybrid Applications with Appium
Automating Hybrid Applications with AppiumAutomating Hybrid Applications with Appium
Automating Hybrid Applications with Appium
 
Quality at Speed: More API Testing, Less UI Testing
Quality at Speed: More API Testing, Less UI TestingQuality at Speed: More API Testing, Less UI Testing
Quality at Speed: More API Testing, Less UI Testing
 
Creating Digital Confidence with Test Automation
Creating Digital Confidence with Test AutomationCreating Digital Confidence with Test Automation
Creating Digital Confidence with Test Automation
 
Just Enough (Automated) Testing
Just Enough (Automated) TestingJust Enough (Automated) Testing
Just Enough (Automated) Testing
 
Using Axe to Add Accessibility Checks to Your Existing Selenium Tests
Using Axe to Add Accessibility Checks to Your Existing Selenium TestsUsing Axe to Add Accessibility Checks to Your Existing Selenium Tests
Using Axe to Add Accessibility Checks to Your Existing Selenium Tests
 
How Open Source Helps to Bring Back Product Obsession
How Open Source Helps to Bring Back Product ObsessionHow Open Source Helps to Bring Back Product Obsession
How Open Source Helps to Bring Back Product Obsession
 
Webinar: A Sneak Peek at Selenium 4 with Simon Stewart
Webinar: A Sneak Peek at Selenium 4 with Simon StewartWebinar: A Sneak Peek at Selenium 4 with Simon Stewart
Webinar: A Sneak Peek at Selenium 4 with Simon Stewart
 
[Deu] Test Automatisierung Mit Web Driver.io
[Deu] Test Automatisierung Mit Web Driver.io[Deu] Test Automatisierung Mit Web Driver.io
[Deu] Test Automatisierung Mit Web Driver.io
 
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...
 
Accelerating Your Digital Agenda with Continuous Testing ft. Forrester
Accelerating Your Digital Agenda with Continuous Testing ft. ForresterAccelerating Your Digital Agenda with Continuous Testing ft. Forrester
Accelerating Your Digital Agenda with Continuous Testing ft. Forrester
 
How to Measure Success in Continuous Testing
How to Measure Success in Continuous TestingHow to Measure Success in Continuous Testing
How to Measure Success in Continuous Testing
 
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation
 
Sauce Labs Webinar: Rising Importance of Software Testing
Sauce Labs Webinar: Rising Importance of Software TestingSauce Labs Webinar: Rising Importance of Software Testing
Sauce Labs Webinar: Rising Importance of Software Testing
 
BDD With Selenide by Hima Bindu Peteti
BDD With Selenide by Hima Bindu PetetiBDD With Selenide by Hima Bindu Peteti
BDD With Selenide by Hima Bindu Peteti
 
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
 
Continuous Delivery for "Mature" Codebases by Melisa Benua
Continuous Delivery for "Mature" Codebases by Melisa BenuaContinuous Delivery for "Mature" Codebases by Melisa Benua
Continuous Delivery for "Mature" Codebases by Melisa Benua
 

Recently uploaded

SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 

Recently uploaded (20)

SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 

Gilt Groupe's Selenium 2 Conversion Challenges

  • 2.   Background     Tools     Past     Challenges     “The  Decision”       Benefits     Conversion     Present     Examples  
  • 3.   Custom  framework  written  in  Java     In  house  test  management  system     TestElements   ▪  Projects   ▪  Test  Suites     Test  Cases     Actions     Data  Elements     Object  Store     Fully  integrated  with  our  Framework  
  • 4.   Eclipse  IDE     TestElements     Results  Viewer     +  iPad  version     SauceLabs     SeleniumIDE     Firebug     Ivy     Git  -­‐  version  control  
  • 5.   Selenium  1  &  Selenium  Grid     6  lab  machines   ▪  Mac’s  and  PCs  with  different  browser  combinations     RC  for  each  desired  browser  on  local  machines     RC  for  each  desired  browser  on  each  remote   machine  running  on  SeleniumGrid  
  • 6.   Maintenance  of  RC’s     If  1  RC  had  an  issue,  must  kill  all  RC’s,  restart   HUB,  and  restart  each  one  again     >  800  test  cases  executed  amongst  6   machines  multiple  times  a  day   ▪  (approx.  2500/day)     Parallel  execution  was  challenging     Cross  browser  testing  
  • 7.   Solved  every  challenge  on  the  list     Selenium  RC’s  in  the  cloud     No  maintenance     Video     Replaced  Selenium  with   WebDriverBackedSelenium     Selenium  1  backwards  compatible     New  code  would  use  WebDriver  
  • 8.   WebDriverBackedSelenium  on  Sauce     Each  selenium  1  command  would  spit  back   javascript,  causing  very  slow  test  execution  times     WebDriver  commands  were  OK     Did  not  realize  this  right  away     Santiago  the  ‘Sauce  Ninja’  
  • 9.
  • 10.   Convert  EVERYTHING…     No  more  XPATH!     CSS_SELECTOR   ▪  Native  support  on  each  browser     ID     LINK_TEXT  
  • 11.   Improve  execution  speed  on  Sauce       (no  more  JavaScript)     Better  emulation  of  user  interactions     Better  API  –  More  object  oriented     Stability     Improve  logic  in  codebase     Don’t  want  to  be  left  behind     New  version  of  Selenium  all  the  time     Bug  fixes,  improvements     Feel  they  care  about  the  product     Fun  
  • 12.   Line  by  Line  conversion     remove  any  selenium1  references     Not  enough  documentation  existed     Not  everything  appeared  to  be  easily   converted     hover  /  mouseOver     select  from  combo  box     attachFile  
  • 13.   Different  functionality     Objects  must  be  visible  before  acting  on  them     Type  mechanism  does  not  clear  the  text  field   before  filling  it  out  *  changed  in  2.6     Selenium2  is  blocking   ▪  No  more  waitForPageToLoad(….)       Use  ExpectedCondition  class  to  wait  for   presence  /  visibility  of  element     Different  names     no  more  isElementPresent  /  isVisible    
  • 14.   Simplify  codebase     Find  Selenium2  conversion  for  everything   and  create  wrapper  in  our  Framework     SeleniumBase.java  was  born     Custom  WebDriver  commands     All  scripts  extend  from  this  class     Less  clutter     Maintainability  
  • 15.
  • 16.
  • 17. public WebDriver getWebDriver() { return webDriver; } public WebElement getWebElement(LocatorType locatorType, String locator) throws Exception { return getWebDriver().findElement(by(locatorType, locator)); } public List<WebElement> getWebElements(LocatorType locatorType, String locator) throws Exception { return getWebDriver().findElements(by(locatorType, locator)); } public boolean isElementPresent(LocatorType locatorType, String locator) throws Exception { return getWebElements(locatorType,locator).size() > 0; } public boolean isVisible(LocatorType locatorType, String locator) throws Exception { return getWebElement(locatorType,locator).isDisplayed(); } public void waitForElementPresent(final LocatorType locatorType, final String locator) throws Exception { getWait().until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { try { return isElementPresent(locatorType, locator); } catch (Exception e) { return false; } } }); }  
  • 18. public void clearAndSendKeys(LocatorType locatorType, String locator, String keys) throws Exception { getWebElement(locatorType, locator).clear(); getWebElement(locatorType, locator).sendKeys(keys); } public void check(LocatorType locatorType, String locator) throws Exception { if(!getWebElement(locatorType, locator).isSelected()) getWebElement(locatorType, locator).click(); } public void mouseOver(LocatorType locatorType, String locator) throws Exception{ Actions action = new Actions(getWebDriver()); action.moveToElement(getWebElement(locatorType, locator)).perform(); } public void selectComboBoxByVisibleText(LocatorType locatorType, String locator, String value) throws Exception{ Select comboBox = new Select(getWebElement(locatorType, locator)); comboBox.selectByVisibleText(value); } public void switchToWindow(String windowTitle){ Set<String> windowHandles = getWebDriver().getWindowHandles(); Iterator<String> iter = windowHandles.iterator(); while(iter.hasNext()){ String currentWindowHandle = iter.next(); getWebDriver().switchTo().window(currentWindowHandle); if(getWebDriver().getTitle().equals(windowTitle)) break; } }  
  • 19. clearAndSendKeys(LocatorType.ID,"Gilt Login Page","Email Address Text Field”,emailAddress); clearAndSendKeys(LocatorType.ID,"Gilt Login Page","Password Text Field”,password); getWebElement(LocatorType.ID,"Gilt Login Page","Sign In Button").click();
  • 20. waitForElementPresentAndVisible(LocatorType.CSS_SELECTOR,"Gilt Carousel Bar","Selected Tab"); mouseOver(LocatorType.CSS_SELECTOR,"Gilt Carousel Bar","Selected Tab"); List<WebElement> saleTitle = getWebElements(LocatorType.CSS_SELECTOR,"Gilt Carousel Bar","Selected Tab Sale Links");  
  • 21. List<WebElement> productLookTitleAll = getWebElements(LocatorType.CSS_SELECTOR,"Gilt Product Listing Page","Product Look Title Links"); List<WebElement> productLookTitleAvailable = getWebElements(LocatorType.CSS_SELECTOR,"Gilt Product Listing Page","Available Product Look Title Links"); List<WebElement> productLookSoldOut = getWebElements(LocatorType.CSS_SELECTOR,"Gilt Product Listing Page","Sold Out Product Look Title Links");  
  • 22.   99.9999%  converted  to  Selenium2   ▪  attachFile()     Stable  results     Clean,  easy  to  manage  code     SeleniumBase  continues  to  grow     Ivy  to  manage  dependencies     Upgrade  to  Selenium  2.x  quickly     Push  changes  to  team  through  Git  
  • 23.   Make  the  switch     Spread  the  work  out  to  save  time     Be  aware  of  the  differences  b/t  Sel1  and  Sel2     More  documentation     Modularize  common  selenium  commands     Selenium  Users  google  group  
  • 24.   Question???     Comments….   Email:  jsanchez@gilt.com     Invitation:  http://www.gilt.com/invite/josesanchez