Elevaite365 Scenario Execution
Azure DevOps extension that runs Elevaite365 scenarios from your pipelines. Two task versions are available in this extension:
| Task |
Use when |
RunElevaite365ScenarioTask@1 |
You only need JUnit results published via PublishTestResults@2 |
RunElevaite365ScenarioTaskV2@2 |
You want results pushed directly into Azure Test Plans (linked Test Cases, step-level detail, video attachments) |
Note: Prior to extension v2.x, @2 was referenced as RunElevaite365ScenarioTask@2. Rename to RunElevaite365ScenarioTaskV2@2 in your pipeline YAML if upgrading.
Installation
- Visit the Azure DevOps Marketplace
- Search for Elevaite365 Scenario Execution
- Click Get it free and select your organization
RunElevaite365ScenarioTask@1
Runs a scenario, polls for completion, and writes JUnit XML files to disk. Use a separate PublishTestResults@2 step to surface them in the pipeline.
| Input |
Required |
Default |
Description |
apiEndpoint |
Yes |
https://api.elevaite365.com |
Elevaite365 API base URL |
apiKey |
Yes |
— |
X-API-Key header value. Use a pipeline secret. |
scenarioId |
Yes |
— |
Elevaite365 scenario ID |
pollInterval |
No |
10 |
Status poll cadence (seconds) |
executionTimeout |
No |
30 |
Max wait (minutes) |
jUnitOutputPath |
No |
$(System.DefaultWorkingDirectory)/junit |
Directory for JUnit XML output |
Pipeline example
steps:
- task: RunElevaite365ScenarioTask@1
inputs:
apiEndpoint: 'https://api.elevaite365.com'
apiKey: '$(ELEVAITE365_API_KEY)'
scenarioId: '65f2a1b3c4d5e6f7g8h9i0j1'
pollInterval: '10'
executionTimeout: '30'
jUnitOutputPath: '$(System.DefaultWorkingDirectory)/junit'
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '$(System.DefaultWorkingDirectory)/junit/*.xml'
condition: always()
RunElevaite365ScenarioTaskV2@2
Runs a scenario and publishes results directly into Azure Test Plans: linked Test Cases (auto-created for new tests), per-step pass/fail annotations, and the run video as an attachment. JUnit files are also written for backwards compatibility.
OAuth token requirement
The task authenticates to Azure DevOps REST using $(System.AccessToken). Your job must grant access:
jobs:
- job: runScenarios
permissions:
accessToken: true
steps:
- task: RunElevaite365ScenarioTaskV2@2
...
The pipeline's Build Service account needs Test Plans (Read & Write) and Work Items (Read, Write & Manage) permissions in the target project.
Scenario
| Input |
Required |
Default |
Description |
apiEndpoint |
Yes |
https://api.elevaite365.com |
Elevaite365 API base URL |
apiKey |
Yes |
— |
X-API-Key value. Use a pipeline secret. |
scenarioId |
Yes |
— |
Elevaite365 scenario ID |
mode |
Yes |
sync |
sync — pipeline waits for results and publishes. async — pipeline fires and exits immediately; results are published by Elevaite365 when the run completes. |
Azure Test Plans
| Input |
Required |
Default |
Description |
publishToTestPlans |
Yes |
true |
Master switch. Set to false to get JUnit-only behaviour identical to @1. |
projectUrl |
When publishing |
$(System.TeamFoundationCollectionUri)$(System.TeamProject) |
Azure DevOps project REST base URL |
planId |
When publishing |
— |
Target Test Plan ID |
suiteId |
When publishing |
— |
Target Test Suite ID |
uploadVideo |
No |
true |
Attach the run video (≤ 95 MB) to the Test Result. When false or oversized, a download link is added as a comment instead. |
Advanced
| Input |
Required |
Default |
Description |
pollInterval |
No |
10 |
Status poll cadence (seconds) |
executionTimeout |
No |
30 |
Max wait (minutes) |
jUnitOutputPath |
No |
$(Build.SourcesDirectory)/junit |
Directory for legacy JUnit XML output |
Output variables
| Variable |
Set in |
Description |
ExecutionId |
Both modes |
Elevaite365 execution ID |
TestRunId |
Sync mode |
Azure DevOps Test Run ID created by this task |
elevaite365_execution_id |
Async mode |
Execution ID as a pipeline output variable for downstream steps |
Pipeline example — sync mode with Test Plans
jobs:
- job: runScenarios
permissions:
accessToken: true
steps:
- task: RunElevaite365ScenarioTaskV2@2
inputs:
apiEndpoint: 'https://api.elevaite365.com'
apiKey: '$(ELEVAITE365_API_KEY)'
scenarioId: '65f2a1b3c4d5e6f7g8h9i0j1'
publishToTestPlans: true
planId: 123
suiteId: 456
Pipeline example — async mode
jobs:
- job: runScenarios
steps:
- task: RunElevaite365ScenarioTaskV2@2
name: elevaite365Run
inputs:
apiEndpoint: 'https://api.elevaite365.com'
apiKey: '$(ELEVAITE365_API_KEY)'
scenarioId: '65f2a1b3c4d5e6f7g8h9i0j1'
mode: async
publishToTestPlans: false
# Use the execution ID in a downstream step
- script: echo "Execution ID: $(elevaite365Run.elevaite365_execution_id)"
Upgrading from @1 to @2
@1 produces a JUnit file published via PublishTestResults@2 — tests appear in the Tests tab but are not linked to Test Plans. @2 adds first-class Test Plans integration and continues writing legacy JUnit XML.
Step-by-step:
- Replace
RunElevaite365ScenarioTask@1 with RunElevaite365ScenarioTaskV2@2 in your pipeline YAML.
- Add
permissions: { accessToken: true } to the job.
- Add the three new required inputs:
projectUrl, planId, suiteId.
- Or set
publishToTestPlans: false to keep @1 behaviour while you set up Test Plans.
- Make sure the pipeline's Build Service account has Test Plans (Read & Write) and Work Items (Read, Write & Manage) permissions.
- Ensure test names follow the format
TC<id> - <name> (for existing test cases) or TCNEW - <name> (for tests that should auto-create a new Test Case on first run).
- Keep the
PublishTestResults@2 step if you still want the JUnit tab — it continues to consume jUnitOutputPath.
Before (@1)
steps:
- task: RunElevaite365ScenarioTask@1
inputs:
apiEndpoint: 'https://api.elevaite365.com'
apiKey: '$(ELEVAITE365_API_KEY)'
scenarioId: '65f2a1b3c4d5e6f7g8h9i0j1'
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '$(System.DefaultWorkingDirectory)/junit/*.xml'
condition: always()
After (@2)
jobs:
- job: runScenarios
permissions:
accessToken: true
steps:
- task: RunElevaite365ScenarioTaskV2@2
inputs:
apiEndpoint: 'https://api.elevaite365.com'
apiKey: '$(ELEVAITE365_API_KEY)'
scenarioId: '65f2a1b3c4d5e6f7g8h9i0j1'
publishToTestPlans: true
planId: 123
suiteId: 456
# Optional: keep the JUnit tab as well
- task: PublishTestResults@2
inputs:
testResultsFormat: 'JUnit'
testResultsFiles: '$(Build.SourcesDirectory)/junit/*.xml'
condition: always()