Telefonica/toolium

View on GitHub
docs/driver_configuration_modification.rst

Summary

Maintainability
Test Coverage
.. _driver_configuration_modification:

Driver Configuration Modification
=================================

Modify configuration by system properties
-----------------------------------------

Properties values configured by properties files can be overridden with system properties. To modify a particular option
within a section, a new system variable should be defined. The property name must be `TOOLIUM_[SECTION]_[OPTION]` and
its value must be `[Section]_[option]=value`, as can be seen in the following example:

.. code:: console

    $ export TOOLIUM_DRIVER_TYPE=Driver_type=chrome

This system property means the same as having the following section in the configuration file::

    [Driver]
    type: chrome

Underscore is allowed in options, but not in sections, for instance:

.. code:: console

    $ export TOOLIUM_SERVER_VIDEO_ENABLED=Server_video_enabled=true

This is the same as having the following section in the configuration file::

    [Server]
    video_enabled: true

To be cross-platform, section and option must be configured both in the property name and in the first token of the
value because they are case sensitive and, in Windows, system properties names are case insensitive.

Modify configuration programmatically
-------------------------------------

Properties values can also be modified programmatically before Toolium uses them to start the driver. There is a method
named `finalize_properties_configuration`, called after reading configuration files and before starting the driver, that
can be monkey patched to modify properties values, for instance:

.. code:: python

    from toolium.driver_wrapper import DriverWrapper

    def finalize_properties_configuration(self):
        if self.config.getboolean_optional('Server', 'enabled'):
            self.config.set('Capabilities', 'selenoid:options', "{'enableVideo': True}"):

    DriverWrapper.finalize_properties_configuration = finalize_properties_configuration