Get recent failed automated tests for a release
This flow demonstrates how to get a list of failed automated tests for a specific release that were reported in the last 24 hours.
Areas: Automated test runs, Releases
In this topic:
Entity relationship diagram
We need to access the following entities for this flow, and understand the relationships between these entities.
Entity | Relationships in this flow | Description of relationship | Reference / relationship fields |
---|---|---|---|
Tests | This aggregate resource collection represents types of tests, including manual, Gherkin, test suites, and automated. | subtype | |
Automated Test | Test |
The automated test is a subtype of tests. There is no field that relates back to the aggregate resource collection, tests. |
|
Runs |
Each automated test can have 0 or more runs associated with it. We will use the automated test's reference field last_runs to find the last run that occurred in the past 24 hours. |
last_runs | |
Runs | Automated test | Each run is associated with one test. | test_of_last_run |
Release | Runs must be associated with a release. | release | |
Release | Run | Releases can be associated with runs. | run |
Flow
Let's create the REST API call step-by-step.
-
We build a query on the latest runs of the automated tests using the last_runs reference field.
GET .../api/shared_spaces/<shared space ID>/workspaces/<workspace id>/automated_tests?query="last_runs EQ { <query_clause> }"
-
Let's now start building our query_clause.
This query has three sets of criteria: The last runs, the status, and the creation time. We will separate each set with a semi-colon (;), which represents the And operator.
In this step, we are only interested in the runs that are associated with a specific release, 236.2. We use the name field to specify the release.
GET .../api/shared_spaces/<shared space ID>/workspaces/<workspace id>/automated_tests?query="last_runs EQ {(release EQ {name EQ ^236.2^})}"
-
We want to access only those runs with a failed status. This is an example of how to work with list nodes. One of the available lists in ALM Octane is run_status, and we want to compare the last run's status with the run_status list's value failed.
GET .../api/shared_spaces/<shared space ID>/workspaces/<workspace id>/automated_tests?query="last_runs EQ {(release EQ {name EQ ^236.2^});status EQ {logical_name EQ ^list_node.run_status.failed^}}"
For details on working with reference fields and list nodes, see Get the allowed values for entity fields.
-
We only want runs within the last 24 hours, so we check the creation time of the run. Assuming today is December 13th, we can use the following date specification.
GET /api/shared_spaces/<shared space ID>/workspaces/<workspace id>/automated_tests?query="last_runs EQ {(release EQ {name EQ ^236.2^});status EQ {logical_name EQ ^list_node.run_status.failed^};creation_time GT ^2016-07-12T06:45:48Z^}"
The complete REST API call for this flow is:
GET .../api/shared_spaces/<shared space ID>/workspaces/<workspace id>/automated_tests?query="last_runs EQ {(release EQ {name EQ ^236.2^});status EQ {logical_name EQ ^list_node.run_status.failed^};creation_time GT ^2016-07-12T06:45:48Z^}"
Javascript example
/** * Flow: All failing tests in a release reported within last 24h * @param requestor */ function getFailedTests(requestor) { // change for correct release name var releaseName = '236.2'; var automatedTestsEntityName = 'automated_tests'; //var automatedTestsEntityName = 'test_automateds'; requestor.get('/'+ automatedTestsEntityName +'?query="last_runs EQ {(release EQ {name EQ ^' + releaseName + '^});' + 'status EQ {logical_name EQ ^list_node.run_status.failed^};' + 'creation_time GT ^' + getLast24HoursDateString() + '^}"', function(error, message, last_runs) { console.info(last_runs); }); }
exports.getFailedTests = getFailedTests;
function getLast24HoursDateString() { var date = new Date(); date.setDate(date.getDate() - 1); return date.toISOString(); }
See also: