SlideShare ist ein Scribd-Unternehmen logo
1 von 14
[B2G | Gaia | Firefox OS] Front-end
Automation in Python (Marionette)

           Stephen Donner
               Web QA
              March 20, 2013
Overview

•
    Genesis / Introduction
•
    Infrastructure (hardware)
•
    Software stack
•
    Builds in Jenkins / Continuous Integration
•
    Test coverage / Capabilities
•
    By the numbers
•
    Will it blen^H^H run? (demo!)
•
    Contribute!
•
    Questions?
Genesis / Introduction




Initially, “just a B2G QA thing”
http://www.flickr.com/photos/daniel_gies/5041121388/
                sizes/z/in/photostream/
Genesis / Introduction




Hard to keep good secrets for too long!

  ...so we expanded coverage + infra
     http://memegenerator.net/instance/27635541
Infrastructure (hardware)




7 Unagis, tethered via USB to 7 Mac Minis,
        running Ubuntu 12.04 LTS

                          Fun facts:
      1) Must have earbuds plugged in for radio tests to
                            work
     2) For the photo/video tests to work, lens/aperture
             must not be blocked or in the dark
Software Stack



•
  Marionette (https://developer.mozilla.org/en-US/docs/Marionette) -
testing server that sits in B2G
   •
     Selenium-backed WebDriver
   •
     marionette_client – Python abstraction layer for Marionette
•
  Gaiatest (https://pypi.python.org/pypi/gaiatest) - wrapper around
Python unnitests that runs the tests
•
  Gaia UI Tests – test framework comprising setUp, tearDown, API
wrappers, and the tests themselves
Builds in Jenkins/Continuous Integration




     Web QA helps set up, scale, and provide
     upkeep for more than just our UI tests
http://qa-selenium.mv.mozilla.com:8080/view/B2G/
By the Numbers
     ●
       Started on November 11, 2012
     ●
       25 individual contributors [1]
       ●
         From Taipei, Romania, UK, Canada, USA, Beijing
     ●
       89 [2] tests, consisting of:
       ●
         ~ 19 unit tests
       ●
         80 UI tests
       ●
         ~1hour per build, including initial flash

                         [1] https://github.com/mozilla/gaia-ui-tests/graphs
[2] http://qa-selenium.mv.mozilla.com:8080/view/B2G/job/b2g.unagi.gaia.nightly.ui/lastBuild/
Test coverage / Capabilities
 Sampling of coverage:
•
  Dialer (make/receive calls, test IMEI #)
•
  Contacts (call, delete, create, add photo to, send SMS to)
•
  Send/receive SMS
•
  Camera (add, delete photo/videos)
•
  Clock (add/delete alarms)
•
  Calendar (add event, assert today's date)
•
  Browser (load pages over EDGE, Wi-Fi, bookmark, navigate back)
•
  Play a YouTube video
•
  Marketplace (search, install, load, delete apps)
•
  Everything.me (browse to and load/install an app)
•
  Changing wallpaper
•
  Radio (adding/remove station, dial frequency up/down)
•
  Keyboard
•
  Notification bar
•
  and more...
Test coverage / Capabilities
Capabilities:
•
  we push to device (media files – photos, contacts, etc.)
•
  we also capture the app HTML, take screenshots on failure for post-test debugging, and
store the latest run's logcat (full, debug)
•
  we test the default/empty states
  •
    in-between tests, we use the devicemanager API to iterate through and delete media
    files, delete all contacts, clear Wi-Fi networks, restore modified settings to default, set
    volume to 0
•
  manifest.ini
    •
      gives us the ability to tell which tests to run, where
    •
      attributes:
    antenna, b2g, wifi, lan, camera, xfail, panda, sdcard, qemu, bluetooth
    •

    •
Challenges
•
  Two moving targets: B2G (Gaia/Gonk) + Marionette
•
  Marionette-enabled builds are not identical to non-engineering builds
  •
    different online/offline handling (patch pending)
•
  changes to how/when adb / remote debugging work in Gaia
•
  memory leak(s)
•
  feature work
•
  performance refactoring
•
  Event-model changes:
  •
    .click() → .tap()
•
  async JavaScript – team's expertise is (still) largely Python
•
  very dynamic, heavy HTML5 apps, with CSS3 usage – rotates, transforms, SVG – hard to
find and test location and state of the app
•
  infrastructure set up
  •
    acquiring Unagi phones (and keeping them healthy)
  •
    SIMs (unlimited plans)
  •
    figuring out and maintaining a distributed, consistent format to store each phone's info
Will it blen^H^H^ (demo!)



https://www.youtube.com/watch?v=CC2ywYeP-4s
Contribute!




•
    Repository:
     •
       https://github.com/mozilla/gaia-ui-tests
•
    How to contribute:
     •
         https://github.com/mozilla/gaia-ui-tests/blob/master/CONTRIBUTING.md
•
    Open issues up for grabs!
     •
         https://github.com/mozilla/gaia-ui-tests/issues?
     direction=desc&labels=difficulty+beginner&sort=created&state=open
IRC:
•

  •
    #mozwebqa (core Gaia UI Tests)
  •
    #ateam (perf tests)
Questions?

Weitere ähnliche Inhalte

Andere mochten auch

Some of the Ormita Team
Some of the Ormita TeamSome of the Ormita Team
Some of the Ormita TeamDaniel Evans
 
Ormita Commerce Network Overview
Ormita Commerce Network OverviewOrmita Commerce Network Overview
Ormita Commerce Network OverviewDaniel Evans
 
Ormita South Africa - New Members 14 March 2014
Ormita South Africa - New Members 14 March 2014Ormita South Africa - New Members 14 March 2014
Ormita South Africa - New Members 14 March 2014Daniel Evans
 
Ormita奥美达 广告易货方案 5.19
Ormita奥美达 广告易货方案 5.19Ormita奥美达 广告易货方案 5.19
Ormita奥美达 广告易货方案 5.19Daniel Evans
 
What if Google was a Database?
What if Google was a Database?What if Google was a Database?
What if Google was a Database?steveplunkett
 
Testing Mozilla Web Properties
Testing Mozilla Web PropertiesTesting Mozilla Web Properties
Testing Mozilla Web PropertiesStephen 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, HowStephen 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 successesStephen Donner
 
"How Mozilla Uses Selenium"
"How Mozilla Uses Selenium""How Mozilla Uses Selenium"
"How Mozilla Uses Selenium"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 ProjectsStephen Donner
 
Advertise without cash中文版
Advertise without cash中文版Advertise without cash中文版
Advertise without cash中文版Daniel Evans
 
India Media on Barter
India Media on BarterIndia Media on Barter
India Media on BarterDaniel Evans
 
한발 앞서 배워보는 Xamarin overview
한발 앞서 배워보는 Xamarin overview한발 앞서 배워보는 Xamarin overview
한발 앞서 배워보는 Xamarin overviewYoung D
 
B2G QA-automation lab presentation
B2G QA-automation lab presentationB2G QA-automation lab presentation
B2G QA-automation lab presentationStephen Donner
 

Andere mochten auch (18)

Some of the Ormita Team
Some of the Ormita TeamSome of the Ormita Team
Some of the Ormita Team
 
Collect Bad Debt
Collect Bad DebtCollect Bad Debt
Collect Bad Debt
 
Ormita Commerce Network Overview
Ormita Commerce Network OverviewOrmita Commerce Network Overview
Ormita Commerce Network Overview
 
Ormita South Africa - New Members 14 March 2014
Ormita South Africa - New Members 14 March 2014Ormita South Africa - New Members 14 March 2014
Ormita South Africa - New Members 14 March 2014
 
Ormita奥美达 广告易货方案 5.19
Ormita奥美达 广告易货方案 5.19Ormita奥美达 广告易货方案 5.19
Ormita奥美达 广告易货方案 5.19
 
What if Google was a Database?
What if Google was a Database?What if Google was a Database?
What if Google was a Database?
 
vane y marcia
vane y marciavane y marcia
vane y marcia
 
About Ormita
About OrmitaAbout Ormita
About Ormita
 
Testing Mozilla Web Properties
Testing Mozilla Web PropertiesTesting Mozilla Web Properties
Testing Mozilla Web Properties
 
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
 
"How Mozilla Uses Selenium"
"How Mozilla Uses Selenium""How Mozilla Uses Selenium"
"How Mozilla Uses Selenium"
 
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
 
Advertise without cash中文版
Advertise without cash中文版Advertise without cash中文版
Advertise without cash中文版
 
Continuous deployment
Continuous deploymentContinuous deployment
Continuous deployment
 
India Media on Barter
India Media on BarterIndia Media on Barter
India Media on Barter
 
한발 앞서 배워보는 Xamarin overview
한발 앞서 배워보는 Xamarin overview한발 앞서 배워보는 Xamarin overview
한발 앞서 배워보는 Xamarin overview
 
B2G QA-automation lab presentation
B2G QA-automation lab presentationB2G QA-automation lab presentation
B2G QA-automation lab presentation
 

Ähnlich wie Web QA Gaia/B2G/Firefox OS front-end automation

Ship It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemShip It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemYi-Ting Cheng
 
Backbone/Marionette recap [2015]
Backbone/Marionette recap [2015]Backbone/Marionette recap [2015]
Backbone/Marionette recap [2015]Andrii Lundiak
 
Shift Left Mobile Application Testing
Shift Left Mobile Application TestingShift Left Mobile Application Testing
Shift Left Mobile Application TestingJosiah Renaudin
 
Modeveast Appcelerator Presentation
Modeveast Appcelerator PresentationModeveast Appcelerator Presentation
Modeveast Appcelerator PresentationAaron Saunders
 
Open Source Junction: Apache Wookie and W3C Widgets
Open Source Junction: Apache Wookie and W3C WidgetsOpen Source Junction: Apache Wookie and W3C Widgets
Open Source Junction: Apache Wookie and W3C Widgetsscottw
 
QA Process Overview for Firefox OS 2014
QA Process Overview for Firefox OS 2014QA Process Overview for Firefox OS 2014
QA Process Overview for Firefox OS 2014Anthony Chung
 
John Resig Beijing 2010 (English Version)
John Resig Beijing 2010 (English Version)John Resig Beijing 2010 (English Version)
John Resig Beijing 2010 (English Version)Jia Mi
 
2015 jcconf-h2s-devops-practice
2015 jcconf-h2s-devops-practice2015 jcconf-h2s-devops-practice
2015 jcconf-h2s-devops-practiceHochi Chuang
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGuillaume Laforge
 
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...NETWAYS
 
Cerebro for vfx eng
Cerebro for vfx engCerebro for vfx eng
Cerebro for vfx engCineSoft
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery OverviewWill Iverson
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at ScaleKris Buytaert
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Applitools
 
Knowage essential training
Knowage essential trainingKnowage essential training
Knowage essential trainingKNOWAGE
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]Dynatrace
 
Escaping Test Hell - ACCU 2014
Escaping Test Hell - ACCU 2014Escaping Test Hell - ACCU 2014
Escaping Test Hell - ACCU 2014Wojciech Seliga
 

Ähnlich wie Web QA Gaia/B2G/Firefox OS front-end automation (20)

Ship It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails EcosystemShip It ! with Ruby/ Rails Ecosystem
Ship It ! with Ruby/ Rails Ecosystem
 
Backbone/Marionette recap [2015]
Backbone/Marionette recap [2015]Backbone/Marionette recap [2015]
Backbone/Marionette recap [2015]
 
Shift Left Mobile Application Testing
Shift Left Mobile Application TestingShift Left Mobile Application Testing
Shift Left Mobile Application Testing
 
Modeveast Appcelerator Presentation
Modeveast Appcelerator PresentationModeveast Appcelerator Presentation
Modeveast Appcelerator Presentation
 
Selenium cloud
Selenium cloudSelenium cloud
Selenium cloud
 
Open Source Junction: Apache Wookie and W3C Widgets
Open Source Junction: Apache Wookie and W3C WidgetsOpen Source Junction: Apache Wookie and W3C Widgets
Open Source Junction: Apache Wookie and W3C Widgets
 
QA Process Overview for Firefox OS 2014
QA Process Overview for Firefox OS 2014QA Process Overview for Firefox OS 2014
QA Process Overview for Firefox OS 2014
 
John Resig Beijing 2010 (English Version)
John Resig Beijing 2010 (English Version)John Resig Beijing 2010 (English Version)
John Resig Beijing 2010 (English Version)
 
2015 jcconf-h2s-devops-practice
2015 jcconf-h2s-devops-practice2015 jcconf-h2s-devops-practice
2015 jcconf-h2s-devops-practice
 
Google App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and GaelykGoogle App Engine Java, Groovy and Gaelyk
Google App Engine Java, Groovy and Gaelyk
 
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
OSDC 2016 - Continous Integration in Data Centers - Further 3 Years later by ...
 
Cerebro for vfx eng
Cerebro for vfx engCerebro for vfx eng
Cerebro for vfx eng
 
Continuous Delivery Overview
Continuous Delivery OverviewContinuous Delivery Overview
Continuous Delivery Overview
 
Arif_Shaik_CV
Arif_Shaik_CVArif_Shaik_CV
Arif_Shaik_CV
 
Deploying software at Scale
Deploying software at ScaleDeploying software at Scale
Deploying software at Scale
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
 
Knowage essential training
Knowage essential trainingKnowage essential training
Knowage essential training
 
Mayur_Resume (2) (1)
Mayur_Resume (2) (1)Mayur_Resume (2) (1)
Mayur_Resume (2) (1)
 
From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]From 0 to DevOps in 80 Days [Webinar Replay]
From 0 to DevOps in 80 Days [Webinar Replay]
 
Escaping Test Hell - ACCU 2014
Escaping Test Hell - ACCU 2014Escaping Test Hell - ACCU 2014
Escaping Test Hell - ACCU 2014
 

Kürzlich hochgeladen

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 

Kürzlich hochgeladen (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 

Web QA Gaia/B2G/Firefox OS front-end automation

  • 1. [B2G | Gaia | Firefox OS] Front-end Automation in Python (Marionette) Stephen Donner Web QA March 20, 2013
  • 2. Overview • Genesis / Introduction • Infrastructure (hardware) • Software stack • Builds in Jenkins / Continuous Integration • Test coverage / Capabilities • By the numbers • Will it blen^H^H run? (demo!) • Contribute! • Questions?
  • 3. Genesis / Introduction Initially, “just a B2G QA thing” http://www.flickr.com/photos/daniel_gies/5041121388/ sizes/z/in/photostream/
  • 4. Genesis / Introduction Hard to keep good secrets for too long! ...so we expanded coverage + infra http://memegenerator.net/instance/27635541
  • 5. Infrastructure (hardware) 7 Unagis, tethered via USB to 7 Mac Minis, running Ubuntu 12.04 LTS Fun facts: 1) Must have earbuds plugged in for radio tests to work 2) For the photo/video tests to work, lens/aperture must not be blocked or in the dark
  • 6. Software Stack • Marionette (https://developer.mozilla.org/en-US/docs/Marionette) - testing server that sits in B2G • Selenium-backed WebDriver • marionette_client – Python abstraction layer for Marionette • Gaiatest (https://pypi.python.org/pypi/gaiatest) - wrapper around Python unnitests that runs the tests • Gaia UI Tests – test framework comprising setUp, tearDown, API wrappers, and the tests themselves
  • 7. Builds in Jenkins/Continuous Integration Web QA helps set up, scale, and provide upkeep for more than just our UI tests http://qa-selenium.mv.mozilla.com:8080/view/B2G/
  • 8. By the Numbers ● Started on November 11, 2012 ● 25 individual contributors [1] ● From Taipei, Romania, UK, Canada, USA, Beijing ● 89 [2] tests, consisting of: ● ~ 19 unit tests ● 80 UI tests ● ~1hour per build, including initial flash [1] https://github.com/mozilla/gaia-ui-tests/graphs [2] http://qa-selenium.mv.mozilla.com:8080/view/B2G/job/b2g.unagi.gaia.nightly.ui/lastBuild/
  • 9. Test coverage / Capabilities Sampling of coverage: • Dialer (make/receive calls, test IMEI #) • Contacts (call, delete, create, add photo to, send SMS to) • Send/receive SMS • Camera (add, delete photo/videos) • Clock (add/delete alarms) • Calendar (add event, assert today's date) • Browser (load pages over EDGE, Wi-Fi, bookmark, navigate back) • Play a YouTube video • Marketplace (search, install, load, delete apps) • Everything.me (browse to and load/install an app) • Changing wallpaper • Radio (adding/remove station, dial frequency up/down) • Keyboard • Notification bar • and more...
  • 10. Test coverage / Capabilities Capabilities: • we push to device (media files – photos, contacts, etc.) • we also capture the app HTML, take screenshots on failure for post-test debugging, and store the latest run's logcat (full, debug) • we test the default/empty states • in-between tests, we use the devicemanager API to iterate through and delete media files, delete all contacts, clear Wi-Fi networks, restore modified settings to default, set volume to 0 • manifest.ini • gives us the ability to tell which tests to run, where • attributes: antenna, b2g, wifi, lan, camera, xfail, panda, sdcard, qemu, bluetooth • •
  • 11. Challenges • Two moving targets: B2G (Gaia/Gonk) + Marionette • Marionette-enabled builds are not identical to non-engineering builds • different online/offline handling (patch pending) • changes to how/when adb / remote debugging work in Gaia • memory leak(s) • feature work • performance refactoring • Event-model changes: • .click() → .tap() • async JavaScript – team's expertise is (still) largely Python • very dynamic, heavy HTML5 apps, with CSS3 usage – rotates, transforms, SVG – hard to find and test location and state of the app • infrastructure set up • acquiring Unagi phones (and keeping them healthy) • SIMs (unlimited plans) • figuring out and maintaining a distributed, consistent format to store each phone's info
  • 12. Will it blen^H^H^ (demo!) https://www.youtube.com/watch?v=CC2ywYeP-4s
  • 13. Contribute! • Repository: • https://github.com/mozilla/gaia-ui-tests • How to contribute: • https://github.com/mozilla/gaia-ui-tests/blob/master/CONTRIBUTING.md • Open issues up for grabs! • https://github.com/mozilla/gaia-ui-tests/issues? direction=desc&labels=difficulty+beginner&sort=created&state=open IRC: • • #mozwebqa (core Gaia UI Tests) • #ateam (perf tests)