H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s Sa rg i s  Sa rg sya n W o rksh o p ,   SQ A   D a ys  EU ,   L a t vi a   2 0 1 9
2 Sa rg i s  Sa rg sya n   D i re ct o r ,   Q u a l i t y  Assu ra n ce   a t   Pi csArt
3 I n t ro d u ct i o n   t o   Pre se n t a t i o n 1 W h y? 2 W h a t   i s  Se l e n i u m  G ri d 3 R u n n i n g   Se l e n i u m  Su i t e   i n   Pa ra l l e l 4 W h a t   i s  D o cke r  Se l e n i u m 5 C o n f i g u re   Se l e n i u m  G ri d   i n   D o cke r  C o n t a i n e rs 6 C re a t i n g   a n d   ma i n t a i n i n g     d o cke r-co mp o se   f i l e 7 Z a l e n i u m   9 Q &A 8 Se l e n o i d
G e t t i n g   St a rt e d   w i t h   Se l e n i u m  G ri d   &  D o cke r
5 W h a t   i s  Se l e n i u m  G ri d Se l e n i u m  G ri d   i s  a   sma rt   p ro xy  se rve r  t h a t   a l l o w s  Se l e n i u m  t e st s  t o   ro u t e   co mma n d s  t o   re mo t e   w e b   b ro w se r  i n st a n ce s.   I t s  a i m  i s  t o   p ro vi d e   a n   e a sy  w a y  t o   ru n   t e st s  i n   p a ra l l e l   o n   mu l t i p l e   ma ch i n e s.   W i t h   Se l e n i u m  G ri d ,   o n e   se rve r  a ct s  a s  t h e   h u b   t h a t   ro u t e s  JSO N   f o rma t t e d   t e st   co mma n d s  t o   o n e   o r  mo re   re g i st e re d   G ri d   n o d e s.   T e st s  co n t a ct   t h e   h u b   t o   o b t a i n   a cce ss  t o   re mo t e   b ro w se r  i n st a n ce s.   T h e   h u b   h a s  a   l i st   o f   re g i st e re d   se rve rs  t h a t   i t   p ro vi d e s  a cce ss  t o ,   a n d   a l l o w s  u s  t o   co n t ro l   t h e se   i n st a n ce s.   Se l e n i u m  G ri d   a l l o w s  u s  t o   ru n   t e st s  i n   p a ra l l e l   o n   mu l t i p l e   ma ch i n e s,   a n d   t o   ma n a g e   d i f f e re n t   b ro w se r  ve rsi o n s  a n d   b ro w se r  co n f i g u ra t i o n s  ce n t ra l l y  (i n st e a d   o f   i n   e a ch   i n d i vi d u a l   t e st ).   Se l e n i u m  G ri d   i sn ' t   a   si l ve r  b u l l e t .   I t   so l ve s  a   su b se t   o f   co mmo n   d e l e g a t i o n   a n d   d i st ri b u t i o n   p ro b l e ms,   b u t   w i l l   f o r  e xa mp l e   n o t   ma n a g e   yo u r  i n f ra st ru ct u re   a n d   mi g h t   n o t   su i t   yo u r  sp e ci f i c  n e e d s. Se l e n i u m  G ri d a * Se l e n i u mH Q   D o cu me n t a t i o n D i a g ra m  f ro m  h t t p s: / / w w w . ra n o re x. co m
6 W h a t   i s  Se l e n i u m  H u b   a n d   N o d e s • I n t e rme d i a ry  a n d   ma n a g e r • Acce p t s  re q u e st s  t o   ru n   t e st s • T a ke s  i n st ru ct i o n s  f ro m  cl i e n t   a n d   e xe cu t e s  t h e m  re mo t e l y  o n   t h e   nodes • Ma n a g e s  t h re a d s Hub a * Se l e n i u mH Q   D o cu me n t a t i o n • T h i s  i s  w h e re   t h e   b ro w se rs  l i ve • R e g i st e rs  i t se l f   t o   t h e   h u b   a n d   co mmu n i ca t e s  i t s  ca p a b i l i t i e s • R e ce i ve s  re q u e st s  f ro m  t h e   h u b   a n d   e xe cu t e s  t h e m Nodes
7 D o cke r  Se l e n i u m  G ri d • Se l e n i u m  h u b   i ma g e • Se l e n i u m  n o d e -f i re f o x  i ma g e • Se l e n i u m  n o d e -ch ro me   i ma g e • Se l e n i u m  n o d e -f i re f o x-d e b u g   i ma g e • Se l e n i u m  n o d e -ch ro me -d e b u g   i ma g e Se l e n i u m  I ma g e s a * Se l e n i u mH Q   D o cu me n t a t i o n As  n o rma l   g ri d   w i t h   d o cke r  w e   h a ve   t o   i n st a l l   t h e   h u b   a n d   b ro w se r  n o d e s  i n t o   D o cke r  co n t a i n e rs  a n d   t h e n   st a rt   t h e   h u b   a n d   n o d e s  f ro m  t h e   D o cke r  co n t a i n e r . Se l e n i u m  G ri d   w i t h   D o cke r
Pre p a re   Sa mp l e   T e st s R u n   t e st s:    O p e n   a   t e rmi n a l         C l o n e   t h i s  p ro j e ct   
 ~$ git clone https://github.com/sargissargsyan/selenium- parallel-run.git    cd selenium-parallel-run    mvn clean install -DskipTests    mvn failsafe:integration-test
Se t u p   Se l e n i u m  D o cke r  l o ca l l y Se l e n i u m  D o cke r 
H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s R u n   t e st s:    O p e n   a   t e rmi n a l         C l o n e   t h i s  p ro j e ct   
 ~$ git clone https://github.com/sargissargsyan/selenium- parallel-run.git    cd selenium-parallel-run    mvn clean install -DskipTests    mvn failsafe:integration-test -Dselenium.remote=false
H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s D e mo
12 H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s ~ $  docker -v  Docker version 18.09.2, build 6247962
13 H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s java version "1.8.0_191" Java(TM) SE Runtime  Environment (build 1.8.0_191-b12) Java HotSpot(TM)  64-Bit Server VM (build 25.191-b12, mixed mode) ~ $  java -version
14 H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s Apache Maven 3.6.0  (97c98ec64a1fdfee7767ce5ffb20918da4f719f3;  2018-10-24T22:41:47+04:00) ~ $  mvn -v 
15 H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s docker-compose version 1.23.2, build 1110ad01 ~ $  docker-compose -v
16 H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s docker-machine version 0.16.1, build cce350d7 ~ $  docker-machine -v
H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s ~ $  docker network create grid
18 H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s ~ $  docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/ standalone-chrome:3.141.59-lithium
19 H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s ~ $  docker run -d --net grid -e HUB_HOST=selenium-hub -v /dev/ shm:/dev/shm selenium/node-chrome:3.141.59-lithium
H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s
H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s D e mo
H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s ~ $  docker network rm grid ~ $  docker stop selenium-hub ~ $  docker rm selenium-hub ~ $  docker stop chrome-node ~ $  docker rm chrome-node
Se l e n i u m  D o cke r  u p   u si n g   D o cke r  C o mp o se ~ $  cd /selenium-parallel-run ~ $  docker-compose -f docker-compose-selenium-docker.yml up -d  ~ $  docker-compose -f docker-compose-selenium-docker down
Se l e n i u m  D o cke r  u p   u si n g   D o cke r  C o mp o se D e mo
A   f l e xi b l e   a n d   sca l a b l e   Se l e n i u m  G ri d Zalenium
26 H o w   t o   Bu i l d   Z e a l e n i u m? Z a l e n i u m  w o rks  co n ce p t u a l l y  i n   a   si mp l e   w a y a *  Zalenium   ~ $  docker pull elgalu/selenium ~ $  docker pull dosel/zalenium
27 H o w   t o   Bu i l d   Z e a l e n i u m? Z a l e n i u m  w o rks  co n ce p t u a l l y  i n   a   si mp l e   w a y a *  Zalenium   ~ $  docker run --rm -ti --name zalenium -p 4444:4444 \  -v /var/run/docker.sock:/var/run/docker.sock \        -v /tmp/videos:/home/seluser/videos \                 —privileged dosel/zalenium start
H o w   t o   D o cke ri ze   Pa ra l l e l   Exe cu t i o n   o f   Se l e n i u m  T e st s D e mo
Z a l e n i u m  u p   u si n g   D o cke r  C o mp o se ~ $  cd /selenium-parallel-run ~ $  docker-compose -f docker-compose-zalenium.yml up --force-recreate -d  ~ $  docker-compose -f docker-compose-zalenium.yml down
Z a l e n i u m  u p   u si n g   D o cke r  C o mp o se D e mo
Se l e n o i d
32 Pre   st e p s C re a t e   a   d i re ct o ry  w i t h   n a me   se l e n o i d ~ $  mkdir selenoid C re a t e   b ro w se rs. co n f i g   f i l e ~ $  mkdir config ~ $  touch config/browsers.json C h a n g e   d i re ct o ry  t o   se l e n o i d ~ $  cd selenoid/ Ed i t   b ro w se rs. co n f i g   f i l e ~ $  nano browsers.config
b ro w se r . j so n {     "chrome": {         "default": "72.0",         "versions": {             "72.0": {                 "image": "selenoid/vnc:chrome_72.0",                 "port": "4444",                 "path": "/"             }         }     } }
34 H o w   t o   Bu i l d   Se l e n o i d ? ~/selenoid $  docker run -d \  --name selenoid \  -p 4444:4444 \  -v /var/run/docker.sock:/var/run/docker.sock \  -v `pwd`/config/:/etc/selenoid/:ro \  aerokube/selenoid:latest-release
Se l e n o i d D e mo
36 H o w   t o   Bu i l d   se l e n o i d -u i ? ~/ $  docker run -d --name selenoid-ui  \      --link selenoid \      -p 8080:8080 \      aerokube/selenoid-ui --selenoid-uri=http://selenoid:4444
Se l e n o i d D e mo
38 H o w   t o   Bu i l d   Se l e n o i d   w i t h   C o n f i g u ra t i o n   Ma n a g e r? ~/ $  curl -s https://aerokube.com/cm/bash | bash ~/ $  ./cm selenoid start --vnc > ./cm.exe selenoid start --vnc https://github.com/aerokube/cm/releases ~/ $  ./cm selenoid-ui start
Se l e n o i d D e mo
40 L i n ks https://github.com/SeleniumHQ/docker-selenium  https://opensource.zalando.com/zalenium/ https://aerokube.com/selenoid/latest/ https://aerokube.com/cm/latest/
41 T h a n k  Y o u ! Ñ sa rg i s. sa rg sya n @ l i ve . co m t @ sa rg i se t ą / i n / sa rg i ssa rg sya n