Concerning the test execution environment, we use Selenoid
, which is a new generation of SeleniumHub allowing us to run every testing session in a dockerized environment and in a separate Docker container, be it web tests on the most popular browsers like Chrome or Firefox, or mobile.
Our mobile automation is currently being run in an MCloud
device farm — it's our own internal project — a real device farm held in storages in our office. They're connected to a server through hubs. The farm is used by both manual and automation QA engineers.
And Open STF
is an excellent open-source tool allowing you to control the aggregation of the outside devices. Through the web interface, you can interact with devices: swipe, type, click, install apps, and so on.
For orchestration of the infrastructure components, we use Ansible
. With the help of pre-made playbooks in YAML format, it allows us to deploy and install packages through SSH, to administer the access rights, to create files and configurations, and so on. Ansible allows us to do the above things automatically and not to spend too much time on them.
Our whole testing infrastructure, be it SeleniumGrid or AppiumGrid, is built in a dockerized environment — this means we use Docker containers. If the infrastructure is placed on platforms like Amazon or Google Cloud, you can administer the whole infrastructure by the means of Kubernetes.
We use Jenkins
as a CI tool ubiquitously; it's the most suitable open-source CI/CD tool. With the help of pipelines, we arrange test runs after a dev build and set up various configurations. This was an outline of the theoretical part. The next part would consist of diving into the set-up process and pointing out the things which are crucial for the whole system to function properly.