Shared Steps
The shared steps endpoints allow you to manage reusable test steps that can be referenced across multiple test cases. Shared steps consist of a title and a list of sub-steps, each with a description and expected result.
About Shared Steps
Shared steps are reusable test step templates that can be used in multiple test cases. They consist of:
- Title: A descriptive name for the shared step (1-255 characters)
- Sub-steps: A list of individual steps, each with:
- Description: What action to perform (HTML content)
- Expected: The expected result (HTML content)
When a shared step is used in a test case, all its sub-steps are included. Updates to a shared step automatically propagate to all test cases that reference it.
important
- Shared steps must have at least one sub-step
- Each sub-step must have at least a description or expected result (or both)
- The title of a shared step must be unique within a project
- Shared steps are versioned - updates create new versions while preserving old ones
- Deleted sub-steps are marked with a
deletedAttimestamp but are not deleted because they may still be referenced by some test case versions
List Shared Steps
GET/api/public/v0/project/{project_id}/shared-step
Retrieves all non deleted shared steps within a project, optionally sorted and with additional fields included.
Path Parameters
project_id: The project identifier (can be either the project code or UUID)
Query Parameters
All query parameters are optional.
| Parameter | Type | Description | Allowed Values | Example |
|---|---|---|---|---|
sortField | string | Field to sort by | created_at, title | sortField=title |
sortOrder | string | Sort order (requires sortField; default: desc) | asc, desc | sortOrder=asc |
include | string | Include additional fields in the response which are omitted by default | tcaseCount | include=tcaseCount |
tip
- Use
include=tcaseCountto see how many test cases reference each shared step - Sorting by
created_atshows the most recently created steps first (withdesc) or oldest first (withasc) - Sorting by
titleprovides alphabetical ordering
Example Request
Fetch all shared steps
curl \
-H "Authorization: ApiKey your.api.key.here" \
https://your-company.your-region-code.qasphere.com/api/public/v0/project/BD/shared-step
Fetch all shared steps sorted by title in ascending order
curl \
-H "Authorization: ApiKey your.api.key.here" \
https://your-company.your-region-code.qasphere.com/api/public/v0/project/BD/shared-step?sortField=title&sortOrder=asc
Fetch all shared steps with test case count included
curl \
-H "Authorization: ApiKey your.api.key.here" \
https://your-company.your-region-code.qasphere.com/api/public/v0/project/BD/shared-step?include=tcaseCount
Response Fields
{
sharedSteps: Array<{ // List of shared step objects
id: number // Unique identifier of the shared step
version: number // Version of the shared step
type: string // Type of the step (always "shared" for shared steps)
title: string // Title of the shared step
isLatest: boolean // Whether this is the latest version of the step
subSteps: Array<{ // List of sub-steps
id: number // Unique identifier of the sub-step
type: string // Type of the step (always "shared_sub_step")
version: number // Version of the step (same as parent step)
isLatest: boolean // Whether this is the latest version (same as parent step)
description: html // Details of the sub-step
expected: html // Expected result from the sub-step
deletedAt?: string // Date the sub-step was deleted on (ISO 8601 format)
}>
deletedAt?: string // Date the shared step was deleted on (ISO 8601 format)
tcaseCount?: number // Number of test cases using this shared step (only included if requested)
}>
}
Example Response
{
"sharedSteps": [
{
"id": 1,
"version": 3,
"type": "shared",
"title": "User login validation",
"isLatest": true,
"subSteps": [
{
"id": 2,
"type": "shared_sub_step",
"version": 3,
"isLatest": true,
"description": "<p>Navigate to the login page</p>",
"expected": "<p>Login form is displayed</p>"
},
{
"id": 3,
"type": "shared_sub_step",
"version": 3,
"isLatest": true,
"description": "<p>Enter valid username and password</p>",
"expected": "<p>Credentials are accepted</p>"
},
{
"id": 4,
"type": "shared_sub_step",
"version": 3,
"isLatest": true,
"description": "<p>Click the login button</p>",
"expected": "<p>User is redirected to the dashboard</p>"
}
]
},
{
"id": 5,
"version": 1,
"type": "shared",
"title": "Form submission validation",
"isLatest": true,
"subSteps": [
{
"id": 6,
"type": "shared_sub_step",
"version": 1,
"isLatest": true,
"description": "<p>Fill in all required fields</p>",
"expected": "<p>All fields are populated correctly</p>"
},
{
"id": 7,
"type": "shared_sub_step",
"version": 1,
"isLatest": true,
"description": "<p>Submit the form</p>",
"expected": "<p>Form is submitted successfully</p>"
}
],
"tcaseCount": 12
}
]
}
Get Shared Step
GET/api/public/v0/project/{project_id}/shared-step/{step_id}
Get details of a single shared step using its ID.
Path Parameters
project_id: The project identifier (can be either the project code or UUID)step_id: The shared step identifier (numeric ID)
Example Request
curl \
-H "Authorization: ApiKey your.api.key.here" \
https://your-company.your-region-code.qasphere.com/api/public/v0/project/BD/shared-step/1
Response Fields
{
id: number // Unique identifier of the shared step
version: number // Version of the shared step
type: string // Type of the step (always "shared" for shared steps)
title: string // Title of the shared step
isLatest: boolean // Whether this is the latest version of the step
subSteps: Array<{ // List of sub-steps
id: number // Unique identifier of the sub-step
type: string // Type of the step (always "shared_sub_step")
version: number // Version of the step (same as parent step)
description: html // Details of the sub-step
expected: html // Expected result from the sub-step
deletedAt?: string // Date the sub-step was deleted on (ISO 8601 format)
}>
isLatest: boolean // Whether this is the latest version (same as parent step)
deletedAt?: string // Date the shared step was deleted on (ISO 8601 format)
}
Example Response
{
"id": 1,
"version": 3,
"type": "shared",
"title": "User login validation",
"isLatest": true,
"subSteps": [
{
"id": 2,
"type": "shared_sub_step",
"version": 3,
"isLatest": true,
"description": "<p>Navigate to the login page</p>",
"expected": "<p>Login form is displayed</p>"
},
{
"id": 3,
"type": "shared_sub_step",
"version": 3,
"isLatest": true,
"description": "<p>Enter valid username and password</p>",
"expected": "<p>Credentials are accepted</p>"
},
{
"id": 4,
"type": "shared_sub_step",
"version": 3,
"isLatest": true,
"description": "<p>Click the login button</p>",
"expected": "<p>User is redirected to the dashboard</p>"
}
]
}