OrderSettingsSection

Order settings inside *** Settings *** section.

OrderSettingsSection is included in the default transformers but it can be also run separately with:

robotidy --transform OrderSettingsSection src

Settings are grouped in following groups:

  • documentation (Documentation, Metadata),

  • imports (Library, Resource, Variables),

  • settings (Suite Setup and Teardown, Test Setup and Teardown, Test Timeout, Test Template),

  • tags (Force Tags, Default Tags)

Then ordered by groups (according to group_order = documentation,imports,settings,tags order). Every group is separated by new_lines_between_groups = 1 new lines. Settings are grouped inside group. Default order can be modified through following parameters:

  • documentation_order = documentation,metadata

  • imports_order = preserved

  • settings_order = suite_setup,suite_teardown,test_setup,test_teardown,test_timeout,test_template

*** Settings ***
Metadata  value  param

Force Tags  tag
...  tag

Documentation  doc  # this is comment
...  another line
Test Timeout  1min

# I want to be keep together with Test Setup

Test Setup  Keyword


Suite Setup  Keyword
Default Tags  1
Suite Teardown  Keyword2

Variables   variables.py
Library  Stuff
Library  Collections
Resource    robot.resource
Library  stuff.py  WITH NAME  alias

Using the same example with non default group order we will move tags from end to beginning of section:

robotidy --configure OrderSettingsSection:group_order=tags,documentation,imports,settings src
*** Settings ***
Metadata  value  param

Force Tags  tag
...  tag

Documentation  doc  # this is comment
...  another line
Test Timeout  1min

# I want to be keep together with Test Setup

Test Setup  Keyword


Suite Setup  Keyword
Default Tags  1
Suite Teardown  Keyword2

Order of setting inside common group can also be changed:

robotidy --configure OrderSettingsSection:settings_order=suite_teardown,suite_setup,test_setup,test_teardown,test_timeout,test_template src
Suite Setup    Suite Setup Keyword
Suite Teardown    Suite Teardown Keyword
Test Timeout    1min

By default order of imports is preserved. You can overwrite this behaviour:

robotidy --configure OrderSettingsSections:imports_order=library,resource,variables

You can also preserve order inside any group by passing preserved instead of setting names:

robotidy --configure OrderSettingsSections:settings_order=preserved

Setting names omitted from custom order will be removed from the file. In following example we are missing metadata therefore all metadata will be removed:

robotidy --configure OrderSettingsSection:documentation_order=documentation

Group of settings are separated by new_lines_between_groups = 1 new lines. It can be configured:

robotidy --configure OrderSettingsSection:new_lines_between_groups=2 src
Library  Collections
Default Tags    tag
Documentation  doc  # this is comment
...  another line
Metadata  value  param

If you’re not preserving the default order of libraries they will be grouped into built in libraries and custom libraries. Parsing errors (such as Resources instead of Resource, duplicated settings) are moved to the end of section.

Test Templating  Template  # parsing error
Library  Stuff
Resource    robot.resource
Library  Dialogs  # built in library