https://apps-qalityplus.soldevelo.com
All requests should be made there.
You will need this token to make any request. The token is valid for ~5m.
If you need the token for a one-time use you can skip step 1 and paste the URL from step 2 into your browser.
You need an Atlassian API token from https://id.atlassian.com/manage-profile/security/api-tokens
Make a GET request with authorization:username
= your emailpassword
= API token from step 1
https://<your_instance>.atlassian.net/plugins/servlet/ac/com.soldevelo.apps.test_management_premium/test-cycles?classifier=json |
Copy the contextJwt
property from the result.
QAlity is integrated with Jira. This means test cases are represented as Issues of “QAlity test“ type. Often you will need their ID to make a request.
You need an Atlassian API token from https://id.atlassian.com/manage-profile/security/api-tokens
Make a GET request with authorization:username
= your emailpassword
= API token from step 1
https://<your_instance>.atlassian.net/rest/api/3/issue/<ISSUE KEY or ID> |
Copy the id
property from the response.
You need an Atlassian API token from https://id.atlassian.com/manage-profile/security/api-tokens
Make a GET request with authorization:username
= your emailpassword
= API token from step 1
https://<your_instance>.atlassian.net/rest/api/3/project/<PROJECT KEY or ID> |
Copy the id
property from the response.
/testStep/<ISSUE_ID>?jwt=<JWT>
Params:
ISSUE_ID
- id of the test case - Id of Jira issue
JWT
- the authentication token
Response:
Array<TestStep> TestStep: { attachments: Array<Attachement>, // TEST ATTACHMENTS data: String, // TEST DATA, stored as HTML id: Long, position: int, // step position result: String, // EXPECTED RESULT, stored as HTML step: String, //TEST STEP, stored as HTML } Attachement: { id: int, // id of attachement in Jira issue } |
/testStep?jwt=<JWT>
Body:
TestStep: { step: String, //TEST STEP, stored as HTML result: String, // EXPECTED RESULT, stored as HTML data: String, // TEST DATA, stored as HTML attachments: String, // TEST ATTACHMENTS, Array<Attachement> stored as String (JSON.stringify) testCaseId: Long, } Attachement: { id: int, // id of attachement in Jira issue } |
/testStep/<STEP_ID>?jwt=<JWT>
Params:
STEP_ID
- id of the step
JWT
- the authentication token
Body:
TestStep: { attachments: String, // TEST ATTACHMENTS, Array<Attachement> stored as String (JSON.stringify) data: String, // TEST DATA, stored as HTML id: Long, testCaseId: Long, position: int, // step position result: String, // EXPECTED RESULT, stored as HTML step: String, //TEST STEP, stored as HTML } Attachement: { id: int, // id of attachement in Jira issue } |
Status model
type Status = { id: number; name: string; isDefault: boolean; position: number; color: { name: | 'RED' | 'YELLOW' | 'GREEN' | 'BLUE' | 'GRAY' | 'MAGENTA' | 'TEAL' | 'PURPLE' | 'ORANGE' | 'DARK GRAY' | 'LIME'; textToken: string; backgroundToken: string; }; } |
/statuses?jwt=<JWT>
Response
{ statuses: Array<Status>; } |
/testExecution?jwt=<JWT>&testCaseId=<TEST_CASE_ID>&page=<PAGE>
Params:
TEST_CASE_ID
- id of the test case - Id of Jira issue
JWT
- the authentication token
PAGE
- page number, starts from 0
Response:
LIst of executions for provided page. max 10 results.
/testExecution/<TEST_EXECUTION_ID>?jwt=<JWT>
Params:
TEST_EXECUTION_ID
- id of the execution
JWT
- the authentication token
Response:
{ comment: String, // stored as HTML, createdDate: String, // example: 2022-01-31T11:11:11.111+0000, executionAssignee: String, // Jira user accountId, id: Long, name: String, statusObject: Status, testCaseId: Long, // Jira issue Id version: Version, } Version: { id: Long, testCaseId: Long, // Jira issue Id testCaseName: String, // Jira issue name testSteps: Array<TestStep>, } TestStep: { attachments: String, // TEST ATTACHMENTS, Array<Attachement> stored as String (JSON.stringify) data: String, // TEST DATA, stored as HTML id: Long, testCaseId: Long, position: int, // step position result: String, // EXPECTED RESULT, stored as HTML step: String, //TEST STEP, stored as HTML } Attachement: { id: number, // id of attachement in Jira issue } |
/testExecution?jwt=<JWT>
Params:
JWT
- the authentication token
Body:
{ name: String, statusObject: Status, testCaseId: Long, testSteps: Array, // should be an empty array [] testCaseInCycleId: Long, // OPTIONAL, retrieve this id from test cycle. Check POST Add Test Case To Cycle } |
Response:
{ comment: String, // stored as HTML, createdDate: String, // example: 2022-01-31T11:11:11.111+0000, executionAssignee: String, // Jira user accountId, id: Long, name: String, statusObject: Status, testCaseId: Long, // Jira issue Id version: Version, } Version: { id: Long, testCaseId: Long, // Jira issue Id testCaseName: String, // Jira issue name testSteps: Array<TestStep>, } TestStep: { attachments: String, // TEST ATTACHMENTS, Array<Attachement> stored as String (JSON.stringify) data: String, // TEST DATA, stored as HTML id: Long, testCaseId: Long, position: int, // step position result: String, // EXPECTED RESULT, stored as HTML step: String, //TEST STEP, stored as HTML } Attachement: { id: number, // id of attachement in Jira issue } |
It is recommended to fetch test execution and edit existing data. To create an execution see POST.
/testExecution?jwt=<JWT>
Params:
JWT
- the authentication token
Body:
{ comment: String, // stored as HTML, executionAssignee: String, // Jira user accountId, id: Long, name: String, statusObject: Status, testCaseId: Long, // Jira issue Id testSteps: Array<TestStep>, } TestStep: { comment: String, // stored as HTML id: Long, statusObject: Status, testCaseStepId: Long, } |
Response:
Updated Execution
{ comment: String, // stored as HTML, createdDate: String, // example: 2022-01-31T11:11:11.111+0000, executionAssignee: String, // Jira user accountId, id: Long, name: String, statusObject: Status, testCaseId: Long, // Jira issue Id version: Version, } Version: { id: Long, testCaseId: Long, // Jira issue Id testCaseName: String, // Jira issue name testSteps: Array<TestStep>, } TestStep: { attachments: String, // TEST ATTACHMENTS, Array<Attachement> stored as String (JSON.stringify) data: String, // TEST DATA, stored as HTML id: Long, testCaseId: Long, position: int, // step position result: String, // EXPECTED RESULT, stored as HTML step: String, //TEST STEP, stored as HTML } Attachement: { id: number, // id of attachement in Jira issue } |
Fetch all test cycles available for the user (based on the JWT token).
/testCycles?jwt=<JWT>
Params:
&projectIds=<ID1, ID2...> // comma-separated list of project IDs &name=<NAME> // name of Test Cycle &versionId=<ID> // version ID &isClosed=<Boolean> // is closed &testCaseId=<ID> // test case ID, to get the information if the the test case is already present in test cycles (testCaseExistInCycle in the response) &page=<PAGE> // pagination: current page &size=<SIZE> // pagination: results per page &sort=<SORT> // pagination: field to sort by &direction=<DIRECTION> // pagination: sort strategy |
Response (paginated):
Response: { content: Array<TestCycle>; pageable: Pageable; totalElements: number; totalPages: number; last: boolean; sort: Sort; first: boolean; number: number; numberOfElements: number; size: number; empty: boolean; } TestCycle: { id: number; name: string; versionId: null | string; dueDate: null; comment: null | string; isClosed: boolean; projectId: string; createdDate: Date; numberOfTestCases: number; testCaseExistInCycle: null; statuses: StatusesSummary; } StatusesSummary: Array<{ status: Status; total: number; percent: number; }> Pageable: { sort: Sort; pageNumber: number; pageSize: number; offset: number; paged: boolean; unpaged: boolean; } Sort: { sorted: boolean; unsorted: boolean; empty: boolean; } |
/testCasesInCycle?jwt=<JWT>
Params:
JWT - the authentication token
Body:
{ testCases: Array<Long>, // list of jira issue ids that you want to add to cycle testCycleId: Long // id of the test cycle } |
Response:
Array<TestCaseInCycle> TestCaseInCycle: { id: Long, // id of create object, can be used when executiong test case to make the execution in cycle testCaseId: Long, // id of the test case testCycleId: Long // id of the cycle } |