The test suite is a Cucumber testsuite, and Cucumber is written in the Ruby programming language. Ruby gems (Ruby packages) are used to provide base functionality.
Below is the list of Ruby gems used by the testsuite. It may change over time as the test suite is developped or refactored.
yaml
enables to use files in YAML format
More specifically, to run lists of Cucumber features stored in YAML formatrake
enables to use Rakefiles, the Ruby equivalent of Makefiles
Here, to run the cucumber testsuite with the right command line argumentsminitest
is a framework for unit testingsimplecov
allows to analyze code coverage of the testsuitepp
offers pretty-print of Ruby objectstimeout
enables to interrupt long-running blocks of code
twopence
allows to run commands, import and extract files as one would do with ssh and scp, but with a test-oriented approach (timeouts, etc)lavanda
offers Ruby convenience extensions to twopence
capybara
simulates user interaction with a web interface
It can rely on different drivers for different web browsers.
We use thechromedriver
driver, which offers access to thegoogle Chrome
web browser, (which we run in headless mode)
date
, ```time``: date and time manipulation functionsbase64
,json
,nokogiri
: support for various encodings and data formats: base64, json, XMLnet
,openssl
,uri
,open-uri
,xmlrpc
: support for various network protocolssecurerandom
: UUIDs and other random generationsocket
,stringio
,tempfile
,tmpdir
: file manipulation
english
: English language processingjwt
: JSON Web Token (JWT) standard
Operating system images are built by kiwi, and stored here. Then sumaform uses them.
sumaform starts tests machines with terraform, then provisions them with salt.
sumaform can work with clouds, but most of the time we use it with libvirt/KVM/QEMU virtual machines. To do that, we rely on a libvirt extension to terraform we developed inhouse.
The testsuite runs on a special machine called the control node.