SlideShare a Scribd company logo
1 of 48
SELENIUM 4.0 GRID OBSERVABILITY
LAB
#ATAGTR2021 DAY 2 12TH DECEMBER 2021
Aditya Garg
MY SOCIAL MEDIA HANDLES
https://twitter.com/adigindia
https://www.linkedin.com/in/adigarg/
WHAT WILL BE
COVERED
1. Selenium Grid and importance of traceability in Distributed architecture
2. Understanding Observability components in Selenium 4.0 and installing
coursier
3. Setting up a GCP machine with docker
4. Opening up necessary ports
5. Running Jaeger on the GCP machine
6. Setting up traceability in SeleniumGrid 4.0
7. Executing the tests and observing the trace
Have you worked on Java and Selenium before (yes or no)
ⓘ Start presenting to display the poll results on this slide.
Have you worked in Selenium Grid before
ⓘ Start presenting to display the poll results on this slide.
MORE QUESTIONS
1. How many of you would be participating in this Lab with me ?
2. Do you have your laptops ready ?
3. Do you have the following installed
1. JDK 1.8
2. Maven
4. Do you have PowerShell installed ?
5. Do you have your account with GCP ?
CHECKS CONTINUED
1. Double check on few things
Follow along with me
1. Java check
2. Maven check
3. Selenium 4.0 latest Jar
4. Powershell check
5. GCP account
https://docs.microsoft.com/en-
us/powershell/scripting/install/installing-powershell-on-
windows?view=powershell-7.2#msi
https://www.selenium.dev/downloads/
https://ataevents.online/LabGuideATAGTR2021
SELENIUM GRID AND IMPORTANCE OF
TRACEABILITY/OBSERVABILITY IN
DISTRIBUTED ARCHITECTURE
Grid
3.X
1. Multiple nodes
Ref: https://www.lambdatest.com/blog/selenium-grid-4-tutorial-for-distributed-testing/
Grid
4.0
Ref: https://www.browserstack.com/guide/selenium-grid-4-tutorial
What
can
go
wrong
Any of the process Any of the nodes
• Imagine running your tests
on a fully distributed
architecture and things are
not going as planned.
• How do you trace or observe
your request going through
multiple processes and
running on a node (specially
if things are not working as
planned)
This is where observability comes in
We can trace every request in a time series manner
OpenTelemetry
Grid 4.0 is special in more than
many ways
1. It is designed to work with
modern infrastructures like
docker and Kubernetes
2. The code is by default
instrumented with
OpenTelemetry
OpenTelemetry 1. Telemetry Data such as
traces, metrics and logs
2. Popular Opensource
Backends (which help
us analyze or use this
data)
a. Jaeger
b. Prometheus
Grid
4.0
is
fully
observable Grid 4.0 is special in more than
many ways
1. It is designed to work with
modern infrastructures like
docker and Kubernetes
2. The code is by default
instrumented with
OpenTelemetry
This is where the entire request responses telemetry data ((metrics, logs, and traces) can be
instrumented, collected, and exported to help us analyze our Grid’s performance and behavior.
Selenium 4 Grid is thus fully observable – it helps us troubleshoot issues, optimize performance, and
provide visibility into the system
Selenium
Grid
4
Observability
components
1
Open Telemetry which is instrumented in the
Selenium 4.0 Jar files or code itself.
• This helps in tracing every requests lifecycle
• Trace contains details about the information called as spans
• Span records time logs – called as events
• All these are nothing but some form of logs – which we were
already used to see on a command prompt.
• This can be configured easily to send all the data to a backend
data consolidator – Jaeger
Selenium
Grid
4
Observability
components
• Since Console logs becomes too tedious to query and analyze
• We need a mechanism for visualizing and querying traces
• Jaeger seamlessly integrates with OpenTelemetry to provide a
rich experience of querying, visualizing and collecting request
traces
https://www.jaegertracing.io/
2
The second player in the Selenium 4.0
Observability is Jaeger
LET US GET INTO SOME ACTION
1
2
3
Using Selenium 4.0 Jar
Installing coursier – which is used for updating the classpath for tracer (open telemetery)
Running Jaeger
We can install using binaries or run docker through docker images
Selenium
Grid
4
Observability
Setup
java -jar selenium-server-4.1.0.jar info tracing
This example uses a tool called "coursier" to generate a full classpath, but
you can also write this manually. When started this way, the selenium
server will inform you that it has found a tracer on stdout.
1
Selenium
Grid
4
Observability
Setup
2
Installing coursier – which is used for updating the
classpath for tracer (open telemetery)
https://get-coursier.io/docs/overview#coursier
https://get-coursier.io/docs/cli-installation
Selenium
Grid
4
Observability
Setup
Selenium
Grid
4
Observability
Setup
3
Running Jaeger
We can install using binaries or run docker through docker images
https://www.jaegertracing.io/
docker run -d --name jaeger -p 16686:16686 -p 14250:14250
jaegertracing/all-in-one:latest
Selenium
Grid
4
Observability
Setup
Do you have docker installed on your machine ?
Selenium
Grid
4
Observability
Setup
https://console.cloud.google.com
1. We will create a VM with pre-
installed docker
2. Open required ports
3. Install and run Jaeger
4. If you already have docker installed,
you do not need these steps.
Docker Engine Community on Ubuntu 18.04 LTS
Selenium
Grid
4
Observability
Setup docker run -d --name jaeger -p 16686:16686 -p 14250:14250
jaegertracing/all-in-one:latest
We will run our docker VM in a GCP
Open ports 16686 and also 14250 for our telemetry needs
Run the Jaeger image
0.0.0.0/0
Selenium
Grid
4
Observability
Setup
2 Running Jaeger
We can install using binaries or run docker through docker images
https://www.jaegertracing.io/
docker run -d --name jaeger -p 16686:16686 -p 14250:14250
jaegertracing/all-in-one:latest
Selenium
Grid
4
Observability
Setup
3
Running Selenium Grid with OpenTelemetery Java extension classes
connected to the running instance of Jaeger
We will be running distributed grid
Selenium
Grid
4
Observability
Setup
3
Running Selenium Grid with OpenTelemetery Java extension classes
connected to the running instance of Jaeger
We will be running distributed grid
java -D"otel.traces.exporter=jaeger" -
D"otel.exporter.jaeger.endpoint=http://164.52.192.223:14250" -
D"otel.resource.attributes=service.name=selenium-event-bus" -jar
selenium-server-4.0.0-rc-2.jar --ext $(cs fetch -p
io.opentelemetry:opentelemetry-exporter-jaeger:1.0.0 io.grpc:grpc-
netty:1.35.0) event-bus
a
Start Event Bus – connect to Jaeger and enable opentelemetry using –
ext option using coursier
Selenium
Grid
4
Observability
Setup
3
Running Selenium Grid with OpenTelemetery Java extension classes
connected to the running instance of Jaeger
We will be running distributed grid
java -D"otel.traces.exporter=jaeger" -
D"otel.exporter.jaeger.endpoint=http://164.52.192.223:14250" -
D"otel.resource.attributes=service.name=selenium-sessions" -jar
selenium-server-4.0.0-rc-2.jar --ext $(cs fetch -p
io.opentelemetry:opentelemetry-exporter-jaeger:1.0.0 io.grpc:grpc-
netty:1.35.0) sessions
b Start sessionMap – connect to Jaeger and enable opentelemetry
using –ext option using coursier
Selenium
Grid
4
Observability
Setup
3
Running Selenium Grid with OpenTelemetery Java extension classes
connected to the running instance of Jaeger
We will be running distributed grid
java -D"otel.traces.exporter=jaeger" -
D"otel.exporter.jaeger.endpoint=http://164.52.192.223:14250" -
D"otel.resource.attributes=service.name=selenium-session-queue" -jar
selenium-server-4.0.0-rc-2.jar --ext $(cs fetch -p
io.opentelemetry:opentelemetry-exporter-jaeger:1.0.0 io.grpc:grpc-
netty:1.35.0) sessionqueue
c Start sessionQueue – connect to Jaeger and enable
opentelemetry using –ext option using coursier
Selenium
Grid
4
Observability
Setup
3
Running Selenium Grid with OpenTelemetery Java extension classes
connected to the running instance of Jaeger
We will be running distributed grid
java -D"otel.traces.exporter=jaeger" -
D"otel.exporter.jaeger.endpoint=http://164.52.192.223:14250" -
D"otel.resource.attributes=service.name=selenium-distributor" -jar
selenium-server-4.0.0-rc-2.jar --ext $(cs fetch -p
io.opentelemetry:opentelemetry-exporter-jaeger:1.0.0 io.grpc:grpc-
netty:1.35.0) distributor --sessions http://localhost:5556 --sessionqueue
http://localhost:5559 --bind-bus false
d Start distributor – connect to Jaeger and enable opentelemetry
using –ext option using coursier
Selenium
Grid
4
Observability
Setup
3
Running Selenium Grid with OpenTelemetery Java extension classes
connected to the running instance of Jaeger
We will be running distributed grid
java -D"otel.traces.exporter=jaeger" -
D"otel.exporter.jaeger.endpoint=http://164.52.192.223:14250" -
D"otel.resource.attributes=service.name=selenium-router" -jar selenium-
server-4.0.0-rc-2.jar --ext $(cs fetch -p
io.opentelemetry:opentelemetry-exporter-jaeger:1.0.0 io.grpc:grpc-
netty:1.35.0) router --sessions http://localhost:5556 --sessionqueue
http://localhost:5559 --distributor http://localhost:5553
e Start router – connect to Jaeger and enable opentelemetry using –
ext option using coursier
Selenium
Grid
4
Observability
Setup
3
Running Selenium Grid with OpenTelemetery Java extension classes
connected to the running instance of Jaeger
We will be running distributed grid
java -D"otel.traces.exporter=jaeger" -
D"otel.exporter.jaeger.endpoint=http://164.52.192.223:14250" -
D"otel.resource.attributes=service.name=selenium-node" -jar selenium-
server-4.0.0-rc-2.jar --ext $(cs fetch -p
io.opentelemetry:opentelemetry-exporter-jaeger:1.0.0 io.grpc:grpc-
netty:1.35.0) node
f Start node – connect to Jaeger and enable opentelemetry using –
ext option using coursier
Selenium
Grid
4
Observability
Setup
Selenium
Grid
4
Observability
Setup
Selenium
Grid
4
Observability
Setup
4
Add the necessary telemetry dependencies in selenium client
and run the code
a Add telemetry related dependencies in POM file
https://gitlab.com/adigindia/atagtr2021selenium4observability
Selenium
Grid
4
Observability
Setup
<dependency>
<groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporter-jaeger</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
<version>1.35.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.netty/netty-handler -->
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-handler</artifactId>
<version>4.1.68.Final</version>
</dependency>
a
Add telemetry
related
dependencies in
POM file
4
Add the necessary
telemetry dependencies in
selenium client and run the
code
Selenium
Grid
4
Observability
Setup
4
Add the necessary telemetry dependencies in selenium client and run
the code
b Add system properties in selenium client code
System.setProperty("otel.traces.exporter", "jaeger");
System.setProperty("otel.exporter.jaeger.endpoint",
"http://164.52.192.223:14250");
System.setProperty("otel.resource.attributes", "service.name=selenium-java-client");
ImmutableCapabilities capabilities = new ImmutableCapabilities("browserName",
"chrome");
driver = new RemoteWebDriver(new URL(hubURL), capabilities);
String hubURL = "http://localhost:4444";
RUN THE CODE AND
OBSERVE
OBSERVE ON JAEGER
BRING NODE DOWN AND
OBSERVE ON JAEGER
Key
references
1. https://www.selenium.dev/blog/2021/selenium-4-observability/
2. https://www.selenium.dev/documentation/webdriver/remote_webdriver/
3. https://github.com/manoj9788/tracing-selenium-grid
4. https://get-coursier.io/docs/cli-installation
5. https://www.ibm.com/docs/en/sdk-java-technology/7.1?topic=jjc-specifying-java-
options-system-properties-2
6. https://github.com/SeleniumHQ/selenium/blob/selenium-4.0.0-beta-
1/java/server/src/org/openqa/selenium/grid/commands/tracing.txt
7. https://opentelemetry.io/docs/java/
8. https://www.lambdatest.com/blog/selenium-grid-4-tutorial-for-distributed-testing/
9. https://www.browserstack.com/guide/selenium-grid-4-tutorial
10.https://docs.docker.com/compose/environment-variables/
11.https://github.com/SeleniumHQ/docker-selenium
THANK YOU
https://twitter.com/adigindia
https://www.linkedin.com/in/adigarg/

More Related Content

What's hot

How Prometheus Store the Data
How Prometheus Store the DataHow Prometheus Store the Data
How Prometheus Store the DataHao Chen
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Gridnirvdrum
 
An overview of selenium webdriver
An overview of selenium webdriverAn overview of selenium webdriver
An overview of selenium webdriverAnuraj S.L
 
Kubernetes Selenium Grid
Kubernetes Selenium GridKubernetes Selenium Grid
Kubernetes Selenium GridAmrit pal singh
 
Terraform modules and (some of) best practices
Terraform modules and (some of) best practicesTerraform modules and (some of) best practices
Terraform modules and (some of) best practicesAnton Babenko
 
Docker Swarm for Beginner
Docker Swarm for BeginnerDocker Swarm for Beginner
Docker Swarm for BeginnerShahzad Masud
 
WebLogic 12c & WebLogic Mgmt Pack
WebLogic 12c & WebLogic Mgmt PackWebLogic 12c & WebLogic Mgmt Pack
WebLogic 12c & WebLogic Mgmt PackDLT Solutions
 
Red Hat OpenStack 17 저자직강+스터디그룹_5주차
Red Hat OpenStack 17 저자직강+스터디그룹_5주차Red Hat OpenStack 17 저자직강+스터디그룹_5주차
Red Hat OpenStack 17 저자직강+스터디그룹_5주차Nalee Jang
 
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PGPgDay.Seoul
 
Kubernetes dealing with storage and persistence
Kubernetes  dealing with storage and persistenceKubernetes  dealing with storage and persistence
Kubernetes dealing with storage and persistenceJanakiram MSV
 
An Introduction to REDIS NoSQL database
An Introduction to REDIS NoSQL databaseAn Introduction to REDIS NoSQL database
An Introduction to REDIS NoSQL databaseAli MasudianPour
 
Kata Container - The Security of VM and The Speed of Container | Yuntong Jin
Kata Container - The Security of VM and The Speed of Container | Yuntong Jin	Kata Container - The Security of VM and The Speed of Container | Yuntong Jin
Kata Container - The Security of VM and The Speed of Container | Yuntong Jin Vietnam Open Infrastructure User Group
 
KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...
KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...
KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...ShapeBlue
 
Configuring global infrastructure in terraform
Configuring global infrastructure in terraformConfiguring global infrastructure in terraform
Configuring global infrastructure in terraformSANGGI CHOI
 
Automated CloudStack Deployment
Automated CloudStack DeploymentAutomated CloudStack Deployment
Automated CloudStack DeploymentShapeBlue
 

What's hot (20)

Advanced Terraform
Advanced TerraformAdvanced Terraform
Advanced Terraform
 
How Prometheus Store the Data
How Prometheus Store the DataHow Prometheus Store the Data
How Prometheus Store the Data
 
Docker swarm
Docker swarmDocker swarm
Docker swarm
 
Selenium Grid
Selenium GridSelenium Grid
Selenium Grid
 
An overview of selenium webdriver
An overview of selenium webdriverAn overview of selenium webdriver
An overview of selenium webdriver
 
Kubernetes Selenium Grid
Kubernetes Selenium GridKubernetes Selenium Grid
Kubernetes Selenium Grid
 
Helm intro
Helm introHelm intro
Helm intro
 
Terraform modules and (some of) best practices
Terraform modules and (some of) best practicesTerraform modules and (some of) best practices
Terraform modules and (some of) best practices
 
Docker Swarm for Beginner
Docker Swarm for BeginnerDocker Swarm for Beginner
Docker Swarm for Beginner
 
helm 입문
helm 입문helm 입문
helm 입문
 
WebLogic 12c & WebLogic Mgmt Pack
WebLogic 12c & WebLogic Mgmt PackWebLogic 12c & WebLogic Mgmt Pack
WebLogic 12c & WebLogic Mgmt Pack
 
Red Hat OpenStack 17 저자직강+스터디그룹_5주차
Red Hat OpenStack 17 저자직강+스터디그룹_5주차Red Hat OpenStack 17 저자직강+스터디그룹_5주차
Red Hat OpenStack 17 저자직강+스터디그룹_5주차
 
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG[Pgday.Seoul 2018]  이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
[Pgday.Seoul 2018] 이기종 DB에서 PostgreSQL로의 Migration을 위한 DB2PG
 
Selenium WebDriver
Selenium WebDriverSelenium WebDriver
Selenium WebDriver
 
Kubernetes dealing with storage and persistence
Kubernetes  dealing with storage and persistenceKubernetes  dealing with storage and persistence
Kubernetes dealing with storage and persistence
 
An Introduction to REDIS NoSQL database
An Introduction to REDIS NoSQL databaseAn Introduction to REDIS NoSQL database
An Introduction to REDIS NoSQL database
 
Kata Container - The Security of VM and The Speed of Container | Yuntong Jin
Kata Container - The Security of VM and The Speed of Container | Yuntong Jin	Kata Container - The Security of VM and The Speed of Container | Yuntong Jin
Kata Container - The Security of VM and The Speed of Container | Yuntong Jin
 
KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...
KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...
KVM High Availability Regardless of Storage - Gabriel Brascher, VP of Apache ...
 
Configuring global infrastructure in terraform
Configuring global infrastructure in terraformConfiguring global infrastructure in terraform
Configuring global infrastructure in terraform
 
Automated CloudStack Deployment
Automated CloudStack DeploymentAutomated CloudStack Deployment
Automated CloudStack Deployment
 

Similar to #ATAGTR2021 Presentation - "Selenium 4 Observability – a 90 Min Hands on Lab"

Session on Launching Selenium Grid and Running tests using docker compose and...
Session on Launching Selenium Grid and Running tests using docker compose and...Session on Launching Selenium Grid and Running tests using docker compose and...
Session on Launching Selenium Grid and Running tests using docker compose and...Agile Testing Alliance
 
The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9jClarity
 
First steps with selenium rc
First steps with selenium rcFirst steps with selenium rc
First steps with selenium rcDang Nguyen
 
Distributed tracing 101
Distributed tracing 101Distributed tracing 101
Distributed tracing 101Itiel Shwartz
 
OpenShift for Java EE Developers
OpenShift for Java EE DevelopersOpenShift for Java EE Developers
OpenShift for Java EE DevelopersMarkus Eisele
 
Mobicents Summit 2012 - George Vagenas - Testing SIP Applications with Arquil...
Mobicents Summit 2012 - George Vagenas - Testing SIP Applications with Arquil...Mobicents Summit 2012 - George Vagenas - Testing SIP Applications with Arquil...
Mobicents Summit 2012 - George Vagenas - Testing SIP Applications with Arquil...telestax
 
Toolbox for Selenium Tests in Java: WebDriverManager and Selenium-Jupiter
Toolbox for Selenium Tests in Java: WebDriverManager and Selenium-JupiterToolbox for Selenium Tests in Java: WebDriverManager and Selenium-Jupiter
Toolbox for Selenium Tests in Java: WebDriverManager and Selenium-JupiterBoni García
 
Mobile Test Automation using one API and one infrastructure
Mobile Test Automation using one API and one infrastructureMobile Test Automation using one API and one infrastructure
Mobile Test Automation using one API and one infrastructureMichael Palotas
 
Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5Boni García
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Appschrisb206 chrisb206
 
Toward dynamic analysis of obfuscated android malware
Toward dynamic analysis of obfuscated android malwareToward dynamic analysis of obfuscated android malware
Toward dynamic analysis of obfuscated android malwareZongXian Shen
 
Opendaylight SDN Controller
Opendaylight SDN ControllerOpendaylight SDN Controller
Opendaylight SDN ControllerSumit Arora
 
Selendroid in Action
Selendroid in ActionSelendroid in Action
Selendroid in ActionDominik Dary
 
Automated UI testing.Selenium.DrupalCamp Kyiv 2011
Automated UI testing.Selenium.DrupalCamp Kyiv 2011Automated UI testing.Selenium.DrupalCamp Kyiv 2011
Automated UI testing.Selenium.DrupalCamp Kyiv 2011camp_drupal_ua
 
Automated UI testing with Selenium
Automated UI testing with SeleniumAutomated UI testing with Selenium
Automated UI testing with SeleniumYuriy Gerasimov
 
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé MochtarTestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé MochtarXebia Nederland BV
 
Developing modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular jsDeveloping modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular jsShekhar Gulati
 

Similar to #ATAGTR2021 Presentation - "Selenium 4 Observability – a 90 Min Hands on Lab" (20)

Session on Launching Selenium Grid and Running tests using docker compose and...
Session on Launching Selenium Grid and Running tests using docker compose and...Session on Launching Selenium Grid and Running tests using docker compose and...
Session on Launching Selenium Grid and Running tests using docker compose and...
 
Distributed Tracing
Distributed TracingDistributed Tracing
Distributed Tracing
 
New selenium rc
New selenium rcNew selenium rc
New selenium rc
 
The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9The Diabolical Developer's Guide to Surviving Java 9
The Diabolical Developer's Guide to Surviving Java 9
 
First steps with selenium rc
First steps with selenium rcFirst steps with selenium rc
First steps with selenium rc
 
Distributed tracing 101
Distributed tracing 101Distributed tracing 101
Distributed tracing 101
 
OpenShift for Java EE Developers
OpenShift for Java EE DevelopersOpenShift for Java EE Developers
OpenShift for Java EE Developers
 
Mobicents Summit 2012 - George Vagenas - Testing SIP Applications with Arquil...
Mobicents Summit 2012 - George Vagenas - Testing SIP Applications with Arquil...Mobicents Summit 2012 - George Vagenas - Testing SIP Applications with Arquil...
Mobicents Summit 2012 - George Vagenas - Testing SIP Applications with Arquil...
 
Toolbox for Selenium Tests in Java: WebDriverManager and Selenium-Jupiter
Toolbox for Selenium Tests in Java: WebDriverManager and Selenium-JupiterToolbox for Selenium Tests in Java: WebDriverManager and Selenium-Jupiter
Toolbox for Selenium Tests in Java: WebDriverManager and Selenium-Jupiter
 
Mobile Test Automation using one API and one infrastructure
Mobile Test Automation using one API and one infrastructureMobile Test Automation using one API and one infrastructure
Mobile Test Automation using one API and one infrastructure
 
Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5Developing Selenium tests with JUnit 5
Developing Selenium tests with JUnit 5
 
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-AppsSelenium-Browser-Based-Automated-Testing-for-Grails-Apps
Selenium-Browser-Based-Automated-Testing-for-Grails-Apps
 
Selenium Training in Chennai
Selenium Training in ChennaiSelenium Training in Chennai
Selenium Training in Chennai
 
Toward dynamic analysis of obfuscated android malware
Toward dynamic analysis of obfuscated android malwareToward dynamic analysis of obfuscated android malware
Toward dynamic analysis of obfuscated android malware
 
Opendaylight SDN Controller
Opendaylight SDN ControllerOpendaylight SDN Controller
Opendaylight SDN Controller
 
Selendroid in Action
Selendroid in ActionSelendroid in Action
Selendroid in Action
 
Automated UI testing.Selenium.DrupalCamp Kyiv 2011
Automated UI testing.Selenium.DrupalCamp Kyiv 2011Automated UI testing.Selenium.DrupalCamp Kyiv 2011
Automated UI testing.Selenium.DrupalCamp Kyiv 2011
 
Automated UI testing with Selenium
Automated UI testing with SeleniumAutomated UI testing with Selenium
Automated UI testing with Selenium
 
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé MochtarTestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
TestWorks Conf Scalable QA with docker - Maarten van den Ende and Adé Mochtar
 
Developing modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular jsDeveloping modern java web applications with java ee 7 and angular js
Developing modern java web applications with java ee 7 and angular js
 

More from Agile Testing Alliance

#Interactive Session by Anindita Rath and Mahathee Dandibhotla, "From Good to...
#Interactive Session by Anindita Rath and Mahathee Dandibhotla, "From Good to...#Interactive Session by Anindita Rath and Mahathee Dandibhotla, "From Good to...
#Interactive Session by Anindita Rath and Mahathee Dandibhotla, "From Good to...Agile Testing Alliance
 
#Interactive Session by Ajay Balamurugadas, "Where Are The Real Testers In T...
#Interactive Session by  Ajay Balamurugadas, "Where Are The Real Testers In T...#Interactive Session by  Ajay Balamurugadas, "Where Are The Real Testers In T...
#Interactive Session by Ajay Balamurugadas, "Where Are The Real Testers In T...Agile Testing Alliance
 
#Interactive Session by Jishnu Nambiar and Mayur Ovhal, "Monitoring Web Per...
#Interactive Session by  Jishnu Nambiar and  Mayur Ovhal, "Monitoring Web Per...#Interactive Session by  Jishnu Nambiar and  Mayur Ovhal, "Monitoring Web Per...
#Interactive Session by Jishnu Nambiar and Mayur Ovhal, "Monitoring Web Per...Agile Testing Alliance
 
#Interactive Session by Pradipta Biswas and Sucheta Saurabh Chitale, "Navigat...
#Interactive Session by Pradipta Biswas and Sucheta Saurabh Chitale, "Navigat...#Interactive Session by Pradipta Biswas and Sucheta Saurabh Chitale, "Navigat...
#Interactive Session by Pradipta Biswas and Sucheta Saurabh Chitale, "Navigat...Agile Testing Alliance
 
#Interactive Session by Apoorva Ram, "The Art of Storytelling for Testers" at...
#Interactive Session by Apoorva Ram, "The Art of Storytelling for Testers" at...#Interactive Session by Apoorva Ram, "The Art of Storytelling for Testers" at...
#Interactive Session by Apoorva Ram, "The Art of Storytelling for Testers" at...Agile Testing Alliance
 
#Interactive Session by Nikhil Jain, "Catch All Mail With Graph" at #ATAGTR2023.
#Interactive Session by Nikhil Jain, "Catch All Mail With Graph" at #ATAGTR2023.#Interactive Session by Nikhil Jain, "Catch All Mail With Graph" at #ATAGTR2023.
#Interactive Session by Nikhil Jain, "Catch All Mail With Graph" at #ATAGTR2023.Agile Testing Alliance
 
#Interactive Session by Ashok Kumar S, "Test Data the key to robust test cove...
#Interactive Session by Ashok Kumar S, "Test Data the key to robust test cove...#Interactive Session by Ashok Kumar S, "Test Data the key to robust test cove...
#Interactive Session by Ashok Kumar S, "Test Data the key to robust test cove...Agile Testing Alliance
 
#Interactive Session by Seema Kohli, "Test Leadership in the Era of Artificia...
#Interactive Session by Seema Kohli, "Test Leadership in the Era of Artificia...#Interactive Session by Seema Kohli, "Test Leadership in the Era of Artificia...
#Interactive Session by Seema Kohli, "Test Leadership in the Era of Artificia...Agile Testing Alliance
 
#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...
#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...
#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...Agile Testing Alliance
 
#Interactive Session by Srithanga Aishvarya T, "Machine Learning Model to aut...
#Interactive Session by Srithanga Aishvarya T, "Machine Learning Model to aut...#Interactive Session by Srithanga Aishvarya T, "Machine Learning Model to aut...
#Interactive Session by Srithanga Aishvarya T, "Machine Learning Model to aut...Agile Testing Alliance
 
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...Agile Testing Alliance
 
#Interactive Session by Sudhir Upadhyay and Ashish Kumar, "Strengthening Test...
#Interactive Session by Sudhir Upadhyay and Ashish Kumar, "Strengthening Test...#Interactive Session by Sudhir Upadhyay and Ashish Kumar, "Strengthening Test...
#Interactive Session by Sudhir Upadhyay and Ashish Kumar, "Strengthening Test...Agile Testing Alliance
 
#Interactive Session by Sayan Deb Kundu, "Testing Gen AI Applications" at #AT...
#Interactive Session by Sayan Deb Kundu, "Testing Gen AI Applications" at #AT...#Interactive Session by Sayan Deb Kundu, "Testing Gen AI Applications" at #AT...
#Interactive Session by Sayan Deb Kundu, "Testing Gen AI Applications" at #AT...Agile Testing Alliance
 
#Interactive Session by Dinesh Boravke, "Zero Defects – Myth or Reality" at #...
#Interactive Session by Dinesh Boravke, "Zero Defects – Myth or Reality" at #...#Interactive Session by Dinesh Boravke, "Zero Defects – Myth or Reality" at #...
#Interactive Session by Dinesh Boravke, "Zero Defects – Myth or Reality" at #...Agile Testing Alliance
 
#Interactive Session by Saby Saurabh Bhardwaj, "Redefine Quality Assurance –...
#Interactive Session by  Saby Saurabh Bhardwaj, "Redefine Quality Assurance –...#Interactive Session by  Saby Saurabh Bhardwaj, "Redefine Quality Assurance –...
#Interactive Session by Saby Saurabh Bhardwaj, "Redefine Quality Assurance –...Agile Testing Alliance
 
#Keynote Session by Sanjay Kumar, "Innovation Inspired Testing!!" at #ATAGTR2...
#Keynote Session by Sanjay Kumar, "Innovation Inspired Testing!!" at #ATAGTR2...#Keynote Session by Sanjay Kumar, "Innovation Inspired Testing!!" at #ATAGTR2...
#Keynote Session by Sanjay Kumar, "Innovation Inspired Testing!!" at #ATAGTR2...Agile Testing Alliance
 
#Keynote Session by Schalk Cronje, "Don’t Containerize me" at #ATAGTR2023.
#Keynote Session by Schalk Cronje, "Don’t Containerize me" at #ATAGTR2023.#Keynote Session by Schalk Cronje, "Don’t Containerize me" at #ATAGTR2023.
#Keynote Session by Schalk Cronje, "Don’t Containerize me" at #ATAGTR2023.Agile Testing Alliance
 
#Interactive Session by Chidambaram Vetrivel and Venkatesh Belde, "Revolution...
#Interactive Session by Chidambaram Vetrivel and Venkatesh Belde, "Revolution...#Interactive Session by Chidambaram Vetrivel and Venkatesh Belde, "Revolution...
#Interactive Session by Chidambaram Vetrivel and Venkatesh Belde, "Revolution...Agile Testing Alliance
 
#Interactive Session by Aniket Diwakar Kadukar and Padimiti Vaidik Eswar Dat...
#Interactive Session by Aniket Diwakar Kadukar and  Padimiti Vaidik Eswar Dat...#Interactive Session by Aniket Diwakar Kadukar and  Padimiti Vaidik Eswar Dat...
#Interactive Session by Aniket Diwakar Kadukar and Padimiti Vaidik Eswar Dat...Agile Testing Alliance
 
#Interactive Session by Vivek Patle and Jahnavi Umarji, "Empowering Functiona...
#Interactive Session by Vivek Patle and Jahnavi Umarji, "Empowering Functiona...#Interactive Session by Vivek Patle and Jahnavi Umarji, "Empowering Functiona...
#Interactive Session by Vivek Patle and Jahnavi Umarji, "Empowering Functiona...Agile Testing Alliance
 

More from Agile Testing Alliance (20)

#Interactive Session by Anindita Rath and Mahathee Dandibhotla, "From Good to...
#Interactive Session by Anindita Rath and Mahathee Dandibhotla, "From Good to...#Interactive Session by Anindita Rath and Mahathee Dandibhotla, "From Good to...
#Interactive Session by Anindita Rath and Mahathee Dandibhotla, "From Good to...
 
#Interactive Session by Ajay Balamurugadas, "Where Are The Real Testers In T...
#Interactive Session by  Ajay Balamurugadas, "Where Are The Real Testers In T...#Interactive Session by  Ajay Balamurugadas, "Where Are The Real Testers In T...
#Interactive Session by Ajay Balamurugadas, "Where Are The Real Testers In T...
 
#Interactive Session by Jishnu Nambiar and Mayur Ovhal, "Monitoring Web Per...
#Interactive Session by  Jishnu Nambiar and  Mayur Ovhal, "Monitoring Web Per...#Interactive Session by  Jishnu Nambiar and  Mayur Ovhal, "Monitoring Web Per...
#Interactive Session by Jishnu Nambiar and Mayur Ovhal, "Monitoring Web Per...
 
#Interactive Session by Pradipta Biswas and Sucheta Saurabh Chitale, "Navigat...
#Interactive Session by Pradipta Biswas and Sucheta Saurabh Chitale, "Navigat...#Interactive Session by Pradipta Biswas and Sucheta Saurabh Chitale, "Navigat...
#Interactive Session by Pradipta Biswas and Sucheta Saurabh Chitale, "Navigat...
 
#Interactive Session by Apoorva Ram, "The Art of Storytelling for Testers" at...
#Interactive Session by Apoorva Ram, "The Art of Storytelling for Testers" at...#Interactive Session by Apoorva Ram, "The Art of Storytelling for Testers" at...
#Interactive Session by Apoorva Ram, "The Art of Storytelling for Testers" at...
 
#Interactive Session by Nikhil Jain, "Catch All Mail With Graph" at #ATAGTR2023.
#Interactive Session by Nikhil Jain, "Catch All Mail With Graph" at #ATAGTR2023.#Interactive Session by Nikhil Jain, "Catch All Mail With Graph" at #ATAGTR2023.
#Interactive Session by Nikhil Jain, "Catch All Mail With Graph" at #ATAGTR2023.
 
#Interactive Session by Ashok Kumar S, "Test Data the key to robust test cove...
#Interactive Session by Ashok Kumar S, "Test Data the key to robust test cove...#Interactive Session by Ashok Kumar S, "Test Data the key to robust test cove...
#Interactive Session by Ashok Kumar S, "Test Data the key to robust test cove...
 
#Interactive Session by Seema Kohli, "Test Leadership in the Era of Artificia...
#Interactive Session by Seema Kohli, "Test Leadership in the Era of Artificia...#Interactive Session by Seema Kohli, "Test Leadership in the Era of Artificia...
#Interactive Session by Seema Kohli, "Test Leadership in the Era of Artificia...
 
#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...
#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...
#Interactive Session by Ashwini Lalit, RRR of Test Automation Maintenance" at...
 
#Interactive Session by Srithanga Aishvarya T, "Machine Learning Model to aut...
#Interactive Session by Srithanga Aishvarya T, "Machine Learning Model to aut...#Interactive Session by Srithanga Aishvarya T, "Machine Learning Model to aut...
#Interactive Session by Srithanga Aishvarya T, "Machine Learning Model to aut...
 
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
#Interactive Session by Kirti Ranjan Satapathy and Nandini K, "Elements of Qu...
 
#Interactive Session by Sudhir Upadhyay and Ashish Kumar, "Strengthening Test...
#Interactive Session by Sudhir Upadhyay and Ashish Kumar, "Strengthening Test...#Interactive Session by Sudhir Upadhyay and Ashish Kumar, "Strengthening Test...
#Interactive Session by Sudhir Upadhyay and Ashish Kumar, "Strengthening Test...
 
#Interactive Session by Sayan Deb Kundu, "Testing Gen AI Applications" at #AT...
#Interactive Session by Sayan Deb Kundu, "Testing Gen AI Applications" at #AT...#Interactive Session by Sayan Deb Kundu, "Testing Gen AI Applications" at #AT...
#Interactive Session by Sayan Deb Kundu, "Testing Gen AI Applications" at #AT...
 
#Interactive Session by Dinesh Boravke, "Zero Defects – Myth or Reality" at #...
#Interactive Session by Dinesh Boravke, "Zero Defects – Myth or Reality" at #...#Interactive Session by Dinesh Boravke, "Zero Defects – Myth or Reality" at #...
#Interactive Session by Dinesh Boravke, "Zero Defects – Myth or Reality" at #...
 
#Interactive Session by Saby Saurabh Bhardwaj, "Redefine Quality Assurance –...
#Interactive Session by  Saby Saurabh Bhardwaj, "Redefine Quality Assurance –...#Interactive Session by  Saby Saurabh Bhardwaj, "Redefine Quality Assurance –...
#Interactive Session by Saby Saurabh Bhardwaj, "Redefine Quality Assurance –...
 
#Keynote Session by Sanjay Kumar, "Innovation Inspired Testing!!" at #ATAGTR2...
#Keynote Session by Sanjay Kumar, "Innovation Inspired Testing!!" at #ATAGTR2...#Keynote Session by Sanjay Kumar, "Innovation Inspired Testing!!" at #ATAGTR2...
#Keynote Session by Sanjay Kumar, "Innovation Inspired Testing!!" at #ATAGTR2...
 
#Keynote Session by Schalk Cronje, "Don’t Containerize me" at #ATAGTR2023.
#Keynote Session by Schalk Cronje, "Don’t Containerize me" at #ATAGTR2023.#Keynote Session by Schalk Cronje, "Don’t Containerize me" at #ATAGTR2023.
#Keynote Session by Schalk Cronje, "Don’t Containerize me" at #ATAGTR2023.
 
#Interactive Session by Chidambaram Vetrivel and Venkatesh Belde, "Revolution...
#Interactive Session by Chidambaram Vetrivel and Venkatesh Belde, "Revolution...#Interactive Session by Chidambaram Vetrivel and Venkatesh Belde, "Revolution...
#Interactive Session by Chidambaram Vetrivel and Venkatesh Belde, "Revolution...
 
#Interactive Session by Aniket Diwakar Kadukar and Padimiti Vaidik Eswar Dat...
#Interactive Session by Aniket Diwakar Kadukar and  Padimiti Vaidik Eswar Dat...#Interactive Session by Aniket Diwakar Kadukar and  Padimiti Vaidik Eswar Dat...
#Interactive Session by Aniket Diwakar Kadukar and Padimiti Vaidik Eswar Dat...
 
#Interactive Session by Vivek Patle and Jahnavi Umarji, "Empowering Functiona...
#Interactive Session by Vivek Patle and Jahnavi Umarji, "Empowering Functiona...#Interactive Session by Vivek Patle and Jahnavi Umarji, "Empowering Functiona...
#Interactive Session by Vivek Patle and Jahnavi Umarji, "Empowering Functiona...
 

Recently uploaded

Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
"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
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfngoud9212
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
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
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Neo4j
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
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
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDGMarianaLemus7
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
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
 
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
 
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
 

Recently uploaded (20)

Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
"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...
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Bluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdfBluetooth Controlled Car with Arduino.pdf
Bluetooth Controlled Car with Arduino.pdf
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
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)
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024Build your next Gen AI Breakthrough - April 2024
Build your next Gen AI Breakthrough - April 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
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?
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
APIForce Zurich 5 April Automation LPDG
APIForce Zurich 5 April  Automation LPDGAPIForce Zurich 5 April  Automation LPDG
APIForce Zurich 5 April Automation LPDG
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
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
 
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
 
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
 

#ATAGTR2021 Presentation - "Selenium 4 Observability – a 90 Min Hands on Lab"

  • 1. SELENIUM 4.0 GRID OBSERVABILITY LAB #ATAGTR2021 DAY 2 12TH DECEMBER 2021 Aditya Garg
  • 2. MY SOCIAL MEDIA HANDLES https://twitter.com/adigindia https://www.linkedin.com/in/adigarg/
  • 3. WHAT WILL BE COVERED 1. Selenium Grid and importance of traceability in Distributed architecture 2. Understanding Observability components in Selenium 4.0 and installing coursier 3. Setting up a GCP machine with docker 4. Opening up necessary ports 5. Running Jaeger on the GCP machine 6. Setting up traceability in SeleniumGrid 4.0 7. Executing the tests and observing the trace
  • 4. Have you worked on Java and Selenium before (yes or no) ⓘ Start presenting to display the poll results on this slide.
  • 5. Have you worked in Selenium Grid before ⓘ Start presenting to display the poll results on this slide.
  • 6. MORE QUESTIONS 1. How many of you would be participating in this Lab with me ? 2. Do you have your laptops ready ? 3. Do you have the following installed 1. JDK 1.8 2. Maven 4. Do you have PowerShell installed ? 5. Do you have your account with GCP ?
  • 7. CHECKS CONTINUED 1. Double check on few things Follow along with me 1. Java check 2. Maven check 3. Selenium 4.0 latest Jar 4. Powershell check 5. GCP account https://docs.microsoft.com/en- us/powershell/scripting/install/installing-powershell-on- windows?view=powershell-7.2#msi https://www.selenium.dev/downloads/ https://ataevents.online/LabGuideATAGTR2021
  • 8. SELENIUM GRID AND IMPORTANCE OF TRACEABILITY/OBSERVABILITY IN DISTRIBUTED ARCHITECTURE
  • 9. Grid 3.X 1. Multiple nodes Ref: https://www.lambdatest.com/blog/selenium-grid-4-tutorial-for-distributed-testing/
  • 11. What can go wrong Any of the process Any of the nodes • Imagine running your tests on a fully distributed architecture and things are not going as planned. • How do you trace or observe your request going through multiple processes and running on a node (specially if things are not working as planned) This is where observability comes in We can trace every request in a time series manner
  • 12. OpenTelemetry Grid 4.0 is special in more than many ways 1. It is designed to work with modern infrastructures like docker and Kubernetes 2. The code is by default instrumented with OpenTelemetry
  • 13. OpenTelemetry 1. Telemetry Data such as traces, metrics and logs 2. Popular Opensource Backends (which help us analyze or use this data) a. Jaeger b. Prometheus
  • 14. Grid 4.0 is fully observable Grid 4.0 is special in more than many ways 1. It is designed to work with modern infrastructures like docker and Kubernetes 2. The code is by default instrumented with OpenTelemetry This is where the entire request responses telemetry data ((metrics, logs, and traces) can be instrumented, collected, and exported to help us analyze our Grid’s performance and behavior. Selenium 4 Grid is thus fully observable – it helps us troubleshoot issues, optimize performance, and provide visibility into the system
  • 15. Selenium Grid 4 Observability components 1 Open Telemetry which is instrumented in the Selenium 4.0 Jar files or code itself. • This helps in tracing every requests lifecycle • Trace contains details about the information called as spans • Span records time logs – called as events • All these are nothing but some form of logs – which we were already used to see on a command prompt. • This can be configured easily to send all the data to a backend data consolidator – Jaeger
  • 16. Selenium Grid 4 Observability components • Since Console logs becomes too tedious to query and analyze • We need a mechanism for visualizing and querying traces • Jaeger seamlessly integrates with OpenTelemetry to provide a rich experience of querying, visualizing and collecting request traces https://www.jaegertracing.io/ 2 The second player in the Selenium 4.0 Observability is Jaeger
  • 17. LET US GET INTO SOME ACTION 1 2 3 Using Selenium 4.0 Jar Installing coursier – which is used for updating the classpath for tracer (open telemetery) Running Jaeger We can install using binaries or run docker through docker images
  • 18. Selenium Grid 4 Observability Setup java -jar selenium-server-4.1.0.jar info tracing This example uses a tool called "coursier" to generate a full classpath, but you can also write this manually. When started this way, the selenium server will inform you that it has found a tracer on stdout. 1
  • 19. Selenium Grid 4 Observability Setup 2 Installing coursier – which is used for updating the classpath for tracer (open telemetery) https://get-coursier.io/docs/overview#coursier https://get-coursier.io/docs/cli-installation
  • 21. Selenium Grid 4 Observability Setup 3 Running Jaeger We can install using binaries or run docker through docker images https://www.jaegertracing.io/ docker run -d --name jaeger -p 16686:16686 -p 14250:14250 jaegertracing/all-in-one:latest
  • 22. Selenium Grid 4 Observability Setup Do you have docker installed on your machine ?
  • 23. Selenium Grid 4 Observability Setup https://console.cloud.google.com 1. We will create a VM with pre- installed docker 2. Open required ports 3. Install and run Jaeger 4. If you already have docker installed, you do not need these steps.
  • 24. Docker Engine Community on Ubuntu 18.04 LTS
  • 25. Selenium Grid 4 Observability Setup docker run -d --name jaeger -p 16686:16686 -p 14250:14250 jaegertracing/all-in-one:latest We will run our docker VM in a GCP Open ports 16686 and also 14250 for our telemetry needs Run the Jaeger image
  • 26.
  • 28. Selenium Grid 4 Observability Setup 2 Running Jaeger We can install using binaries or run docker through docker images https://www.jaegertracing.io/ docker run -d --name jaeger -p 16686:16686 -p 14250:14250 jaegertracing/all-in-one:latest
  • 29. Selenium Grid 4 Observability Setup 3 Running Selenium Grid with OpenTelemetery Java extension classes connected to the running instance of Jaeger We will be running distributed grid
  • 30. Selenium Grid 4 Observability Setup 3 Running Selenium Grid with OpenTelemetery Java extension classes connected to the running instance of Jaeger We will be running distributed grid java -D"otel.traces.exporter=jaeger" - D"otel.exporter.jaeger.endpoint=http://164.52.192.223:14250" - D"otel.resource.attributes=service.name=selenium-event-bus" -jar selenium-server-4.0.0-rc-2.jar --ext $(cs fetch -p io.opentelemetry:opentelemetry-exporter-jaeger:1.0.0 io.grpc:grpc- netty:1.35.0) event-bus a Start Event Bus – connect to Jaeger and enable opentelemetry using – ext option using coursier
  • 31. Selenium Grid 4 Observability Setup 3 Running Selenium Grid with OpenTelemetery Java extension classes connected to the running instance of Jaeger We will be running distributed grid java -D"otel.traces.exporter=jaeger" - D"otel.exporter.jaeger.endpoint=http://164.52.192.223:14250" - D"otel.resource.attributes=service.name=selenium-sessions" -jar selenium-server-4.0.0-rc-2.jar --ext $(cs fetch -p io.opentelemetry:opentelemetry-exporter-jaeger:1.0.0 io.grpc:grpc- netty:1.35.0) sessions b Start sessionMap – connect to Jaeger and enable opentelemetry using –ext option using coursier
  • 32. Selenium Grid 4 Observability Setup 3 Running Selenium Grid with OpenTelemetery Java extension classes connected to the running instance of Jaeger We will be running distributed grid java -D"otel.traces.exporter=jaeger" - D"otel.exporter.jaeger.endpoint=http://164.52.192.223:14250" - D"otel.resource.attributes=service.name=selenium-session-queue" -jar selenium-server-4.0.0-rc-2.jar --ext $(cs fetch -p io.opentelemetry:opentelemetry-exporter-jaeger:1.0.0 io.grpc:grpc- netty:1.35.0) sessionqueue c Start sessionQueue – connect to Jaeger and enable opentelemetry using –ext option using coursier
  • 33. Selenium Grid 4 Observability Setup 3 Running Selenium Grid with OpenTelemetery Java extension classes connected to the running instance of Jaeger We will be running distributed grid java -D"otel.traces.exporter=jaeger" - D"otel.exporter.jaeger.endpoint=http://164.52.192.223:14250" - D"otel.resource.attributes=service.name=selenium-distributor" -jar selenium-server-4.0.0-rc-2.jar --ext $(cs fetch -p io.opentelemetry:opentelemetry-exporter-jaeger:1.0.0 io.grpc:grpc- netty:1.35.0) distributor --sessions http://localhost:5556 --sessionqueue http://localhost:5559 --bind-bus false d Start distributor – connect to Jaeger and enable opentelemetry using –ext option using coursier
  • 34. Selenium Grid 4 Observability Setup 3 Running Selenium Grid with OpenTelemetery Java extension classes connected to the running instance of Jaeger We will be running distributed grid java -D"otel.traces.exporter=jaeger" - D"otel.exporter.jaeger.endpoint=http://164.52.192.223:14250" - D"otel.resource.attributes=service.name=selenium-router" -jar selenium- server-4.0.0-rc-2.jar --ext $(cs fetch -p io.opentelemetry:opentelemetry-exporter-jaeger:1.0.0 io.grpc:grpc- netty:1.35.0) router --sessions http://localhost:5556 --sessionqueue http://localhost:5559 --distributor http://localhost:5553 e Start router – connect to Jaeger and enable opentelemetry using – ext option using coursier
  • 35. Selenium Grid 4 Observability Setup 3 Running Selenium Grid with OpenTelemetery Java extension classes connected to the running instance of Jaeger We will be running distributed grid java -D"otel.traces.exporter=jaeger" - D"otel.exporter.jaeger.endpoint=http://164.52.192.223:14250" - D"otel.resource.attributes=service.name=selenium-node" -jar selenium- server-4.0.0-rc-2.jar --ext $(cs fetch -p io.opentelemetry:opentelemetry-exporter-jaeger:1.0.0 io.grpc:grpc- netty:1.35.0) node f Start node – connect to Jaeger and enable opentelemetry using – ext option using coursier
  • 38. Selenium Grid 4 Observability Setup 4 Add the necessary telemetry dependencies in selenium client and run the code a Add telemetry related dependencies in POM file https://gitlab.com/adigindia/atagtr2021selenium4observability
  • 39. Selenium Grid 4 Observability Setup <dependency> <groupId>io.opentelemetry</groupId> <artifactId>opentelemetry-exporter-jaeger</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty</artifactId> <version>1.35.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>31.0.1-jre</version> </dependency> <!-- https://mvnrepository.com/artifact/io.netty/netty-handler --> <dependency> <groupId>io.netty</groupId> <artifactId>netty-handler</artifactId> <version>4.1.68.Final</version> </dependency> a Add telemetry related dependencies in POM file 4 Add the necessary telemetry dependencies in selenium client and run the code
  • 40. Selenium Grid 4 Observability Setup 4 Add the necessary telemetry dependencies in selenium client and run the code b Add system properties in selenium client code System.setProperty("otel.traces.exporter", "jaeger"); System.setProperty("otel.exporter.jaeger.endpoint", "http://164.52.192.223:14250"); System.setProperty("otel.resource.attributes", "service.name=selenium-java-client"); ImmutableCapabilities capabilities = new ImmutableCapabilities("browserName", "chrome"); driver = new RemoteWebDriver(new URL(hubURL), capabilities); String hubURL = "http://localhost:4444";
  • 41. RUN THE CODE AND OBSERVE
  • 43.
  • 44. BRING NODE DOWN AND OBSERVE ON JAEGER
  • 45.
  • 46.
  • 47. Key references 1. https://www.selenium.dev/blog/2021/selenium-4-observability/ 2. https://www.selenium.dev/documentation/webdriver/remote_webdriver/ 3. https://github.com/manoj9788/tracing-selenium-grid 4. https://get-coursier.io/docs/cli-installation 5. https://www.ibm.com/docs/en/sdk-java-technology/7.1?topic=jjc-specifying-java- options-system-properties-2 6. https://github.com/SeleniumHQ/selenium/blob/selenium-4.0.0-beta- 1/java/server/src/org/openqa/selenium/grid/commands/tracing.txt 7. https://opentelemetry.io/docs/java/ 8. https://www.lambdatest.com/blog/selenium-grid-4-tutorial-for-distributed-testing/ 9. https://www.browserstack.com/guide/selenium-grid-4-tutorial 10.https://docs.docker.com/compose/environment-variables/ 11.https://github.com/SeleniumHQ/docker-selenium