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 T e st s Sa rg i 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 Sa rg sya n   D i re ct o r ,   Q u a l i t 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 Se l e n i u G ri d 3 R u n n i n g   Se l e n i u Su i t e   i n   Pa ra l l e l 4 W h a t   i D o cke Se l e n i u m 5 C o n f i g u re   Se l e n i u G ri d   i n   D o cke 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 G ri d   D o cke r
5 W h a t   i Se l e n i u G ri d Se l e n i u G ri d   i a   sma rt   p ro xy  se rve t h a t   a l l o w Se l e n i u t e st t o   ro u t e   co mma n d t o   re mo t e   w e b   b ro w se i n st a n ce s.   I t a i i t o   p ro vi d e   a n   e a sy  w a t o   ru n   t e st 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 G ri d ,   o n e   se rve a ct a t h e   h u b   t h a t   ro u t e JSO N   f o rma t t e d   t e st   co mma n d t o   o n e   o mo re   re g i st e re d   G ri d   n o d e s.   T e st 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 i n st a n ce s.   T h e   h u b   h a 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 a cce ss  t o ,   a n d   a l l o w u t o   co n t ro l   t h e se   i n st a n ce s.   Se l e n i u G ri d   a l l o w u t o   ru n   t e st 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 ve rsi o n a n d   b ro w se co n f i g u ra t i o n ce n t ra l l (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 G ri d   i sn ' t   a   si l ve b u l l e t .   I t   so l ve 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 e xa mp l e   n o t   ma n a g e   yo u i n f ra st ru ct u re   a n d   mi g h t   n o t   su i t   yo u sp e ci f i n e e d s. Se l e n i u 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 f ro h t t p s: / / w w w . ra n o re x. co m
6 W h a t   i Se l e n i u 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 re q u e st t o   ru n   t e st s T a ke i n st ru ct i o n f ro cl i e n t   a n d   e xe cu t e t h e re mo t e l o n   t h e   nodes Ma n a g e 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 i 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 i t ca p a b i l i t i e s R e ce i ve re q u e st f ro t h e   h u b   a n d   e xe cu t e t h e m Nodes
7 D o cke Se l e n i u G ri d Se l e n i u h u b   i ma g e Se l e n i u n o d e -f i re f o i ma g e Se l e n i u n o d e -ch ro me   i ma g e Se l e n i u 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 n o d e -ch ro me -d e b u g   i ma g e Se l e n i u 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 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 n o d e i n t o   D o cke 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 f ro t h e   D o cke co n t a i n e r . Se l e n i u 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 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 D o cke l o ca l l y Se l e n i u D o cke
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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 D o cke u p   u si n g   D o cke 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 D o cke u p   u si n g   D o cke 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 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 w o rks  co n ce p t u a l l 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 w o rks  co n ce p t u a l l 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 T e st s D e mo
Z a l e n i u u p   u si n g   D o cke 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 u p   u si n g   D o cke 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 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