Get open defects associated with a successful test run
The following flow demonstrates how to get a list of open defects that are associated with a successful test run.
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 |
|---|---|---|---|
| Defect | Phase | The phase indicates the status of an item, such as a defect. | phase |
| Run | Defects can be opened when running tests. | ||
| Run | Test | Runs are associated with tests. | test |
| Defect | Defects can be opened for specific runs, for example, when discovered during that run. | run | |
| Tests | Run |
This aggregate resource collection represents types of tests, including manual, Gherkin, test suites, and automated. Tests can be associated with runs. |
run |
Flow
You might want to run this API to check for defects that should be closed, based on successful test runs.
Let's create the REST API call step-by-step.
-
A defect is open, but the test associated with the defect runs successfully. Perhaps we just forgot to close the defects. The test in this flow has the ID 1113.
As a first step, we list all defects in workspace 1002.
GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/defects -
Let's now start building our query_clause. Our query clause will check for three criteria. We separate the criteria with semi-colons (;), which represents the And operator.
The first criteria is to list defects in the workspace that are fixed. We use the phase reference field and filter by the logical_name field in the phase list for defects to look for fixed phases only.
GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/defects?query="phase EQ {logical_name EQ ^phase.defect.fixed^}" -
In addition to examining only fixed defects, we only want to look at the runs for a specific test, 1113.
GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/defects?query="phase EQ {logical_name EQ ^phase.defect.fixed^};run EQ {test EQ {id EQ 1113};}" -
Lastly, we want to add a clause to our query clause which checks the status of the run. We want to see only those defects for the test runs that were successful (passed).
Status is a reference field. We use the logical_name field on the list node for run statuses to check for a status of passed.
GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/defects?query="phase EQ {logical_name EQ ^phase.defect.fixed^};run EQ {test EQ {id EQ 1113}; status EQ {logical_name EQ ^list_node.run_status.passed^}}"
The complete REST API call for this flow is:
GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/defects?query="phase EQ {logical_name EQ ^phase.defect.fixed^};run EQ {test EQ {id EQ 1113}; status EQ {logical_name EQ ^list_node.run_status.passed^}}"
Javascript example
/**
* Flow: How to find open defects with associated successful run.
* Use case: I have fixed the defect and the test is find but I forgot to close the defect.
* Find fixed defects with all associated successful run of a test with id x
* @param requestor
*/
function getClosedDefectsWithFailingTests2(requestor) {
var testId = 1113;
requestor.get('/defects?query="phase EQ {logical_name EQ ^phase.defect.fixed^};' +
'run EQ {test EQ {id EQ '+ testId +'};' +
' status EQ {logical_name EQ ^list_node.run_status.passed^}}"', function(error, message, defects) {
console.info(defects);
});
}
exports.getClosedDefectsWithFailingTests2 = getClosedDefectsWithFailingTests2;
See also:


