MergeAndOrderSections#

Merge duplicated sections and order them.

Transformer configuration

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

robotidy --transform MergeAndOrderSections src

You can also disable MergeAndOrderSections:

robotidy --configure MergeAndOrderSections:enabled=False src

Default order is: Comments > Settings > Variables > Test Cases > Keywords.

# this is comment section
*** Keywords ***
Keyword
    No Operation

*** Test Cases ***
Test 1
    Log  1

Test 2
    Log  2

*** Settings ***
Library  somelib.py
Test Template    Template


*** Keyword ***
Keyword2
    Log  2
    FOR  ${i}  IN RANGE  10
        Log  ${i}
    END

*** Test Cases ***
Test 3
    Log  3


*** Variables ***  this should be left  alone
${var}  1
@{var2}  1
...  2


*** settings***
Task Timeout  4min

Force Tags  sometag  othertag
*** Comments ***

# this is comment section
*** Settings ***
Library  somelib.py
Test Template    Template


Task Timeout  4min

Force Tags  sometag  othertag
*** Variables ***  this should be left  alone
${var}  1
@{var2}  1
...  2


*** Test Cases ***
Test 1
    Log  1

Test 2
    Log  2

Test 3
    Log  3


*** Keywords ***
Keyword
    No Operation

Keyword2
    Log  2
    FOR  ${i}  IN RANGE  10
        Log  ${i}
    END

Custom order#

You can change sorting order by configuring order parameter with comma separated list of section names (without spaces):

robotidy --configure MergeAndOrderSections:order=settings,keywords,variables,testcases,comments src

Miscellaneous#

Because merging and changing the order of sections can shuffle your empty lines it’s greatly advised to always run NormalizeNewLines transformer after this one. This is done by default so this advice apply only if you’re running transformers separately.

If both *** Test Cases *** and *** Tasks *** are defined in one file they will be merged into one (header name will be taken from first encountered section).

Any data before first section is treated as comment in Robot Framework. This transformer add *** Comments *** section for such lines:

i am comment
# robocop: disable
*** Settings ***
*** Comments ***
i am comment
# robocop: disable
*** Settings ***

You can disable this behaviour by setting create_comment_section to False:

robotidy --configure MergeAndOrderSections:create_comment_section=False src