Selenoid: browsers in containers

IvanKroutov 845 views 57 slides Sep 25, 2017
Slide 1
Slide 1 of 57
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57

About This Presentation

Slides for my talk at QAFest 2017.


Slide Content

Selenoid: browsers in containers
by Ivan Krutov

About me
Java & Golang developer
Allure Framework contributor
Devops
Big Selenium cluster

Big Selenium cluster
5000+ browsers
5 data centers
4000 rps
800 Mbit/s
24/7/365
Linux (desktop)
Windows (IE, Edge)
Android Emulators
iOS Simulators
Real devices

Ways to test in browsers

#1: test online

#2: Selenium Server

SelenoidSelenium
#3: Selenoid

How Selenium works

Linux covers 80% of browsers

Let’s use containers!

How Selenoid works
Selenoid Container

Selenoid without Docker

Selenoid applications
Local browser tests development
Creating big Selenium clusters

Installation

StackOverflow statistics
> 60 000 questions about Selenium

Installing Selenium
Manually install Java
Manually download Selenium JAR
Manually download web-driver binaries
Manually unpack web-drivers from archives
Manually install required browsers
Manually type complicated start command

Installing Selenoid
Just one short command:
$./cm selenoid start

Running tests

Selenium window focus problem

Selenium browser settings problem

Selenoid runs isolated browsers

Debugging tests

Selenium: grid console and eyes

Selenoid: rich UI

Selenoid: usage statistics

Live Browser Screen

Live Selenium Logs

Adding new browsers

Installing new version is a pain
/usr/bin
FF 45
FF 46

Selenium compatibility issues
Chromedriver ???56

Computer is cluttered with waste

Selenoid: self-contained images

Images for all recent browsers
3.6+ 33.0+
12.16
48.0+

Custom screen resolution

Compatible with other images
https://github.com/SeleniumHQ/docker-selenium
https://github.com/elgalu/docker-selenium
https://github.com/paypal/docker-selion

Demo

Creating big cluster

Selenium Grid

Selenium Grid flaws
It is Java increased memory consumption

Built-in UI consuming resources
No simple way to collect usage statistics & logs
Hard to maintain different browser versions

Selenoid: created for big clusters

Ultra-fast and lightweight
100% Golang
7 Mb binary
60 Mb RAM

Fine-grained resources control
Limit total number of sessions per host
Queues
Limit CPUs per container
Limit RAM per container

Tmpfs support

Centralized logs support
Selenoid
E
L
K

Statistics as JSON
Selenoid
Graphite
InfluxDB
ElasticSearch
Grafana

Standalone UI

Hot configuration reload

Ggr for scalability and reliability

Some numbers

Well documented

SelenoidSelenium

References
https://github.com/aerokube/selenoid
@aerokube
http://telegram.me/aerokube
http://aerokube.com/
[email protected]