Configuring the Build Step in YAML¶
Learn how to configure the build step in a YAML file.
Before you proceed, note that YAML is whitespace sensitive. Please copy and paste the example in a text editor with syntax highlighting (e.g. Notepad++).
For information on the YAML schema, see the Microsoft reference guide for Azure Pipelines YAML schema.
SpecFlow+LivingDoc custom build step YAML snippet¶
- task: SpecFlowPlus@0
inputs:
#generatorSource: 'FeatureFolder' # Required. Options: FeatureFolder, TestAssembly, FeatureData
#projectFilePath: # Required when generatorSource == FeatureFolder
#testAssemblyFilePath: # Required when generatorSource == TestAssembly
#featureDataJsonFilePath: # Required when generatorSource == FeatureData
#projectName: # Optional
#testExecutionJson: # Optional
#projectLanguage: 'en' # Optional
#workItemPrefix: # Optional
#workItemUrlTemplate: # Optional
#bindingAssemblies: # Optional
#output: # Optional
Arguments¶
Argument | Description |
---|---|
generatorSource | FeatureFolder: Generate living documentation from feature files from the file system. TestAssembly: Generate living documentation from a compiled SpecFlow test assembly. FeatureData: Generate living documentation from pre-parsed features stored in a Feature Data JSON file. |
projectFilePath | The folder containing the feature files. Use the test project root folder if you want to include test execution results. |
testAssemblyFilePath | Relative or absolute path to the test assembly. Glob patterns are supported e.g.: MyProject\\**\\MyProject.dll |
featureDataJsonFilePath | Relative or absolute path to the feature data JSON. Glob patterns are supported e.g.: MyProject\\**\\FeatureData.json |
projectName | The name of the project visible in the viewer |
testExecutionJson | The absolute or relative path to the Test Execution JSON files generated by the SpecFlow.Plus.LivingDocPlugin. Glob patterns are supported only when using relative paths Important: In order to correctly display the execution results, you MUST provide the Test Project Root folder and not a subfolder (e.g. not the Features folder) in the projectFilePath parameter. |
projectLanguage | The language used by your Gherkin files. This is optional because in many cases the language can be auto-detected. You can read more about language options here. |
workItemPrefix | The special prefix for tags used to add a link to a work item in Azure DevOps. For example, setting this to "DEVOPS_WI:" will allow you to tag a feature with @DEVOPS_WI:1234 , and this tag will be converted to a link to work item 1234 when viewing the feature in LivingDoc. |
workItemUrlTemplate | The URL template to use to generate the external links. Example: https://dev.azure.com/fabrikam/FabrikamProj/_workitems/edit/{id} |
bindingAssemblies | Path to Binding Assemblies (newline delimited). Glob patters are supported e.g.: MyProject/**/MyBindings.dll . TestAssembly: If your bindings are in the same assembly as your feature files, you don't have to specify this. FeatureFolder, FeatureData: If your Bindings are in the same Test Assembly as your feature files, enter the path to your Test Assembly. |
output | Relative (from the working directory) or absolute path to the generated output file. |
Non-LivingDoc specific parameters¶
- enabled: boolean (not needed when true)
- continueOnError: boolean (not needed when false)
- condition:
selection | YAML value |
---|---|
Only when all previous tasks have succeeded | (nothing) |
Even if a previous task has failed, unless the build was canceled | succeededOrFailed() |
Even if a previous task has failed, even if the build was canceled | always() |
Only when a previous task has failed | failed() |
Custom conditions | (custom condition) |
- timeoutInMinutes: Specifies the maximum time, in minutes, that a task is allowed to execute before being canceled by server (zero value indicates an infinite timeout)
Examples¶
FeatureFolder example¶
- task: SpecFlowPlus@0
displayName: 'LivingDoc with FeatureFolder generatorSource'
inputs:
generatorSource: 'FeatureFolder'
projectFilePath: 'BookShop.AcceptanceTests'
projectName: 'testName'
testExecutionJson: 'BookShop.AcceptanceTests/**/TestExecution.json'
projectLanguage: 'en'
workItemPrefix: 'WI'
workItemUrlTemplate: 'https://dev.azure.com/specflow/BookShop/_workitems/edit/{id}'
bindingAssemblies: |
BookShop.AcceptanceTests/**/BookShop.AcceptanceTests.dll
BookShop.AcceptanceTests/**/MyBindings.dll
enabled: false
continueOnError: true
condition: always()
timeoutInMinutes: 10
TestAssembly example¶
- task: SpecFlowPlus@0
displayName: 'LivingDoc with TestAssembly generatorSource'
inputs:
generatorSource: 'TestAssembly'
testAssemblyFilePath: 'BookShop.AcceptanceTests/bin/**/BookShop.AcceptanceTests.dll'
projectName: 'testName'
testExecutionJson: 'BookShop.AcceptanceTests/**/TestExecution.json'
projectLanguage: 'en'
workItemPrefix: 'WI'
workItemUrlTemplate: 'https://dev.azure.com/specflow/BookShop/_workitems/edit/{id}'
bindingAssemblies: 'BookShop.AcceptanceTests/**/MyBindings.dll'
enabled: false
continueOnError: true
condition: always()
timeoutInMinutes: 10
FeatureData example¶
- task: SpecFlowPlus@0
displayName: 'LivingDoc with FeatureData generatorSource'
inputs:
generatorSource: 'FeatureData'
featureDataJsonFilePath: './**/FeatureData.json'
testExecutionJson: 'BookShop.AcceptanceTests/**/TestExecution.json'
workItemPrefix: 'WI'
workItemUrlTemplate: 'https://dev.azure.com/specflow/BookShop/_workitems/edit/{id}'
bindingAssemblies: |
BookShop.AcceptanceTests/**/BookShop.AcceptanceTests.dll
BookShop.AcceptanceTests/**/MyBindings.dll
enabled: false
continueOnError: true
condition: always()
timeoutInMinutes: 10
Example of output
¶
Specify output file name as MyFeatureData.json
and place it in the LivingDoc
directory. If the directory is not exists, the tool will create it.
- task: SpecFlowPlus@0
displayName: 'LivingDoc with custom output'
inputs:
generatorSource: 'FeatureFolder'
projectFilePath: 'BookShop.AcceptanceTests'
projectName: 'testName'
testExecutionJson: 'BookShop.AcceptanceTests/**/TestExecution.json'
projectLanguage: 'en'
workItemPrefix: 'WI'
workItemUrlTemplate: 'https://dev.azure.com/specflow/BookShop/_workitems/edit/{id}'
bindingAssemblies: |
BookShop.AcceptanceTests/**/BookShop.AcceptanceTests.dll
BookShop.AcceptanceTests/**/MyBindings.dll
output: 'LivingDoc/MyFeatureData.json'
enabled: false
continueOnError: true
condition: always()
timeoutInMinutes: 10