Feature: Tag indexing
The tool is capable of determining which indexes are already in use in a test suite. If no other set of indexes is
provided, these existing indexes are what will be used to pick what indexes the tool will start with when tagging.
Using this default, new indexes start after the highest found index so as not to repeat the indexes of older tests
that might have since been removed. This default behavior can be overridden by providing an initial index from which
to start tagging.
An analogous principle is used for outlines.
*Note*: When indexing, a tag prefix of '@test_case_' and a column id of 'test_case_id' will be used unless different
values are specified
Scenario: Used indexes can be determined
Given the following feature file "file1.feature":
"""
Feature:
Scenario:
* a step
@test_case_1
Scenario:
* a step
@test_case_7
Scenario Outline:
* a step
Examples: with rows
| test_case_id | param 1 |
| 7-1 | value 1 |
Examples: without rows
| test_case_id | param 1 |
Examples: with empty rows
| test_case_id | param 1 |
| | value 1 |
| 7-2 | value 2 |
Examples: without an id parameter
| param 1 |
| value 1 |
# Missing the parent tag but the sub-tags still count
Scenario Outline:
* a step
Examples: with rows
| test_case_id | param 1 |
| 8-1 | value 1 |
Examples: with a non-indexed id
| test_case_id | param 1 |
| trash | value 1 |
"""
And the following feature file "file2.feature":
"""
Feature: Just another feature to make sure that the entire suite is checked
@test_case_5
Scenario:
* a step
"""
When the existing ids are determined
Then the following ids are found:
| 1 |
| 5 |
| 7 |
| 7-1 |
| 7-2 |
| 8-1 |
Scenario: No existing tags
Given the following feature file:
"""
Feature:
Scenario:
* a step
"""
When the file is processed
Then the resulting file is:
"""
Feature:
@test_case_1
Scenario:
* a step
"""
Scenario: Existing tags
Given the following feature file:
"""
Feature:
Scenario:
* a step
@test_case_1
Scenario:
* a step
"""
And the following feature file:
"""
Feature: Another file to test that the entire suite is checked
@test_case_5
Scenario:
* a step
"""
When the file is processed
Then the resulting file "1" is:
"""
Feature:
@test_case_6
Scenario:
* a step
@test_case_1
Scenario:
* a step
"""
And the resulting file "2" is:
"""
Feature: Another file to test that the entire suite is checked
@test_case_5
Scenario:
* a step
"""
Scenario: Explicit starting index
Note: By explicitly setting the starting index, there is no guarantee that the indexes used will not conflict with
existing indexes.
Given the following feature file:
"""
Feature:
Scenario:
* a step
@test_case_1
Scenario:
* a step
Scenario:
* a step
"""
And a start index of "1"
When the file is processed
Then the resulting file is:
"""
Feature:
@test_case_1
Scenario:
* a step
@test_case_1
Scenario:
* a step
@test_case_2
Scenario:
* a step
"""
Scenario: Outline, no existing sub-ids
Given the following feature file:
"""
Feature:
Scenario Outline:
* a
Examples:
| param |
| value |
"""
When the file is processed
Then the resulting file is:
"""
Feature:
@test_case_1
Scenario Outline:
* a
Examples:
| param | test_case_id |
| value | 1-1 |
"""
Scenario: Outline, existing sub-ids
Note: Existing sub ids count against the indexes available for their associated parent id. If ids are mismatched (see
the feature on test case id validation), indexes are still assigned appropriately to avoid duplication.
Given the following feature file:
"""
Feature:
@test_case_1
Scenario Outline:
* a
Examples:
| param | test_case_id |
| value1 | 1-1 |
| value2 | |
Examples:
| param | test_case_id |
| value1 | 1-3 |
| value2 | |
Scenario Outline:
* a
Examples: with a sub-id not associated with the parent test case
| param | test_case_id |
| value1 | 8-1 |
| value2 | |
@test_case_8
Scenario Outline: the outline that sub-id 8-1 should count against
* a
Examples:
| param | test_case_id |
| value2 | |
"""
When the file is processed
Then the resulting file is:
"""
Feature:
@test_case_1
Scenario Outline:
* a
Examples:
| param | test_case_id |
| value1 | 1-1 |
| value2 | 1-4 |
Examples:
| param | test_case_id |
| value1 | 1-3 |
| value2 | 1-5 |
@test_case_9
Scenario Outline:
* a
Examples: with a sub-id not associated with the parent test case
| param | test_case_id |
| value1 | 8-1 |
| value2 | 9-1 |
@test_case_8
Scenario Outline: the outline that sub-id 8-1 should count against
* a
Examples:
| param | test_case_id |
| value2 | 8-2 |
"""
Scenario: Outline, explicit starting index
Note: Explicit starting indexes for sub-ids can be declared even if the parent id does not exist yet.
Note: By explicitly setting the starting index, there is no guarantee that the indexes used will not conflict with
existing indexes.
Given the following feature file:
"""
Feature:
@test_case_1
Scenario Outline:
* a
Examples:
| param | test_case_id |
| value1 | 1-2 |
| value2 | |
| value3 | |
Scenario Outline:
* a
Examples:
| param | test_case_id |
| value1 | 2-1 |
| value2 | |
| value3 | |
"""
And a start index of "2"
And a start index of "1" for testcase "1"
And a start index of "1" for testcase "2"
When the file is processed
Then the resulting file is:
"""
Feature:
@test_case_1
Scenario Outline:
* a
Examples:
| param | test_case_id |
| value1 | 1-2 |
| value2 | 1-1 |
| value3 | 1-2 |
@test_case_2
Scenario Outline:
* a
Examples:
| param | test_case_id |
| value1 | 2-1 |
| value2 | 2-1 |
| value3 | 2-2 |
"""
Scenario: Default indexing still applies to non-explicit indexes
Given the following feature file:
"""
Feature:
Scenario Outline: Letting the default set the primary index
* a
Examples:
| param | test_case_id |
| value1 | 1-2 |
| value2 | 3-2 |
| value3 | |
@test_case_2
Scenario Outline:
* a
Examples:
| param | test_case_id |
| value1 | 2-1 |
| value2 | |
| value3 | |
"""
And a start index of "1" for testcase "2"
When the file is processed
Then the resulting file is:
"""
Feature:
@test_case_3
Scenario Outline: Letting the default set the primary index
* a
Examples:
| param | test_case_id |
| value1 | 1-2 |
| value2 | 3-2 |
| value3 | 3-3 |
@test_case_2
Scenario Outline:
* a
Examples:
| param | test_case_id |
| value1 | 2-1 |
| value2 | 2-1 |
| value3 | 2-2 |
"""