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

kubernetes를 부탁해~ Prometheus 기반 Monitoring 구축&활용기
kubernetes를 부탁해~ Prometheus 기반 Monitoring 구축&활용기kubernetes를 부탁해~ Prometheus 기반 Monitoring 구축&활용기
kubernetes를 부탁해~ Prometheus 기반 Monitoring 구축&활용기Jinsu Moon
 
[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여Ji-Woong Choi
 
Code Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherCode Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherSUSE
 
Ansible Tutorial.pdf
Ansible Tutorial.pdfAnsible Tutorial.pdf
Ansible Tutorial.pdfNigussMehari4
 
컨테이너 기술과 가상화 기술의 주요한 차이점
컨테이너 기술과 가상화 기술의 주요한 차이점컨테이너 기술과 가상화 기술의 주요한 차이점
컨테이너 기술과 가상화 기술의 주요한 차이점Opennaru, inc.
 
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링OpenStack Korea Community
 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins PipelinesSteffen Gebert
 
DevOps Roadmap.pptx
DevOps Roadmap.pptxDevOps Roadmap.pptx
DevOps Roadmap.pptxHARSH MANVAR
 
Open shift 4 infra deep dive
Open shift 4    infra deep diveOpen shift 4    infra deep dive
Open shift 4 infra deep diveWinton Winton
 
OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드
OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드
OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드Ian Choi
 
Leveraging Azure DevOps across the Enterprise
Leveraging Azure DevOps across the EnterpriseLeveraging Azure DevOps across the Enterprise
Leveraging Azure DevOps across the EnterpriseAndrew Kelleher
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentationJohn Lynch
 
Kubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersKubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersPlatform9
 
OpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
OpenStack 개요 및 활용 사례 @ Community Open Camp with MicrosoftOpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
OpenStack 개요 및 활용 사례 @ Community Open Camp with MicrosoftIan Choi
 
DevJam 2019 - Introduction to Kubernetes
DevJam 2019 - Introduction to KubernetesDevJam 2019 - Introduction to Kubernetes
DevJam 2019 - Introduction to KubernetesRonny Trommer
 
kubernetes - minikube - getting started
kubernetes - minikube - getting startedkubernetes - minikube - getting started
kubernetes - minikube - getting startedMunish Mehta
 

What's hot (20)

kubernetes를 부탁해~ Prometheus 기반 Monitoring 구축&활용기
kubernetes를 부탁해~ Prometheus 기반 Monitoring 구축&활용기kubernetes를 부탁해~ Prometheus 기반 Monitoring 구축&활용기
kubernetes를 부탁해~ Prometheus 기반 Monitoring 구축&활용기
 
[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여[오픈소스컨설팅]오픈스택에 대하여
[오픈소스컨설팅]오픈스택에 대하여
 
Accelerating with Ansible
Accelerating with AnsibleAccelerating with Ansible
Accelerating with Ansible
 
Code Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherCode Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et Rancher
 
Ansible Tutorial.pdf
Ansible Tutorial.pdfAnsible Tutorial.pdf
Ansible Tutorial.pdf
 
컨테이너 기술과 가상화 기술의 주요한 차이점
컨테이너 기술과 가상화 기술의 주요한 차이점컨테이너 기술과 가상화 기술의 주요한 차이점
컨테이너 기술과 가상화 기술의 주요한 차이점
 
Powershell training material
Powershell training materialPowershell training material
Powershell training material
 
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
[OpenInfra Days Korea 2018] (Track 4) - Grafana를 이용한 OpenStack 클라우드 성능 모니터링
 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines
 
DevOps Roadmap.pptx
DevOps Roadmap.pptxDevOps Roadmap.pptx
DevOps Roadmap.pptx
 
Open shift 4 infra deep dive
Open shift 4    infra deep diveOpen shift 4    infra deep dive
Open shift 4 infra deep dive
 
OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드
OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드
OpenStack을 중심으로 한 오픈 소스 & 상용 하이브리드 클라우드
 
Leveraging Azure DevOps across the Enterprise
Leveraging Azure DevOps across the EnterpriseLeveraging Azure DevOps across the Enterprise
Leveraging Azure DevOps across the Enterprise
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
Kubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersKubernetes Helm: Why It Matters
Kubernetes Helm: Why It Matters
 
OpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
OpenStack 개요 및 활용 사례 @ Community Open Camp with MicrosoftOpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
OpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
 
DevJam 2019 - Introduction to Kubernetes
DevJam 2019 - Introduction to KubernetesDevJam 2019 - Introduction to Kubernetes
DevJam 2019 - Introduction to Kubernetes
 
Power of Azure Devops
Power of Azure DevopsPower of Azure Devops
Power of Azure Devops
 
Basic 50 linus command
Basic 50 linus commandBasic 50 linus command
Basic 50 linus command
 
kubernetes - minikube - getting started
kubernetes - minikube - getting startedkubernetes - minikube - getting started
kubernetes - minikube - getting started
 

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

Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
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 DevelopersWSO2
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
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 Pakistandanishmna97
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard37
 
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 ModelDeepika Singh
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAnitaRaj43
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
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 2024Victor Rentea
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
"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 ...Zilliz
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 

Recently uploaded (20)

Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
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
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
JohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptxJohnPollard-hybrid-app-RailsConf2024.pptx
JohnPollard-hybrid-app-RailsConf2024.pptx
 
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
 
AI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by AnitarajAI in Action: Real World Use Cases by Anitaraj
AI in Action: Real World Use Cases by Anitaraj
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
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
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
"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 ...
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 

#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