SlideShare a Scribd company logo
1 of 111
Download to read offline
Cross-­‐browser

              tes*ng     in	
  the



                     real	
  world
Mar*n	
  Kleppmann              rapportive
http://www.flickr.com/photos/stuart_spivack/2322070560/
Cross-­‐browser

              tes*ng     in	
  the



                     real	
  world
Mar*n	
  Kleppmann              rapportive
Cross-­‐browser
                                     urgh

              tes*ng     in	
  the



                     real	
  world
Mar*n	
  Kleppmann              rapportive
Cross-­‐browser

              tes*ng     in	
  the



                     real	
  world
Mar*n	
  Kleppmann              rapportive
Cross-­‐browser

              tes*ng     in	
  the
     mess
         y
                     real	
  world
Mar*n	
  Kleppmann              rapportive
Cross-­‐browser

              tes*ng     in	
  the



                     real	
  world
Mar*n	
  Kleppmann              rapportive
Cross-­‐browser                 t?
                                a ?
                              h
                             w ow
                              h
              tes*ng     in	
  the



                     real	
  world
Mar*n	
  Kleppmann              rapportive
Tes*ng	
  what?
Tes*ng	
  what?
 Unit	
  tes(ng
 Applica(on
 End-­‐to-­‐end
 (incl.	
  external	
  services)
Tes*ng	
  why?
Tes*ng	
  why?
  Func(onal
    Visual
 Performance
Load/Scalability
   Security
   Usability
Tes*ng	
  how?
Tes*ng	
  how?
   Automated
(TDD,	
  BDD,	
  regression	
  tests,
         smoke	
  tests,	
  ...)


        Manual
   (exploratory,	
  scripted,
     user-­‐centered,	
  ...)
Tes*ng	
  dimensions
Unit   Applica(on     End-­‐to-­‐end

Func(onal Visual Performance
Load      Security      Usability

   Automated         Manual
Tes*ng	
  dimensions
Unit   Applica(on     End-­‐to-­‐end

Func(onal Visual Performance
Load      Security      Usability

   Automated         Manual
Tes*ng	
  dimensions
Unit   Applica(on    End-­‐to-­‐end
                  RSpec/
Func(onal Visual Performance
                  Shoulda/
Load     Security whatever
                     Usability

   Automated        Manual
Tes*ng	
  dimensions
Unit   Applica(on     End-­‐to-­‐end

Func(onal Visual Performance
Load      Security      Usability

   Automated         Manual
Tes*ng	
  dimensions
Unit   Applica(on     End-­‐to-­‐end

Func(onal Visual Performance
Load      Security      Usability

   Automated         Manual
(Side-­‐note)
                     	
  wri te
              a n    ’t
    Yo u 	
  c           cs
              R S   p  e
                         b i li ty
               r	
  u s a
        fo
Tes*ng	
  dimensions
Unit   Applica(on     End-­‐to-­‐end

Func(onal Visual Performance
Load      Security      Usability

   Automated         Manual
Tes*ng	
  dimensions
Unit   Applica(on     End-­‐to-­‐end

Func(onal Visual Performance
Load      Security      Usability

   Automated         Manual
Me
http://www.flickr.com/photos/71263221@N00/4230334515/
P.S.	
  We’re	
  hiring!
http://www.flickr.com/photos/snake-eyes/410092369/
Anyway.
C++
C++
C++




WebDriver
WebDriver
   C++
WebDriver
WebDriver
Selenium	
  2
WebDriver
Cucumber/RSpec/whatever

      Selenium	
  2
       WebDriver
Cucumber/RSpec/whatever

      Selenium	
  2
       WebDriver
Cucumber/RSpec/whatever

Selenium	
  2
WebDriver
Cucumber/RSpec/whatever



Selenium	
  2
WebDriver
Cucumber/RSpec/whatever



Selenium	
  2
WebDriver
Cucumber/RSpec/whatever

           Capybara

Selenium	
  2
WebDriver
Cucumber/RSpec/whatever

           Capybara

Selenium	
  2
                *Wa(r
WebDriver
Cucumber/RSpec/whatever

           Capybara

Selenium	
  2
                *Wa(r
WebDriver
Cucumber/RSpec/whatever

           Capybara

Selenium	
  2
                *Wa(r
WebDriver
Cucumber/RSpec/whatever

           Capybara
                         Culerity
Selenium	
  2
                *Wa(r
WebDriver                 Celerity
                        HTML
                         Unit
Cucumber/RSpec/whatever

           Capybara
                         Culerity
Selenium	
  2
                *Wa(r
WebDriver                 Celerity
                        HTML
                         Unit
Cucumber/RSpec/whatever

           Capybara
                       Culerity
OMGWTFBBQ?!
Selenium	
  2
    *Wa(r
WebDriver               Celerity
                      HTML
                       Unit
Cucumber/RSpec/whatever

           Capybara
                         Culerity
Selenium	
  2
                *Wa(r
WebDriver                 Celerity
                        HTML
                         Unit
Cucumber/RSpec/whatever

           Capybara
                         Culerity
Selenium	
  2
                *Wa(r
WebDriver                 Celerity
                        HTML
                         Unit
http://www.flickr.com/photos/snake-eyes/449442699/
Cucumber/RSpec/whatever

           Capybara
                         Culerity
Selenium	
  2
                *Wa(r
WebDriver                 Celerity
                        HTML
                         Unit
Cucumber/RSpec/whatever

           Capybara
                         Culerity
Selenium	
  2
                *Wa(r
WebDriver                 Celerity
                        HTML
                         Unit
Cucumber/RSpec/whatever

           Capybara
                         Culerity
Selenium	
  2
                *Wa(r
WebDriver                 Celerity
                        HTML
                         Unit
require 'watir'
Watir::Browser.default = 'firefox'

describe 'Google' do
  before(:each) { @browser = Watir::Browser.new }
  after(:each) { @browser.close }

  it 'should return search results for "hello world"' do
    @browser.goto "http://www.google.co.uk"
    @browser.text_field(:name, "q").set("hello world")
    @browser.button(:name, "btnG").click
    @browser.contains_text(
      "Hello world program - Wikipedia").should be_true
  end
end
Cucumber/RSpec/whatever

           Capybara
                         Culerity
Selenium	
  2
                *Wa(r
WebDriver                 Celerity
                        HTML
                         Unit
Cucumber/RSpec/whatever

           Capybara
                         Culerity
Selenium	
  2
                *Wa(r
WebDriver                 Celerity
                        HTML
                         Unit
require 'selenium-webdriver'

describe 'Google' do
  before(:each){ @browser = Selenium::WebDriver.for :firefox }
  after(:each) { @browser.quit }

  it 'should return search results for "hello world"' do
    @browser.navigate.to "http://www.google.co.uk"
    @browser.find_element(:name, "q").send_keys("hello world")
    @browser.find_element(:name, "btnG").submit
    @browser.find_element(:partial_link_text,
      "Hello world program - Wikipedia")
  end
end
Cucumber/RSpec/whatever

           Capybara
                         Culerity
Selenium	
  2
                *Wa(r
WebDriver                 Celerity
                        HTML
                         Unit
Cucumber/RSpec/whatever

           Capybara
                         Culerity
Selenium	
  2
                *Wa(r
WebDriver                 Celerity
                        HTML
                         Unit
require 'capybara'; require 'capybara/dsl'
Capybara.default_driver = :selenium

Spec::Runner.configure do |config|
  config.include(Capybara, :type => :integration)
  config.before(:each) { Capybara.reset_sessions! }
end

describe 'Google' do
  it 'should return search results for "hello world"' do
    visit "http://www.google.co.uk"
    fill_in "q", :with => "hello world"
    click "Google Search"
    page.should have_content(
      "Hello world program - Wikipedia")
  end
end
# API beauty contest!


goto "http://www.google.co.uk"              # Watir
navigate.to "http://www.google.co.uk"       # WebDriver
visit "http://www.google.co.uk"             # Capybara


text_field(:name, "q").set("hello world")   # Watir
find_element(:name, "q").send_keys("hello world") # WD
fill_in "q", :with => "hello world"         # Capybara


button(:name, "btnG").click                 # Watir
find_element(:name, "btnG").submit          # WebDriver
click "Google Search"                       # Capybara


# You choose...
Cucumber

           Capybara
                         Culerity
Selenium	
  2
                *Wa(r
WebDriver                 Celerity
                        HTML
                         Unit
Feature: Looking up a contact
  In order to understand my contacts better
  As a Gmail user
  I want to see social information next to my email thread

 Scenario: Load an email conversation
   Given I am logged into Gmail
   And Rapportive is loaded
   When I search for "martin@rapportive.com"
   And I click on the conversation with subject "Testing 1 2 3"
   Then I should be on a conversation view
   And Rapportive should show "Co-founder at Rapportive"
Given /^I am logged into Gmail$/ do
  visit 'https://mail.google.com/a/rapportive.com'
  fill_in 'Email', :with => 'test'
  fill_in 'Passwd', :with => GMAIL_TEST_ACCOUNT_PASSWORD
  click 'Sign in'
end



Then /^Rapportive should show "([^"]*)"$/ do |text_to_show|
  page.within_frame('canvas_frame') do
    page.within(:css, '#rapportive-sidebar') do
      page.should have_content(text_to_show)
    end
  end
end
Ok.
FEI
    (Frequently	
  
Encountered	
  Issues)
10.	
  Time	
  dependence
10.	
  Time	
  dependence
  ‣ Modify	
  date(mes	
  in	
  DB	
  
    using	
  models
  ‣ Create	
  wrapper	
  around	
  
    Time.now
9.	
  Real-­‐*me	
  comms
8.	
  Managing	
  test	
  VMs
8.	
  Managing	
  test	
  VMs
  ‣ Very	
  tedious	
  (updates	
  etc.)
  ‣ Test	
  management	
  
    infrastructure
  ‣ Commercial	
  services	
  (e.g.	
  
    Sauce	
  Labs,	
  BrowserMob)
7.	
  Random	
  DOM	
  IDs
7.	
  Random	
  DOM	
  IDs
 ‣ Ext.js,	
  GWT,	
  Cappuccino
 ‣ Use	
  toolkit	
  APIs
   // Selecting an item in a Ext.js Combo Box
   var combo = Ext.getCmp('countryComboBox');
   combo.setValue('Germany');
   // setValue() doesn't trigger the event
   combo.fireEvent('select');
6.	
  Tes*ng	
  layout
6.	
  Tes*ng	
  layout
‣ Automa(cally	
  spoWng	
  
  broken	
  layout?	
  srsly?
‣ Interes(ng	
  experiment
  h"p://code.google.com/p/figh/ng-­‐layout-­‐bugs/
$(‘*’).css(‘color’,	
  ‘white’);
$(‘*’).css(‘color’,	
  ‘black’);
image1	
  –	
  image2	
  =	
  ...
5.	
  Unit	
  tes*ng	
  JS
5.	
  Unit	
  tes*ng	
  JS
‣ Command	
  line	
  &&	
  browser
‣ DOM	
  manipula(on	
  →	
  HTML	
  
  fixtures	
  	
  (...and	
  rollback?)
5.	
  Unit	
  tes*ng	
  JS
‣ JSpec
 h"p://visionmedia.github.com/jspec/

‣ Blue	
  Ridge/Screw.Unit
 h"p://github.com/relevance/blue-­‐ridge

‣ JsTestDriver
 h"p://code.google.com/p/js-­‐test-­‐driver/
4.	
  Model	
  layer	
  access
4.	
  Model	
  layer	
  access
 Tests
            HTTP/Framework
                   Views
              Controllers
                 Models
4.	
  Model	
  layer	
  access
  Tests
            HTTP/Framework
                   Views
              Controllers
Factory/
Fixtures?        Models
4.	
  Model	
  layer	
  access
  ‣ Violates	
  abstrac(on
  ‣ BUT:	
  factories	
  =	
  only	
  sane	
  
    way	
  of	
  managing	
  DB	
  state
Factory.define :user do |u|
  u.first_name 'John'
  u.last_name 'Doe'
  u.admin false
end



Given /^I am on John's profile page$/ do
  user = Factory.create(:user)
  visit user_url(user)
end
3.	
  Star*ng	
  state
3.	
  Star*ng	
  state
‣ Previous,	
  failed	
  tests
‣ Cookies,	
  browser	
  cache
‣ Unexpected	
  persistent	
  state
3.	
  Star*ng	
  state
‣ Long-­‐running	
  transac(on	
  &	
  
  rollback
  (e.g.	
  Cucumber	
  per-­‐scenario	
  transac/on	
  rollback)

‣ Clean	
  up	
  database
  h"p://github.com/bmabey/database_cleaner
2.	
  Parallel	
  test	
  runs
2.	
  Parallel	
  test	
  runs
‣ End-­‐to-­‐end	
  tests	
  are	
  SLOW
‣ Start	
  up	
  several	
  browsers
  (TestSwarm,	
  Selenium	
  Grid,	
  ...)

‣ BUT:	
  concurrent	
  
  modifica(on	
  of	
  DB	
  state!
2.	
  Parallel	
  test	
  runs
One	
  DB	
  per	
  test	
  process
‣ h"p://github.com/grosser/parallel_tests
‣ h"p://github.com/qxjit/deep-­‐test
2.	
  Parallel	
  test	
  runs
Caveat:	
  state	
  outside	
  of	
  your	
  
control
‣ e.g.	
  OAuth	
  status
‣ use	
  mocks,	
  or	
  work	
  around	
  it
1.
Fragility
Fragility
(tests	
  break	
  too	
  easily,	
  
 even	
  if	
  the	
  app	
  is	
  ok)
2	
  schools	
  of	
  thought
1. “Disposable”	
  test	
  scripts
   (invest	
  licle	
  effort,	
  use	
  
   recording	
  tools)

2. “Engineered”	
  test	
  scripts
   (use	
  carefully	
  designed	
  
   abstrac(ons)
Feature: Looking up a contact
  In order to understand my contacts better
  As a Gmail user
  I want to see social information next to my email thread

 Scenario: Load an email conversation
   Given I am logged into Gmail
   And Rapportive is loaded
   When I search for "martin@rapportive.com"
   And I click on the conversation with subject "Testing 1 2 3"
   Then I should be on a conversation view
   And Rapportive should show "Co-founder at Rapportive"
Fragility
No	
  silver	
  bullet,	
  obvious	
  stuff:
‣ Consistent	
  naming	
  of	
  IDs	
  &	
  
  CSS	
  classes
‣ Maintain	
  &	
  refactor	
  your	
  
  tests
kthxbai



Mar*n	
  Kleppmann
mar*n@rappor*ve.com
@mar*nkl              rapportive

More Related Content

What's hot

A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019Matt Raible
 
Testing Web Applications
Testing Web ApplicationsTesting Web Applications
Testing Web ApplicationsSeth McLaughlin
 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011Nicholas Zakas
 
Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015Matt Raible
 
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015Matt Raible
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedInYevgeniy Brikman
 
Front-End Testing: Demystified
Front-End Testing: DemystifiedFront-End Testing: Demystified
Front-End Testing: DemystifiedSeth McLaughlin
 
Developing Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJSDeveloping Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJSShekhar Gulati
 
High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010Nicholas Zakas
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudCarlos Sanchez
 
Testing Mobile JavaScript
Testing Mobile JavaScriptTesting Mobile JavaScript
Testing Mobile JavaScriptjeresig
 
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh PrajapatiSession on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh PrajapatiAgile Testing Alliance
 
Integration Testing With Cucumber How To Test Anything J A O O 2009
Integration Testing With  Cucumber    How To Test Anything    J A O O 2009Integration Testing With  Cucumber    How To Test Anything    J A O O 2009
Integration Testing With Cucumber How To Test Anything J A O O 2009Dr Nic Williams
 
Session on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaSession on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaAgile Testing Alliance
 
Join the darkside: Selenium testing with Nightwatch.js
Join the darkside: Selenium testing with Nightwatch.jsJoin the darkside: Selenium testing with Nightwatch.js
Join the darkside: Selenium testing with Nightwatch.jsSeth McLaughlin
 
jQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksjQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksAddy Osmani
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introductionRasheed Waraich
 
Selenium Tips & Tricks - StarWest 2015
Selenium Tips & Tricks - StarWest 2015Selenium Tips & Tricks - StarWest 2015
Selenium Tips & Tricks - StarWest 2015Andrew Krug
 
Avoiding Common Pitfalls in Ember.js
Avoiding Common Pitfalls in Ember.jsAvoiding Common Pitfalls in Ember.js
Avoiding Common Pitfalls in Ember.jsAlex Speller
 
Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Matt Raible
 

What's hot (20)

A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019A Gentle Introduction to Angular Schematics - Angular SF 2019
A Gentle Introduction to Angular Schematics - Angular SF 2019
 
Testing Web Applications
Testing Web ApplicationsTesting Web Applications
Testing Web Applications
 
High Performance JavaScript 2011
High Performance JavaScript 2011High Performance JavaScript 2011
High Performance JavaScript 2011
 
Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015Developing, Testing and Scaling with Apache Camel - UberConf 2015
Developing, Testing and Scaling with Apache Camel - UberConf 2015
 
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
#NoXML: Eliminating XML in Spring Projects - SpringOne 2GX 2015
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedIn
 
Front-End Testing: Demystified
Front-End Testing: DemystifiedFront-End Testing: Demystified
Front-End Testing: Demystified
 
Developing Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJSDeveloping Modern Java Web Applications with Java EE 7 and AngularJS
Developing Modern Java Web Applications with Java EE 7 and AngularJS
 
High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The Cloud
 
Testing Mobile JavaScript
Testing Mobile JavaScriptTesting Mobile JavaScript
Testing Mobile JavaScript
 
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh PrajapatiSession on Selenium 4 : What’s coming our way? by Hitesh Prajapati
Session on Selenium 4 : What’s coming our way? by Hitesh Prajapati
 
Integration Testing With Cucumber How To Test Anything J A O O 2009
Integration Testing With  Cucumber    How To Test Anything    J A O O 2009Integration Testing With  Cucumber    How To Test Anything    J A O O 2009
Integration Testing With Cucumber How To Test Anything J A O O 2009
 
Session on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaSession on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh Gundecha
 
Join the darkside: Selenium testing with Nightwatch.js
Join the darkside: Selenium testing with Nightwatch.jsJoin the darkside: Selenium testing with Nightwatch.js
Join the darkside: Selenium testing with Nightwatch.js
 
jQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksjQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & Tricks
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
Selenium Tips & Tricks - StarWest 2015
Selenium Tips & Tricks - StarWest 2015Selenium Tips & Tricks - StarWest 2015
Selenium Tips & Tricks - StarWest 2015
 
Avoiding Common Pitfalls in Ember.js
Avoiding Common Pitfalls in Ember.jsAvoiding Common Pitfalls in Ember.js
Avoiding Common Pitfalls in Ember.js
 
Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018Bootiful Development with Spring Boot and React - UberConf 2018
Bootiful Development with Spring Boot and React - UberConf 2018
 

Viewers also liked

Cross browser testing
Cross browser testingCross browser testing
Cross browser testingSauce Labs
 
How to do better Quality Assurance for Cross-Browser Testing
How to do better Quality Assurance for Cross-Browser TestingHow to do better Quality Assurance for Cross-Browser Testing
How to do better Quality Assurance for Cross-Browser TestingBOSS Webtech
 
Making cross browser tests beautiful
Making cross browser tests beautifulMaking cross browser tests beautiful
Making cross browser tests beautifulMeaghan Lewis
 
Cross Browser Testing: El reto de la eficiencia
Cross Browser Testing: El reto de la eficienciaCross Browser Testing: El reto de la eficiencia
Cross Browser Testing: El reto de la eficienciaSoftware Guru
 
Testing Content Effectiveness - Penn State 2015
Testing Content Effectiveness - Penn State 2015Testing Content Effectiveness - Penn State 2015
Testing Content Effectiveness - Penn State 2015NewCity
 
RWD Testing - Baiju Joseph
RWD Testing - Baiju JosephRWD Testing - Baiju Joseph
RWD Testing - Baiju JosephThoughtworks
 
Testing – responsive web design
Testing – responsive web designTesting – responsive web design
Testing – responsive web designBaiju Joseph
 
Cross browser testing using BrowserStack
Cross browser testing using BrowserStack Cross browser testing using BrowserStack
Cross browser testing using BrowserStack RapidValue
 
12 Tips to Become a more Professional Tester
12 Tips to Become a more Professional Tester12 Tips to Become a more Professional Tester
12 Tips to Become a more Professional TesterPractiTest
 
Building frameworks over Selenium
Building frameworks over SeleniumBuilding frameworks over Selenium
Building frameworks over SeleniumCristian COȚOI
 
SAP MATERIAL MANAGEMENT(MM) ONLINE TRAINING IN USA|AUSTRALIA
SAP MATERIAL MANAGEMENT(MM) ONLINE TRAINING IN USA|AUSTRALIASAP MATERIAL MANAGEMENT(MM) ONLINE TRAINING IN USA|AUSTRALIA
SAP MATERIAL MANAGEMENT(MM) ONLINE TRAINING IN USA|AUSTRALIASAP Training
 
Tools that help and speed up RWD dev
Tools that help  and speed up RWD devTools that help  and speed up RWD dev
Tools that help and speed up RWD devMatjaž Korošec
 
The what, why and how of web analytics testing
The what, why and how of web analytics testingThe what, why and how of web analytics testing
The what, why and how of web analytics testingAnand Bagmar
 
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 TestingSauce Labs
 
Being a professional software tester
Being a professional software testerBeing a professional software tester
Being a professional software testerAnton Keks
 
Stc 2016 regional-round-iot testing in agile.
Stc 2016 regional-round-iot testing in agile.Stc 2016 regional-round-iot testing in agile.
Stc 2016 regional-round-iot testing in agile.Archana Krushnan
 
SAP Testing Services
SAP Testing ServicesSAP Testing Services
SAP Testing Servicesr_shanki
 
Continuous Integration with Maven for Android apps
Continuous Integration with Maven for Android appsContinuous Integration with Maven for Android apps
Continuous Integration with Maven for Android appsHugo Josefson
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Gridnirvdrum
 

Viewers also liked (20)

Cross browser testing
Cross browser testingCross browser testing
Cross browser testing
 
How to do better Quality Assurance for Cross-Browser Testing
How to do better Quality Assurance for Cross-Browser TestingHow to do better Quality Assurance for Cross-Browser Testing
How to do better Quality Assurance for Cross-Browser Testing
 
Making cross browser tests beautiful
Making cross browser tests beautifulMaking cross browser tests beautiful
Making cross browser tests beautiful
 
Cross Browser Testing: El reto de la eficiencia
Cross Browser Testing: El reto de la eficienciaCross Browser Testing: El reto de la eficiencia
Cross Browser Testing: El reto de la eficiencia
 
Testing Content Effectiveness - Penn State 2015
Testing Content Effectiveness - Penn State 2015Testing Content Effectiveness - Penn State 2015
Testing Content Effectiveness - Penn State 2015
 
RWD Testing - Baiju Joseph
RWD Testing - Baiju JosephRWD Testing - Baiju Joseph
RWD Testing - Baiju Joseph
 
Testing – responsive web design
Testing – responsive web designTesting – responsive web design
Testing – responsive web design
 
Cross browser testing using BrowserStack
Cross browser testing using BrowserStack Cross browser testing using BrowserStack
Cross browser testing using BrowserStack
 
Content testing
Content testingContent testing
Content testing
 
12 Tips to Become a more Professional Tester
12 Tips to Become a more Professional Tester12 Tips to Become a more Professional Tester
12 Tips to Become a more Professional Tester
 
Building frameworks over Selenium
Building frameworks over SeleniumBuilding frameworks over Selenium
Building frameworks over Selenium
 
SAP MATERIAL MANAGEMENT(MM) ONLINE TRAINING IN USA|AUSTRALIA
SAP MATERIAL MANAGEMENT(MM) ONLINE TRAINING IN USA|AUSTRALIASAP MATERIAL MANAGEMENT(MM) ONLINE TRAINING IN USA|AUSTRALIA
SAP MATERIAL MANAGEMENT(MM) ONLINE TRAINING IN USA|AUSTRALIA
 
Tools that help and speed up RWD dev
Tools that help  and speed up RWD devTools that help  and speed up RWD dev
Tools that help and speed up RWD dev
 
The what, why and how of web analytics testing
The what, why and how of web analytics testingThe what, why and how of web analytics testing
The what, why and how of web analytics testing
 
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
 
Being a professional software tester
Being a professional software testerBeing a professional software tester
Being a professional software tester
 
Stc 2016 regional-round-iot testing in agile.
Stc 2016 regional-round-iot testing in agile.Stc 2016 regional-round-iot testing in agile.
Stc 2016 regional-round-iot testing in agile.
 
SAP Testing Services
SAP Testing ServicesSAP Testing Services
SAP Testing Services
 
Continuous Integration with Maven for Android apps
Continuous Integration with Maven for Android appsContinuous Integration with Maven for Android apps
Continuous Integration with Maven for Android apps
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Grid
 

Similar to Cross-browser testing in the real world

Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyFabio Akita
 
Heavenly hell – automated tests at scale wojciech seliga
Heavenly hell – automated tests at scale   wojciech seligaHeavenly hell – automated tests at scale   wojciech seliga
Heavenly hell – automated tests at scale wojciech seligaAtlassian
 
Socket applications
Socket applicationsSocket applications
Socket applicationsJoão Moura
 
Capybara and cucumber with DSL using ruby
Capybara and cucumber with DSL using rubyCapybara and cucumber with DSL using ruby
Capybara and cucumber with DSL using rubyDeepak Chandella
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudCarlos Sanchez
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Matt Raible
 
Fisl - Deployment
Fisl - DeploymentFisl - Deployment
Fisl - DeploymentFabio Akita
 
Selenium 2 - PyCon 2011
Selenium 2 - PyCon 2011Selenium 2 - PyCon 2011
Selenium 2 - PyCon 2011hugs
 
Integration Test Cucumber + Webrat + Selenium
Integration Test Cucumber + Webrat + SeleniumIntegration Test Cucumber + Webrat + Selenium
Integration Test Cucumber + Webrat + Seleniumtka
 
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsugFrom Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsugToshiaki Maki
 
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & CucumberUdaya Kiran
 
Integration and Acceptance Testing
Integration and Acceptance TestingIntegration and Acceptance Testing
Integration and Acceptance TestingAlan Hecht
 
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFabio Akita
 
Cucumber Presentation Kiev Meet Up
Cucumber Presentation Kiev Meet UpCucumber Presentation Kiev Meet Up
Cucumber Presentation Kiev Meet Updimakovalenko
 
Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011dimakovalenko
 

Similar to Cross-browser testing in the real world (20)

Sprockets
SprocketsSprockets
Sprockets
 
Capybara
CapybaraCapybara
Capybara
 
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com RubyConsegi 2010 - Dicas de Desenvolvimento Web com Ruby
Consegi 2010 - Dicas de Desenvolvimento Web com Ruby
 
Heavenly hell – automated tests at scale wojciech seliga
Heavenly hell – automated tests at scale   wojciech seligaHeavenly hell – automated tests at scale   wojciech seliga
Heavenly hell – automated tests at scale wojciech seliga
 
Socket applications
Socket applicationsSocket applications
Socket applications
 
Speedy TDD with Rails
Speedy TDD with RailsSpeedy TDD with Rails
Speedy TDD with Rails
 
Capybara and cucumber with DSL using ruby
Capybara and cucumber with DSL using rubyCapybara and cucumber with DSL using ruby
Capybara and cucumber with DSL using ruby
 
Mojolicious
MojoliciousMojolicious
Mojolicious
 
Enterprise Build And Test In The Cloud
Enterprise Build And Test In The CloudEnterprise Build And Test In The Cloud
Enterprise Build And Test In The Cloud
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
 
Fisl - Deployment
Fisl - DeploymentFisl - Deployment
Fisl - Deployment
 
Selenium 2 - PyCon 2011
Selenium 2 - PyCon 2011Selenium 2 - PyCon 2011
Selenium 2 - PyCon 2011
 
Integration Test Cucumber + Webrat + Selenium
Integration Test Cucumber + Webrat + SeleniumIntegration Test Cucumber + Webrat + Selenium
Integration Test Cucumber + Webrat + Selenium
 
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsugFrom Spring Boot 2.2 to Spring Boot 2.3 #jsug
From Spring Boot 2.2 to Spring Boot 2.3 #jsug
 
Sinatra for REST services
Sinatra for REST servicesSinatra for REST services
Sinatra for REST services
 
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber       Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
Behavioural Testing Ruby/Rails Apps @ Scale - Rspec & Cucumber
 
Integration and Acceptance Testing
Integration and Acceptance TestingIntegration and Acceptance Testing
Integration and Acceptance Testing
 
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com RubyFisl 11 - Dicas de Desenvolvimento Web com Ruby
Fisl 11 - Dicas de Desenvolvimento Web com Ruby
 
Cucumber Presentation Kiev Meet Up
Cucumber Presentation Kiev Meet UpCucumber Presentation Kiev Meet Up
Cucumber Presentation Kiev Meet Up
 
Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011Selenium and Cucumber Selenium Conf 2011
Selenium and Cucumber Selenium Conf 2011
 

Recently uploaded

Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfjimielynbastida
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024BookNet Canada
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 

Recently uploaded (20)

Science&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdfScience&tech:THE INFORMATION AGE STS.pdf
Science&tech:THE INFORMATION AGE STS.pdf
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
New from BookNet Canada for 2024: BNC BiblioShare - Tech Forum 2024
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Panjabi Bagh 🔝 9953056974 🔝 Delhi escort Service
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 

Cross-browser testing in the real world