SlideShare a Scribd company logo
Friday, November 5, 2010
Friday, November 5, 2010
London Selenium Meetup
Friday, November 5, 2010
How Mozilla Uses Selenium
Stephen Donner
November 3, 2010
London Selenium Meetup
Friday, November 5, 2010
3
Friday, November 5, 2010
Overview
• Humble Beginnings
• First (Real) Cut at Automation
• Current Architecture (diagram)
• Hudson (Continuous Integration)
• Our Driver / TestRunner Implementation
• Thanks, Python+urllib
• Page Object Model
• The Future
• Questions?
3
Friday, November 5, 2010
Humble Beginnings
• All IDE, all the time
• Necessary evil, but painful
• No scripted runs, inadequate reporting
• Graduated to RC
• Still uncoordinated, ad-hoc running
• We all ran tests from the command-line
• Still no great reporting/build history
4
Friday, November 5, 2010
First (Real) Cut at Automation
• TCparams.py - sort options, applications (still
exists)
• AMOfunctions.py - 2,677 lines
• Really meaty -- see https://wiki.mozilla.org/AMOfunctions
• AMOlocators.py - 1,230 lines
• Flat file of XPath and CSS locators
5
Friday, November 5, 2010
Current Architecture
6
Friday, November 5, 2010
Hudson
• Gives us:
• Reporting / notification
• Email / status page / IRC
• Scheduling
• Build history
7
Friday, November 5, 2010
Our Driver / TestRunner Implementation
• Allows us to abstract code from core (driver)
• tests.py - list of smoke / bft / fft, etc. tests
• consolidates all testfiles in one location, per-project
• ability to tag tests:
8
Friday, November 5, 2010
Our Driver / TestRunner Implementation
• suite.py - driver magic; uses Python’s unittest module
– spawns a new, per-browser process
– runs all tests in parallel among browsers
– only time-bound by the longest-running test (/me glares at IE)
9
Friday, November 5, 2010
Our Driver / TestRunner Implementation
• Running tests for specific features is as simple as:
• python suite.py fft
• python suite.py bft collections (logical AND operation)
• etc...
10
Friday, November 5, 2010
Thanks, Python+urllib
• Staging servers down, much?
• Two ways of dealing with this:
1. From suite.py:
2. From SUMO’s sumo_page.py:
11
Friday, November 5, 2010
Page Object Model
page.py
• Base class for ALL pages; most common functions (click, verify, etc.)
• Individual page classes derive from it
12
Friday, November 5, 2010
Page Object Model
sumo_page.py
• All common elements of a SUMO page: log in/out, My Account, header/
footer, etc.
13
Friday, November 5, 2010
Page Object Model
support_home_page.py
• Page elements are defined as class variables
• Operations that can be performed on the above are defined as functions
14
Friday, November 5, 2010
Page Object Model
test_search_on_home_page.py
15
Friday, November 5, 2010
Page Object Model
• Benefits:
• Easy to read (and write) tests
• Reduces the amount of duplicated code
• Less ramp-up time for new testers + community
• No more giant function files (distributed among pages)
• Caveats:
• All tests can now fail if a common element is broken
• e.g..: AMO footer
• Multiple imports
16
Friday, November 5, 2010
The Future
• Projects in the POM where it makes sense
(typically the case)
• Build-in screen / video captures of failures?
• Selenium 2; update our tests
• Native HTTP header manipulation?
• (Specifically, user-agent/accept-headers)
17
Friday, November 5, 2010
Resources / References
• WebQA homepage: https://wiki.mozilla.org/
QA/Execution/Web_Testing
• Automation page on QMO: http://
quality.mozilla.org/docs/webqa/projects/
automation/
• WebQA Mailing List (public):
mozwebqa@mozilla.org
18
Friday, November 5, 2010
Questions?
19
Friday, November 5, 2010
stephend@mozilla.com
Friday, November 5, 2010
Thanks!
stephend@mozilla.com
Friday, November 5, 2010

More Related Content

What's hot

Playing with playgrounds
Playing with playgroundsPlaying with playgrounds
Playing with playgrounds
Eurico Doirado
 
Do you queue
Do you queueDo you queue
Do you queue
10n Software, LLC
 
10 Things you should know about Ruby
10 Things you should know about Ruby10 Things you should know about Ruby
10 Things you should know about Ruby
sikachu
 
Next generation frontend tooling
Next generation frontend toolingNext generation frontend tooling
Next generation frontend tooling
pksjce
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScript
Rob Scaduto
 
Boots and Shoeboxes
Boots and ShoeboxesBoots and Shoeboxes
Boots and Shoeboxes
Jonathan Jackson
 

What's hot (6)

Playing with playgrounds
Playing with playgroundsPlaying with playgrounds
Playing with playgrounds
 
Do you queue
Do you queueDo you queue
Do you queue
 
10 Things you should know about Ruby
10 Things you should know about Ruby10 Things you should know about Ruby
10 Things you should know about Ruby
 
Next generation frontend tooling
Next generation frontend toolingNext generation frontend tooling
Next generation frontend tooling
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScript
 
Boots and Shoeboxes
Boots and ShoeboxesBoots and Shoeboxes
Boots and Shoeboxes
 

Similar to "How Mozilla Uses Selenium"

Feature Bits at LSSC10
Feature  Bits at LSSC10Feature  Bits at LSSC10
Feature Bits at LSSC10
Erik Sowa
 
Selenium at Mozilla: An Essential Element to our Success
Selenium at Mozilla: An Essential Element to our SuccessSelenium at Mozilla: An Essential Element to our Success
Selenium at Mozilla: An Essential Element to our Success
Stephen Donner
 
App Engine Meetup
App Engine MeetupApp Engine Meetup
App Engine Meetup
John Woodell
 
Mozilla: Mozmill meets L10n
Mozilla: Mozmill meets L10nMozilla: Mozmill meets L10n
Mozilla: Mozmill meets L10n
Henrik Skupin
 
Speed up large-scale ML/DL offline inference job with Alluxio
Speed up large-scale ML/DL offline inference job with AlluxioSpeed up large-scale ML/DL offline inference job with Alluxio
Speed up large-scale ML/DL offline inference job with Alluxio
Alluxio, Inc.
 
Railsconf 2010
Railsconf 2010Railsconf 2010
Railsconf 2010
John Woodell
 
conjoon - The Open Source Webmail Client
conjoon - The Open Source Webmail Clientconjoon - The Open Source Webmail Client
conjoon - The Open Source Webmail Client
Thorsten Suckow-Homberg
 
O365Engage17 - How to Automate SharePoint Provisioning with PNP Framework
O365Engage17 - How to Automate SharePoint Provisioning with PNP FrameworkO365Engage17 - How to Automate SharePoint Provisioning with PNP Framework
O365Engage17 - How to Automate SharePoint Provisioning with PNP Framework
NCCOMMS
 
BP214 IBM Lotus Symphony : Finally, A Developer's Friend
BP214 IBM Lotus Symphony : Finally, A Developer's FriendBP214 IBM Lotus Symphony : Finally, A Developer's Friend
BP214 IBM Lotus Symphony : Finally, A Developer's Friend
John Head
 
Plone Testing Tools And Techniques
Plone Testing Tools And TechniquesPlone Testing Tools And Techniques
Plone Testing Tools And Techniques
Jordan Baker
 
Jenkins (war)stories
Jenkins (war)storiesJenkins (war)stories
Jenkins (war)stories
Toomas Römer
 
The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010
Voxilate
 
PowerShell for the Anxious ITPro
PowerShell for the Anxious ITProPowerShell for the Anxious ITPro
PowerShell for the Anxious ITPro
Jason Himmelstein
 
What you can do In WatiR
What you can do In WatiRWhat you can do In WatiR
What you can do In WatiR
Wesley Chen
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby Conference
John Woodell
 
Browser Fuzzing with a Twist (and a Shake) -- ZeroNights 2015
Browser Fuzzing with a Twist (and a Shake) -- ZeroNights 2015Browser Fuzzing with a Twist (and a Shake) -- ZeroNights 2015
Browser Fuzzing with a Twist (and a Shake) -- ZeroNights 2015
Jeremy Brown
 
Performance and Abstractions
Performance and AbstractionsPerformance and Abstractions
Performance and Abstractions
Metosin Oy
 
A 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developersA 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developers
Mark Leusink
 
ProjectFork 4.1 in Joomla! 3.x
ProjectFork 4.1 in Joomla! 3.xProjectFork 4.1 in Joomla! 3.x
ProjectFork 4.1 in Joomla! 3.x
Russell Searle
 
Automation using-phing
Automation using-phingAutomation using-phing
Automation using-phing
Rajat Pandit
 

Similar to "How Mozilla Uses Selenium" (20)

Feature Bits at LSSC10
Feature  Bits at LSSC10Feature  Bits at LSSC10
Feature Bits at LSSC10
 
Selenium at Mozilla: An Essential Element to our Success
Selenium at Mozilla: An Essential Element to our SuccessSelenium at Mozilla: An Essential Element to our Success
Selenium at Mozilla: An Essential Element to our Success
 
App Engine Meetup
App Engine MeetupApp Engine Meetup
App Engine Meetup
 
Mozilla: Mozmill meets L10n
Mozilla: Mozmill meets L10nMozilla: Mozmill meets L10n
Mozilla: Mozmill meets L10n
 
Speed up large-scale ML/DL offline inference job with Alluxio
Speed up large-scale ML/DL offline inference job with AlluxioSpeed up large-scale ML/DL offline inference job with Alluxio
Speed up large-scale ML/DL offline inference job with Alluxio
 
Railsconf 2010
Railsconf 2010Railsconf 2010
Railsconf 2010
 
conjoon - The Open Source Webmail Client
conjoon - The Open Source Webmail Clientconjoon - The Open Source Webmail Client
conjoon - The Open Source Webmail Client
 
O365Engage17 - How to Automate SharePoint Provisioning with PNP Framework
O365Engage17 - How to Automate SharePoint Provisioning with PNP FrameworkO365Engage17 - How to Automate SharePoint Provisioning with PNP Framework
O365Engage17 - How to Automate SharePoint Provisioning with PNP Framework
 
BP214 IBM Lotus Symphony : Finally, A Developer's Friend
BP214 IBM Lotus Symphony : Finally, A Developer's FriendBP214 IBM Lotus Symphony : Finally, A Developer's Friend
BP214 IBM Lotus Symphony : Finally, A Developer's Friend
 
Plone Testing Tools And Techniques
Plone Testing Tools And TechniquesPlone Testing Tools And Techniques
Plone Testing Tools And Techniques
 
Jenkins (war)stories
Jenkins (war)storiesJenkins (war)stories
Jenkins (war)stories
 
The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010The Reluctant SysAdmin : 360|iDev Austin 2010
The Reluctant SysAdmin : 360|iDev Austin 2010
 
PowerShell for the Anxious ITPro
PowerShell for the Anxious ITProPowerShell for the Anxious ITPro
PowerShell for the Anxious ITPro
 
What you can do In WatiR
What you can do In WatiRWhat you can do In WatiR
What you can do In WatiR
 
Red Dirt Ruby Conference
Red Dirt Ruby ConferenceRed Dirt Ruby Conference
Red Dirt Ruby Conference
 
Browser Fuzzing with a Twist (and a Shake) -- ZeroNights 2015
Browser Fuzzing with a Twist (and a Shake) -- ZeroNights 2015Browser Fuzzing with a Twist (and a Shake) -- ZeroNights 2015
Browser Fuzzing with a Twist (and a Shake) -- ZeroNights 2015
 
Performance and Abstractions
Performance and AbstractionsPerformance and Abstractions
Performance and Abstractions
 
A 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developersA 20 minute introduction to AngularJS for XPage developers
A 20 minute introduction to AngularJS for XPage developers
 
ProjectFork 4.1 in Joomla! 3.x
ProjectFork 4.1 in Joomla! 3.xProjectFork 4.1 in Joomla! 3.x
ProjectFork 4.1 in Joomla! 3.x
 
Automation using-phing
Automation using-phingAutomation using-phing
Automation using-phing
 

More from Stephen Donner

Firefox and web performance testing, all hands sf 2018
Firefox and web performance testing, all hands sf 2018Firefox and web performance testing, all hands sf 2018
Firefox and web performance testing, all hands sf 2018
Stephen Donner
 
Web-Performance Testing @ Mozilla: present...and future?
Web-Performance Testing @ Mozilla: present...and future?Web-Performance Testing @ Mozilla: present...and future?
Web-Performance Testing @ Mozilla: present...and future?
Stephen Donner
 
Mozilla Web QA: Who, What, Why, How
Mozilla Web QA: Who, What, Why, HowMozilla Web QA: Who, What, Why, How
Mozilla Web QA: Who, What, Why, How
Stephen Donner
 
Firefox OS real-phone automation lab: goals, challenges, and successes
Firefox OS real-phone automation lab: goals, challenges, and successesFirefox OS real-phone automation lab: goals, challenges, and successes
Firefox OS real-phone automation lab: goals, challenges, and successes
Stephen Donner
 
B2G QA-automation lab presentation
B2G QA-automation lab presentationB2G QA-automation lab presentation
B2G QA-automation lab presentation
Stephen Donner
 
Web QA Gaia/B2G/Firefox OS front-end automation
Web QA Gaia/B2G/Firefox OS front-end automationWeb QA Gaia/B2G/Firefox OS front-end automation
Web QA Gaia/B2G/Firefox OS front-end automation
Stephen Donner
 
How WebQA Reponds to, Plans For, and Executes on, New Projects
How WebQA Reponds to, Plans For, and Executes on, New ProjectsHow WebQA Reponds to, Plans For, and Executes on, New Projects
How WebQA Reponds to, Plans For, and Executes on, New Projects
Stephen Donner
 
Continuous deployment
Continuous deploymentContinuous deployment
Continuous deployment
Stephen Donner
 
Selenium lightning-talk
Selenium lightning-talkSelenium lightning-talk
Selenium lightning-talk
Stephen Donner
 
Towards a More Secure, Reliable, and Performant Web: Tools / Approaches to Help
Towards a More Secure, Reliable, and Performant Web: Tools / Approaches to HelpTowards a More Secure, Reliable, and Performant Web: Tools / Approaches to Help
Towards a More Secure, Reliable, and Performant Web: Tools / Approaches to Help
Stephen Donner
 
Testing Mozilla Web Properties
Testing Mozilla Web PropertiesTesting Mozilla Web Properties
Testing Mozilla Web Properties
Stephen Donner
 

More from Stephen Donner (11)

Firefox and web performance testing, all hands sf 2018
Firefox and web performance testing, all hands sf 2018Firefox and web performance testing, all hands sf 2018
Firefox and web performance testing, all hands sf 2018
 
Web-Performance Testing @ Mozilla: present...and future?
Web-Performance Testing @ Mozilla: present...and future?Web-Performance Testing @ Mozilla: present...and future?
Web-Performance Testing @ Mozilla: present...and future?
 
Mozilla Web QA: Who, What, Why, How
Mozilla Web QA: Who, What, Why, HowMozilla Web QA: Who, What, Why, How
Mozilla Web QA: Who, What, Why, How
 
Firefox OS real-phone automation lab: goals, challenges, and successes
Firefox OS real-phone automation lab: goals, challenges, and successesFirefox OS real-phone automation lab: goals, challenges, and successes
Firefox OS real-phone automation lab: goals, challenges, and successes
 
B2G QA-automation lab presentation
B2G QA-automation lab presentationB2G QA-automation lab presentation
B2G QA-automation lab presentation
 
Web QA Gaia/B2G/Firefox OS front-end automation
Web QA Gaia/B2G/Firefox OS front-end automationWeb QA Gaia/B2G/Firefox OS front-end automation
Web QA Gaia/B2G/Firefox OS front-end automation
 
How WebQA Reponds to, Plans For, and Executes on, New Projects
How WebQA Reponds to, Plans For, and Executes on, New ProjectsHow WebQA Reponds to, Plans For, and Executes on, New Projects
How WebQA Reponds to, Plans For, and Executes on, New Projects
 
Continuous deployment
Continuous deploymentContinuous deployment
Continuous deployment
 
Selenium lightning-talk
Selenium lightning-talkSelenium lightning-talk
Selenium lightning-talk
 
Towards a More Secure, Reliable, and Performant Web: Tools / Approaches to Help
Towards a More Secure, Reliable, and Performant Web: Tools / Approaches to HelpTowards a More Secure, Reliable, and Performant Web: Tools / Approaches to Help
Towards a More Secure, Reliable, and Performant Web: Tools / Approaches to Help
 
Testing Mozilla Web Properties
Testing Mozilla Web PropertiesTesting Mozilla Web Properties
Testing Mozilla Web Properties
 

Recently uploaded

Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
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
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Zilliz
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
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.
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Zilliz
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
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
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 

Recently uploaded (20)

Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
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 ...
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 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
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
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
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 

"How Mozilla Uses Selenium"

  • 4. How Mozilla Uses Selenium Stephen Donner November 3, 2010 London Selenium Meetup Friday, November 5, 2010
  • 6. Overview • Humble Beginnings • First (Real) Cut at Automation • Current Architecture (diagram) • Hudson (Continuous Integration) • Our Driver / TestRunner Implementation • Thanks, Python+urllib • Page Object Model • The Future • Questions? 3 Friday, November 5, 2010
  • 7. Humble Beginnings • All IDE, all the time • Necessary evil, but painful • No scripted runs, inadequate reporting • Graduated to RC • Still uncoordinated, ad-hoc running • We all ran tests from the command-line • Still no great reporting/build history 4 Friday, November 5, 2010
  • 8. First (Real) Cut at Automation • TCparams.py - sort options, applications (still exists) • AMOfunctions.py - 2,677 lines • Really meaty -- see https://wiki.mozilla.org/AMOfunctions • AMOlocators.py - 1,230 lines • Flat file of XPath and CSS locators 5 Friday, November 5, 2010
  • 10. Hudson • Gives us: • Reporting / notification • Email / status page / IRC • Scheduling • Build history 7 Friday, November 5, 2010
  • 11. Our Driver / TestRunner Implementation • Allows us to abstract code from core (driver) • tests.py - list of smoke / bft / fft, etc. tests • consolidates all testfiles in one location, per-project • ability to tag tests: 8 Friday, November 5, 2010
  • 12. Our Driver / TestRunner Implementation • suite.py - driver magic; uses Python’s unittest module – spawns a new, per-browser process – runs all tests in parallel among browsers – only time-bound by the longest-running test (/me glares at IE) 9 Friday, November 5, 2010
  • 13. Our Driver / TestRunner Implementation • Running tests for specific features is as simple as: • python suite.py fft • python suite.py bft collections (logical AND operation) • etc... 10 Friday, November 5, 2010
  • 14. Thanks, Python+urllib • Staging servers down, much? • Two ways of dealing with this: 1. From suite.py: 2. From SUMO’s sumo_page.py: 11 Friday, November 5, 2010
  • 15. Page Object Model page.py • Base class for ALL pages; most common functions (click, verify, etc.) • Individual page classes derive from it 12 Friday, November 5, 2010
  • 16. Page Object Model sumo_page.py • All common elements of a SUMO page: log in/out, My Account, header/ footer, etc. 13 Friday, November 5, 2010
  • 17. Page Object Model support_home_page.py • Page elements are defined as class variables • Operations that can be performed on the above are defined as functions 14 Friday, November 5, 2010
  • 19. Page Object Model • Benefits: • Easy to read (and write) tests • Reduces the amount of duplicated code • Less ramp-up time for new testers + community • No more giant function files (distributed among pages) • Caveats: • All tests can now fail if a common element is broken • e.g..: AMO footer • Multiple imports 16 Friday, November 5, 2010
  • 20. The Future • Projects in the POM where it makes sense (typically the case) • Build-in screen / video captures of failures? • Selenium 2; update our tests • Native HTTP header manipulation? • (Specifically, user-agent/accept-headers) 17 Friday, November 5, 2010
  • 21. Resources / References • WebQA homepage: https://wiki.mozilla.org/ QA/Execution/Web_Testing • Automation page on QMO: http:// quality.mozilla.org/docs/webqa/projects/ automation/ • WebQA Mailing List (public): mozwebqa@mozilla.org 18 Friday, November 5, 2010