SlideShare a Scribd company logo
1 of 28
Download to read offline
Automated testing of
Embedded Web Applications
Lauro Moura
lmoura@igalia.com
1 / 28
About me
At Igalia since 2020
WebKit team
QA, WebDriver
Other work done in the past:
EFL (JS and C# bindings)
Maemo (Python bindings, Nix WebKit port)
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
2 / 28
About Igalia
Specialized Open Source consultancy, founded in
2001
Fully remote, HQ in A Coruña (Spain). Flat
structure.
Top contributors to all the main Web Rendering
Engines
WebKit, Chromium, Gecko and Servo
Active contributor to other areas and OSS
projects
V8, SpiderMonkey, JSC, LLVM, Node.js, GStreamer,
Mesa, Linux Kernel...
Members of several working groups:
W3C, WHATWG, WPT, TC39, OpenJS, Test262,
Khronos... Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
3 / 28
Agenda
Embedded Web Apps
Some Challenges in Web Apps
Challenges of Embedded Web Apps
Browser automation overview
Browser automation tools
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
4 / 28
Web Applications
"Write once, run anywhere!"
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
5 / 28
Web Applications
Fast development cycles
Fast deployment
Large ecosystem
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
6 / 28
Web Apps in real life
"Write once, run _mostly_ anywhere!"
"Works better with $BROWSER"
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
7 / 28
Why does this happen?
Engine differences: Blink vs WebKit vs Gecko
Browser diferences: Chrome vs Brave vs Edge, Safari vs GNOME Web
Versioning: Canary, Stable, ESR
Browser engines != Desktop browsers != Mobile browsers
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
8 / 28
It's also about hardware
Desktop? Tablet? Phone?
4k? 1080p? Scaled or native resolution?
What kind of interaction? Mouse? Gestures?
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
9 / 28
Embedded Web Applications
Not just a generic site running on a generic mobile browser
Load specific resources...
(e.g. using a local server)
... from specific browsers
We can expand the browser with new APIs
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
10 / 28
Embedded Web
Applications in real life
But we might have different devices...
...with different hardware capabilities...
(e.g. different GPUs, screens)
Or different browser versions
Thankfully, still less variables
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
11 / 28
Other differences
Generic websites are usually sandboxed
Embedded web apps might need to interact with the system
Testing the web app in a live system is a must
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
12 / 28
But how to test a web app?
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
13 / 28
Automation != Testing
Automation is a tool
Crawling the web
Filing taxes
Running test steps
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
14 / 28
Originally, mimick user actions
Navigate to $URL
Find input for value "name"
Enter text "John Doe"
Find button with label "Confirm"
Click this button
Search for message "User created"
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
15 / 28
Brief history of browser automation
Early 2000's efforts
Selenium + WebDriver = Selenium WebDriver
W3C WebDriver standard in 2018
Supported by major browsers
WebDriver "Classic"
HTTP-based protocol (remote connections)
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
16 / 28
WebDriver Classic, under the hood
Commands
Responds
User Browser
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
17 / 28
Mimicking the user is not enough
Logic moving into the frontend
Asynchronous tasks
Polling is tricky
Developer tools/inspectors evolution
Enabling two-way communication with the browser
Automation tools based on these protocols
Browser-specific solutions?
in active development o/
W3C WebDriver BiDi
WebKit support incoming
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
18 / 28
WebDriver BiDi, under the hood
Commands
Events
User Browser
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
19 / 28
WebDriver Bidi
Based on WebSockets
Extends WebDriver Classic
Still perform user actions
Monitor the browser state without polling
Monitor messages
log
Observe changes
DOM
Intercept and mock requests
network
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
20 / 28
What about Browser
Automation Tools?
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
21 / 28
Selenium
One of the most well known tools around
Deeply influenced the WebDriver standard
JavaScript, Python, Java, Ruby, C#...
Selenium Grid
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
22 / 28
WebDriverIO
Also based on the W3C WebDriver
Written in JavaScript
Built-in support for Cucumber, Mocha and Jasmine test frameworks
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
23 / 28
Playwright
Puppeteer background
Developed by Microsoft
Autowaits feature
Depends on patched Firefox or WebKit, though...
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
24 / 28
Recap
Embedded Web Apps run in controlled scenarios
But testing how it integrates in the system is crucial
WebDriver BiDi features allows better testing of such apps
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
25 / 28
Questions?
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
26 / 28
Thank you!
Automated testing for Web-based embedded systems
Lauro Moura, 2023-04-18
27 / 28
28 / 28

More Related Content

Similar to Automated Testing for Web-based Systems on Embedded Devices

New ThousandEyes Product Features and Release Highlights: March 2023
New ThousandEyes Product Features and Release Highlights: March 2023New ThousandEyes Product Features and Release Highlights: March 2023
New ThousandEyes Product Features and Release Highlights: March 2023
ThousandEyes
 
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxWAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
Igalia
 

Similar to Automated Testing for Web-based Systems on Embedded Devices (20)

Designing BacNET Applications with InduSoft Web Studio
Designing BacNET Applications with InduSoft Web StudioDesigning BacNET Applications with InduSoft Web Studio
Designing BacNET Applications with InduSoft Web Studio
 
Reactive Application Using METEOR
Reactive Application Using METEORReactive Application Using METEOR
Reactive Application Using METEOR
 
Phonegap android angualr material design
Phonegap android angualr material designPhonegap android angualr material design
Phonegap android angualr material design
 
New ThousandEyes Product Features and Release Highlights: March 2023
New ThousandEyes Product Features and Release Highlights: March 2023New ThousandEyes Product Features and Release Highlights: March 2023
New ThousandEyes Product Features and Release Highlights: March 2023
 
Volkswagen | ECU Software Development with codeBeamer ALM: IT Aspects
Volkswagen | ECU Software Development with codeBeamer ALM: IT AspectsVolkswagen | ECU Software Development with codeBeamer ALM: IT Aspects
Volkswagen | ECU Software Development with codeBeamer ALM: IT Aspects
 
E2E Services using Cloud Visitation Platforms
E2E Services using Cloud Visitation PlatformsE2E Services using Cloud Visitation Platforms
E2E Services using Cloud Visitation Platforms
 
Anypoint Tools and MuleSoft Automation (DRAFT).pptx
Anypoint Tools and MuleSoft Automation (DRAFT).pptxAnypoint Tools and MuleSoft Automation (DRAFT).pptx
Anypoint Tools and MuleSoft Automation (DRAFT).pptx
 
MuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptx
MuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptxMuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptx
MuleSoft Meetup #9 - Anypoint Tools and MuleSoft Automation (FINAL).pptx
 
Transforming the web into a real application platform
Transforming the web into a real application platformTransforming the web into a real application platform
Transforming the web into a real application platform
 
New ThousandEyes Product Features and Release Highlights: March 2023
New ThousandEyes Product Features and Release Highlights: March 2023New ThousandEyes Product Features and Release Highlights: March 2023
New ThousandEyes Product Features and Release Highlights: March 2023
 
Make the Shift from Manual to Automation with Open Source
Make the Shift from Manual to Automation with Open SourceMake the Shift from Manual to Automation with Open Source
Make the Shift from Manual to Automation with Open Source
 
Putting microservices on a diet with istio
Putting microservices on a diet with istioPutting microservices on a diet with istio
Putting microservices on a diet with istio
 
May 2023 EMEA New ThousandEyes Product Features and Release Highlights.pptx
May 2023 EMEA New ThousandEyes Product Features and Release Highlights.pptxMay 2023 EMEA New ThousandEyes Product Features and Release Highlights.pptx
May 2023 EMEA New ThousandEyes Product Features and Release Highlights.pptx
 
What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5What's new in Portal and WCM 8.5
What's new in Portal and WCM 8.5
 
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxWAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
 
WebRTC standards update (13 Nov 2013)
WebRTC standards update (13 Nov 2013)WebRTC standards update (13 Nov 2013)
WebRTC standards update (13 Nov 2013)
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to Maintenance
 
Seguridad Corporativa Con Internet Explorer 8(1)
Seguridad Corporativa Con Internet Explorer 8(1)Seguridad Corporativa Con Internet Explorer 8(1)
Seguridad Corporativa Con Internet Explorer 8(1)
 
Patch Tuesday Italia Novembre
Patch Tuesday Italia NovembrePatch Tuesday Italia Novembre
Patch Tuesday Italia Novembre
 
Extending WebDriver: A cloud approach
Extending WebDriver: A cloud approachExtending WebDriver: A cloud approach
Extending WebDriver: A cloud approach
 

More from Igalia

Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
Igalia
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
Igalia
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Igalia
 

More from Igalia (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamer
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devices
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the web
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shaders
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on Raspberry
 
Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...Enable hardware acceleration for GL applications without glamor on Xorg modes...
Enable hardware acceleration for GL applications without glamor on Xorg modes...
 
Async page flip in DRM atomic API
Async page flip in DRM  atomic APIAsync page flip in DRM  atomic API
Async page flip in DRM atomic API
 

Recently uploaded

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
WSO2 Micro Integrator for Enterprise Integration in a Decentralized, Microser...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Modernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using BallerinaModernizing Legacy Systems Using Ballerina
Modernizing Legacy Systems Using Ballerina
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 

Automated Testing for Web-based Systems on Embedded Devices

  • 1. Automated testing of Embedded Web Applications Lauro Moura lmoura@igalia.com 1 / 28
  • 2. About me At Igalia since 2020 WebKit team QA, WebDriver Other work done in the past: EFL (JS and C# bindings) Maemo (Python bindings, Nix WebKit port) Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 2 / 28
  • 3. About Igalia Specialized Open Source consultancy, founded in 2001 Fully remote, HQ in A Coruña (Spain). Flat structure. Top contributors to all the main Web Rendering Engines WebKit, Chromium, Gecko and Servo Active contributor to other areas and OSS projects V8, SpiderMonkey, JSC, LLVM, Node.js, GStreamer, Mesa, Linux Kernel... Members of several working groups: W3C, WHATWG, WPT, TC39, OpenJS, Test262, Khronos... Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 3 / 28
  • 4. Agenda Embedded Web Apps Some Challenges in Web Apps Challenges of Embedded Web Apps Browser automation overview Browser automation tools Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 4 / 28
  • 5. Web Applications "Write once, run anywhere!" Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 5 / 28
  • 6. Web Applications Fast development cycles Fast deployment Large ecosystem Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 6 / 28
  • 7. Web Apps in real life "Write once, run _mostly_ anywhere!" "Works better with $BROWSER" Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 7 / 28
  • 8. Why does this happen? Engine differences: Blink vs WebKit vs Gecko Browser diferences: Chrome vs Brave vs Edge, Safari vs GNOME Web Versioning: Canary, Stable, ESR Browser engines != Desktop browsers != Mobile browsers Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 8 / 28
  • 9. It's also about hardware Desktop? Tablet? Phone? 4k? 1080p? Scaled or native resolution? What kind of interaction? Mouse? Gestures? Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 9 / 28
  • 10. Embedded Web Applications Not just a generic site running on a generic mobile browser Load specific resources... (e.g. using a local server) ... from specific browsers We can expand the browser with new APIs Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 10 / 28
  • 11. Embedded Web Applications in real life But we might have different devices... ...with different hardware capabilities... (e.g. different GPUs, screens) Or different browser versions Thankfully, still less variables Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 11 / 28
  • 12. Other differences Generic websites are usually sandboxed Embedded web apps might need to interact with the system Testing the web app in a live system is a must Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 12 / 28
  • 13. But how to test a web app? Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 13 / 28
  • 14. Automation != Testing Automation is a tool Crawling the web Filing taxes Running test steps Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 14 / 28
  • 15. Originally, mimick user actions Navigate to $URL Find input for value "name" Enter text "John Doe" Find button with label "Confirm" Click this button Search for message "User created" Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 15 / 28
  • 16. Brief history of browser automation Early 2000's efforts Selenium + WebDriver = Selenium WebDriver W3C WebDriver standard in 2018 Supported by major browsers WebDriver "Classic" HTTP-based protocol (remote connections) Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 16 / 28
  • 17. WebDriver Classic, under the hood Commands Responds User Browser Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 17 / 28
  • 18. Mimicking the user is not enough Logic moving into the frontend Asynchronous tasks Polling is tricky Developer tools/inspectors evolution Enabling two-way communication with the browser Automation tools based on these protocols Browser-specific solutions? in active development o/ W3C WebDriver BiDi WebKit support incoming Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 18 / 28
  • 19. WebDriver BiDi, under the hood Commands Events User Browser Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 19 / 28
  • 20. WebDriver Bidi Based on WebSockets Extends WebDriver Classic Still perform user actions Monitor the browser state without polling Monitor messages log Observe changes DOM Intercept and mock requests network Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 20 / 28
  • 21. What about Browser Automation Tools? Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 21 / 28
  • 22. Selenium One of the most well known tools around Deeply influenced the WebDriver standard JavaScript, Python, Java, Ruby, C#... Selenium Grid Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 22 / 28
  • 23. WebDriverIO Also based on the W3C WebDriver Written in JavaScript Built-in support for Cucumber, Mocha and Jasmine test frameworks Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 23 / 28
  • 24. Playwright Puppeteer background Developed by Microsoft Autowaits feature Depends on patched Firefox or WebKit, though... Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 24 / 28
  • 25. Recap Embedded Web Apps run in controlled scenarios But testing how it integrates in the system is crucial WebDriver BiDi features allows better testing of such apps Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 25 / 28
  • 26. Questions? Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 26 / 28
  • 27. Thank you! Automated testing for Web-based embedded systems Lauro Moura, 2023-04-18 27 / 28