This module is an SDK for developing test reporters for Qase TMS. You should use it if you're developing your own test reporter for a special-purpose framework.
To report results from tests using a popular framework or test runner, don't install this module directly and use the corresponding reporter module instead:
composer require qase/php-commons
Qase PHP Reporters can be configured in multiple ways:
- using a config file
qase.config.json
- using environment variables
All configuration options are listed in the table below:
Description | Config file | Environment variable | Default value | Required | Possible values |
---|---|---|---|---|---|
Common | |||||
Mode of reporter | mode |
QASE_MODE |
off |
No | testops , report , off |
Fallback mode of reporter | fallback |
QASE_FALLBACK |
off |
No | testops , report , off |
Environment slug | environment |
QASE_ENVIRONMENT |
undefined | No | Any string |
Root suite | rootSuite |
QASE_ROOT_SUITE |
undefined | No | Any string |
Enable debug logs | debug |
QASE_DEBUG |
False |
No | True , False |
Qase Report configuration | |||||
Driver used for report mode | report.driver |
QASE_REPORT_DRIVER |
local |
No | local |
Path to save the report | report.connection.path |
QASE_REPORT_CONNECTION_PATH |
./build/qase-report |
||
Local report format | report.connection.format |
QASE_REPORT_CONNECTION_FORMAT |
json |
json , jsonp |
|
Qase TestOps configuration | |||||
Token for API access | testops.api.token |
QASE_TESTOPS_API_TOKEN |
undefined | Yes | Any string |
Qase API host. For enterprise users, specify address: example.qase.io |
testops.api.host |
QASE_TESTOPS_API_HOST |
qase.io |
No | Any string |
Qase enterprise environment | testops.api.enterprise |
QASE_TESTOPS_API_ENTERPRISE |
False |
No | True , False |
Code of your project, which you can take from the URL: https://app.qase.io/project/DEMOTR - DEMOTR is the project code |
testops.project |
QASE_TESTOPS_PROJECT |
undefined | Yes | Any string |
Qase test run ID | testops.run.id |
QASE_TESTOPS_RUN_ID |
undefined | No | Any integer |
Qase test run title | testops.run.title |
QASE_TESTOPS_RUN_TITLE |
Automated run <Current date and time> |
No | Any string |
Qase test run description | testops.run.description |
QASE_TESTOPS_RUN_DESCRIPTION |
<Framework name> automated run |
No | Any string |
Qase test run complete | testops.run.complete |
QASE_TESTOPS_RUN_COMPLETE |
True |
True , False |
|
Qase test run tags | testops.run.tags |
QASE_TESTOPS_RUN_TAGS |
undefined | No | Config: array of strings, Env: comma-separated string |
External issue type | testops.run.externalLink.type |
QASE_TESTOPS_RUN_EXTERNAL_LINK_TYPE |
undefined | No | jiraCloud , jiraServer |
External issue URL | testops.run.externalLink.link |
QASE_TESTOPS_RUN_EXTERNAL_LINK_URL |
undefined | No | Any valid URL string |
Qase test plan ID | testops.plan.id |
QASE_TESTOPS_PLAN_ID |
undefined | No | Any integer |
Size of batch for sending test results | testops.batch.size |
QASE_TESTOPS_BATCH_SIZE |
200 |
No | Any integer |
Enable defects for failed test cases | testops.defect |
QASE_TESTOPS_DEFECT |
False |
No | True , False |
Configuration values to associate with test run | testops.configurations.values |
QASE_TESTOPS_CONFIGURATIONS_VALUES |
[] |
No | Comma-separated key=value pairs |
Create configuration groups and values if they don't exist | testops.configurations.createIfNotExists |
QASE_TESTOPS_CONFIGURATIONS_CREATE_IF_NOT_EXISTS |
False |
No | True , False |
Status filter for test results | testops.statusFilter |
QASE_TESTOPS_STATUS_FILTER |
[] |
No | Comma-separated string |
{
"mode": "testops",
"fallback": "report",
"debug": false,
"environment": "local",
"captureLogs": false,
"report": {
"driver": "local",
"connection": {
"local": {
"path": "./build/qase-report",
"format": "json"
}
}
},
"testops": {
"api": {
"token": "<token>",
"host": "qase.io"
},
"run": {
"title": "Regress run",
"description": "Regress run description",
"complete": true,
"tags": ["tag1", "tag2"],
"externalLink": {
"type": "jiraCloud",
"link": "PROJ-123"
}
},
"defect": false,
"project": "<project_code>",
"batch": {
"size": 100
},
"configurations": {
"values": [
{
"name": "browser",
"value": "chrome"
},
{
"name": "version",
"value": "latest"
},
{
"name": "environment",
"value": "staging"
}
],
"createIfNotExists": true
},
"statusFilter": ["skipped", "blocked", "untested"]
}
}
You can also configure configurations using environment variables:
export QASE_TESTOPS_CONFIGURATIONS_VALUES="browser=chrome,version=latest,environment=staging"
export QASE_TESTOPS_CONFIGURATIONS_CREATE_IF_NOT_EXISTS=true
export QASE_TESTOPS_STATUS_FILTER="skipped,blocked,untested"
export QASE_TESTOPS_RUN_EXTERNAL_LINK_TYPE="jiraCloud"
export QASE_TESTOPS_RUN_EXTERNAL_LINK_URL="PROJ-123"
The QASE_TESTOPS_CONFIGURATIONS_VALUES
should be a comma-separated list of key=value pairs.
Configurations in Qase TestOps work as follows:
- name field represents the configuration group (e.g., "browser", "environment")
- value field represents the configuration item within that group (e.g., "chrome", "staging")
- When
createIfNotExists
is true, the system will:- Create a configuration group with the specified name if it doesn't exist
- Create a configuration item with the specified value in that group
- Associate the configuration item ID with the test run
You can filter out test results with specific statuses using the statusFilter
configuration option:
Config file example:
{
"testops": {
"statusFilter": ["skipped", "blocked", "untested"]
}
}
Environment variable example:
export QASE_TESTOPS_STATUS_FILTER="skipped,blocked,untested"
Available statuses:
passed
- Test passed successfullyfailed
- Test failedskipped
- Test was skippedblocked
- Test was blockeduntested
- Test was not tested
When statusFilter
is configured, results with the specified statuses will be excluded from being sent to Qase TestOps.
You can link test runs to external issues (like Jira tickets) by configuring the externalLink
option:
Config file example:
{
"testops": {
"run": {
"externalLink": {
"type": "jiraCloud",
"link": "PROJ-123"
}
}
}
}
Environment variables example:
export QASE_TESTOPS_RUN_EXTERNAL_LINK_TYPE="jiraCloud"
export QASE_TESTOPS_RUN_EXTERNAL_LINK_URL="PROJ-123"
Supported external issue types:
jiraCloud
- For Jira Cloud instancesjiraServer
- For Jira Server/Data Center instances
When an external link is configured, the system will automatically associate the test run with the specified external issue after the run is created.
Technical Details:
- External issue functionality uses the Qase API v1 client
- The system automatically maps internal enum values to API enum values:
jiraCloud
→jira-cloud
jiraServer
→jira-server
- API calls are made using the official Qase API client models (
RunexternalIssues
andRunexternalIssuesLinksInner
)