RobotFramework
Intro
Robot Framework is a generic open source automation framework. It can be used for test automation and robotic process automation (RPA).
Robot Framework is actively supported, with many industry-leading companies using it in their software development. Robot Framework is open and extensible and can be integrated with virtually any other tool to create powerful and flexible automation solutions. Being open source also means that Robot Framework is free to use without licensing costs.
Robot Framework has easy syntax, utilizing human-readable keywords. Its capabilities can be extended by libraries implemented with Python or Java. The framework has a rich ecosystem around it, consisting of libraries and tools that are developed as separate projects.
Integration with Kraken CI
The following example shows how to execute RobotFramework tests in Kraken CI. The presented workflow stage does:
- pulls RobotFramefork project,
- installs roboframework package using Python's pip tool,
- runs RobotFramework tests generating results in JUnit format
- collects results from JUnit file
- and then stores generated reports by RobotFramework
def stage(ctx):
return {
"parent": "root",
"triggers": {
"parent": True,
},
"parameters": [],
"configs": [],
"jobs": [{
"name": "robot",
"steps": [{
"tool": "git",
"checkout": "https://github.com/robotframework/RobotDemo.git"
}, {
"tool": "shell",
"cmd": "python3 -m venv venv && ./venv/bin/pip install robotframework"
}, {
"tool": "shell",
"cmd": "../venv/bin/robot --nostatusrc -x junit.xml *.robot",
"cwd": "RobotDemo"
}, {
"tool": "junit_collect",
"cwd": "RobotDemo",
"file_glob": "junit.xml"
}, {
"tool": "artifacts",
"cwd": "RobotDemo",
"source": ["log.html", "report.html"],
"report_entry": "report.html",
"public": True
}],
"environments": [{
"system": "krakenci/ubuntu:20.04",
"executor": "docker",
"agents_group": "all",
"config": "default"
}]
}]
}
Let's dissect the workflow to particular steps and explain them.
}, {
"tool": "shell",
"cmd": "python3 -m venv venv && ./venv/bin/pip install robotframework"
}, {
This step prepares Python's virtualenv folder and then install RobotFramework using pip to this venv.
}, {
"tool": "shell",
"cmd": "../venv/bin/robot --nostatusrc -x junit.xml *.robot",
"cwd": "RobotDemo"
}, {
This one starts RobotFramework int the folder with .robot
files. It
also says to RobotFramework to not return error exit code in case of
failure using --nostatusrc
switch as non-zero exit code would be
read by Kraken as an error of tests execution. And then -x junit.xml
switch indicates to store results in JUnit format in the indicated
file.
}, {
"tool": "junit_collect",
"cwd": "RobotDemo",
"file_glob": "junit.xml"
}, {
This step collects results stored in junit.xml
file and uploads them
to Kraken CI server. More details about junit_collect
tool can be
found in its docs section.
}, {
"tool": "artifacts",
"cwd": "RobotDemo",
"source": ["log.html", "report.html"],
"report_entry": "report.html",
"public": True
}],
And the last step takes generated HTML reports by RobotFramework and uploads them to Kraken CI server indicating which document is an entry one.
As a result of the execution of this stage in the Kraken's web UI, there will be:
- set of test case results
- report about RobotFramework execution
Demo: https://lab.kraken.ci/branches/26
Sources: https://github.com/Kraken-CI/workflow-examples/blob/main/robotframework/one.py