Skip to content

Commit 5f0f5db

Browse files
authored
Merge pull request #100 from ppodgorsek/issue-76
Issue #76 - Add parallel execution support
2 parents 7461d26 + 3971715 commit 5f0f5db

File tree

5 files changed

+74
-23
lines changed

5 files changed

+74
-23
lines changed

.travis.yml

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,28 @@ services:
44
- docker
55

66
script:
7-
- docker build -t docker-robot-framework .
8-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome docker-robot-framework
9-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox docker-robot-framework
10-
11-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e SCREEN_COLOUR_DEPTH=8 docker-robot-framework
12-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e SCREEN_COLOUR_DEPTH=8 docker-robot-framework
13-
14-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e SCREEN_WIDTH=800 -e SCREEN_HEIGHT=600 docker-robot-framework
15-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e SCREEN_WIDTH=1024 -e SCREEN_HEIGHT=768 docker-robot-framework
16-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e SCREEN_WIDTH=1280 -e SCREEN_HEIGHT=1024 docker-robot-framework
17-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e SCREEN_WIDTH=2560 -e SCREEN_HEIGHT=1440 docker-robot-framework
18-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e SCREEN_WIDTH=3840 -e SCREEN_HEIGHT=2160 docker-robot-framework
19-
20-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e SCREEN_WIDTH=800 -e SCREEN_HEIGHT=600 docker-robot-framework
21-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e SCREEN_WIDTH=1024 -e SCREEN_HEIGHT=768 docker-robot-framework
22-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e SCREEN_WIDTH=1280 -e SCREEN_HEIGHT=1024 docker-robot-framework
23-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e SCREEN_WIDTH=2560 -e SCREEN_HEIGHT=1440 docker-robot-framework
24-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e SCREEN_WIDTH=3840 -e SCREEN_HEIGHT=2160 docker-robot-framework
25-
26-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e ROBOT_OPTIONS="--loglevel DEBUG" docker-robot-framework
27-
- docker run -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e ROBOT_OPTIONS="--loglevel DEBUG" docker-robot-framework
7+
- docker build -t docker-robot-framework:ci .
8+
9+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome docker-robot-framework:ci
10+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox docker-robot-framework:ci
11+
12+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e SCREEN_COLOUR_DEPTH=8 docker-robot-framework:ci
13+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e SCREEN_COLOUR_DEPTH=8 docker-robot-framework:ci
14+
15+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e SCREEN_WIDTH=800 -e SCREEN_HEIGHT=600 docker-robot-framework:ci
16+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e SCREEN_WIDTH=1024 -e SCREEN_HEIGHT=768 docker-robot-framework:ci
17+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e SCREEN_WIDTH=1280 -e SCREEN_HEIGHT=1024 docker-robot-framework:ci
18+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e SCREEN_WIDTH=2560 -e SCREEN_HEIGHT=1440 docker-robot-framework:ci
19+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e SCREEN_WIDTH=3840 -e SCREEN_HEIGHT=2160 docker-robot-framework:ci
20+
21+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e SCREEN_WIDTH=800 -e SCREEN_HEIGHT=600 docker-robot-framework:ci
22+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e SCREEN_WIDTH=1024 -e SCREEN_HEIGHT=768 docker-robot-framework:ci
23+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e SCREEN_WIDTH=1280 -e SCREEN_HEIGHT=1024 docker-robot-framework:ci
24+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e SCREEN_WIDTH=2560 -e SCREEN_HEIGHT=1440 docker-robot-framework:ci
25+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e SCREEN_WIDTH=3840 -e SCREEN_HEIGHT=2160 docker-robot-framework:ci
26+
27+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e ROBOT_OPTIONS="--loglevel DEBUG" docker-robot-framework:ci
28+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e ROBOT_OPTIONS="--loglevel DEBUG" docker-robot-framework:ci
29+
30+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=chrome -e ROBOT_THREADS=4 docker-robot-framework:ci
31+
- docker run --shm-size=1g -v `pwd`/test:/opt/robotframework/tests:Z -e BROWSER=firefox -e ROBOT_THREADS=4 docker-robot-framework:ci

Dockerfile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,16 @@ ENV SCREEN_COLOUR_DEPTH 24
1212
ENV SCREEN_HEIGHT 1080
1313
ENV SCREEN_WIDTH 1920
1414

15+
# Set number of threads for parallel execution
16+
# By default, no parallelisation
17+
ENV ROBOT_THREADS 1
18+
1519
# Dependency versions
1620
ENV CHROMIUM_VERSION 67.0.*
1721
ENV FAKER_VERSION 4.2.0
1822
ENV FIREFOX_VERSION 61.0*
1923
ENV GECKO_DRIVER_VERSION v0.19.1
24+
ENV PABOT_VERSION 0.43
2025
ENV PYTHON_PIP_VERSION 9.0.*
2126
ENV ROBOT_FRAMEWORK_VERSION 3.0.4
2227
ENV SELENIUM_LIBRARY_VERSION 3.1.1
@@ -39,6 +44,7 @@ RUN dnf upgrade -y \
3944
RUN pip install \
4045
robotframework==$ROBOT_FRAMEWORK_VERSION \
4146
robotframework-faker==$FAKER_VERSION \
47+
robotframework-pabot==$PABOT_VERSION \
4248
robotframework-seleniumlibrary==$SELENIUM_LIBRARY_VERSION
4349

4450
# Download Gecko drivers directly from the GitHub repository

README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ The versions used in the latest version are:
1717

1818
* [Robot Framework](https://github.com/robotframework/robotframework) 3.0.4
1919
* [Robot Framework Faker](https://github.com/guykisel/robotframework-faker) 4.2.0
20+
* [Robot Framework Pabot](https://github.com/mkorpela/pabot) 0.43
2021
* [Robot Framework SeleniumLibrary](https://github.com/robotframework/SeleniumLibrary) 3.1.1
2122
* Firefox 61.0
2223
* Chromium 67.0
@@ -46,6 +47,16 @@ It is possible to define the settings of the virtual screen in which the browser
4647
* `SCREEN_HEIGHT` (default: 1080)
4748
* `SCREEN_WIDTH` (default: 1920)
4849

50+
### Parallelisation
51+
52+
It is possible to parallelise the execution of your test suites. Simply define the `ROBOT_THREADS` environment variable, for example:
53+
54+
docker run \
55+
-e ROBOT_THREADS=4 \
56+
ppodgorsek/robot-framework:latest
57+
58+
By default, there is no parallelisation.
59+
4960
### Passing additional options
5061

5162
RobotFramework supports many options such as `--exclude`, `--variable`, `--loglevel`, etc. These can be passed by using the `ROBOT_OPTIONS` environment variable, for example:

bin/run-tests-in-virtual-screen.sh

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,21 @@
11
#!/bin/bash
22

3-
xvfb-run --server-args="-screen 0 ${SCREEN_WIDTH}x${SCREEN_HEIGHT}x${SCREEN_COLOUR_DEPTH} -ac" robot --outputDir /opt/robotframework/reports ${ROBOT_OPTIONS} /opt/robotframework/tests
3+
# No need for the overhead of Pabot if no parallelisation is required
4+
if [ $ROBOT_THREADS -eq 1 ]
5+
then
6+
xvfb-run \
7+
--server-args="-screen 0 ${SCREEN_WIDTH}x${SCREEN_HEIGHT}x${SCREEN_COLOUR_DEPTH} -ac" \
8+
robot \
9+
--outputDir /opt/robotframework/reports \
10+
${ROBOT_OPTIONS} \
11+
/opt/robotframework/tests
12+
else
13+
xvfb-run \
14+
--server-args="-screen 0 ${SCREEN_WIDTH}x${SCREEN_HEIGHT}x${SCREEN_COLOUR_DEPTH} -ac" \
15+
pabot \
16+
--verbose \
17+
--processes $ROBOT_THREADS \
18+
--outputDir /opt/robotframework/reports \
19+
${ROBOT_OPTIONS} \
20+
/opt/robotframework/tests
21+
fi

test/simpletest.robot

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,18 @@ Library SeleniumLibrary
55
${BROWSER} %{BROWSER}
66

77
*** Test Cases ***
8+
Visit Baidu
9+
Open Browser https://www.baidu.com ${BROWSER}
10+
Capture Page Screenshot
11+
12+
Visit Bing
13+
Open Browser https://www.bing.com ${BROWSER}
14+
Capture Page Screenshot
15+
816
Visit Google
9-
Open Browser http://www.google.com ${BROWSER}
17+
Open Browser https://www.google.com ${BROWSER}
18+
Capture Page Screenshot
19+
20+
Visit Yahoo
21+
Open Browser https://search.yahoo.com ${BROWSER}
1022
Capture Page Screenshot

0 commit comments

Comments
 (0)