Qase TMS API JavaScript Client
The qaseio
package implements a JavaScript client for Qase API.
It should be used for building integrations with Qase API
or writing test reporters for special-purpose frameworks.
To report results from tests using a popular framework or test runner, use the corresponding package instead:
npm install qaseio
Qase.io uses API tokens to authenticate requests. API keys can be issued on the personal API tokens page or on the app integrations page.
Pure JavaScript:
var qaseio = require('qaseio');
const qase = new QaseApi({
token: 'api_token',
});
ES5:
import { QaseApi } from 'qaseio';
const qase = new QaseApi({
token: 'api_token',
});
This method allows to retrieve all projects available for your account. You can you limit and offset params to paginate.
qase.projects.getAll().then((res) => {
console.log(res.data); // ProjectList{...}
});
This method allows to retrieve a specific project.
qase.projects.get('PRJCODE').then((res) => {
console.log(res.data); // ProjectInfo{...}
});
qase.projects.get('PRJCODE').then((exists) => {
console.log(exists); // boolean
});
This method is used to create a new project through API.
import { ProjectCreate } from 'qaseio.models';
const prj = new ProjectCreate('Project title', 'CODE');
qase.projects.create(prj).then((res) => {
console.log(res.data); // ProjectCreated{...}
});
This method allows to retrieve all test cases stored in selected project. You can you limit and offset params to paginate.
qase.cases.getAll('PRJCODE', { limit: 10, offset: 20 }).then((res) => {
console.log(res.data); // TestCaseList{...}
});
This method allows to retrieve a specific test case.
qase.cases.get('PRJCODE', 4).then((res) => {
console.log(res.data); // TestCaseInfo{...}
});
qase.cases.exists('PRJCODE', 4).then((exists) => {
console.log(exists); // boolean
});
This method completely deletes a test case from repository.
qase.cases.delete('PRJCODE', 4).then((res) => {
console.log(res); // AxiosResponse
});
This method allows to retrieve all test suites stored in selected project. You can you limit and offset params to paginate.
import { SuiteFilters } from 'qaseio.models';
qase.suites
.getAll('PRJCODE', { filters: new SuiteFilters({ search: 'query' }) })
.then((res) => {
console.log(res.data); // SuiteList{...}
});
This method allows to retrieve a specific test suite.
qase.suites.get('PRJCODE', 123).then((res) => {
console.log(res.data); // SuiteInfo{...}
});
qase.suites.exists('PRJCODE', 123).then((exists) => {
console.log(exists); // boolean
});
This method is used to create a new test plan through API.
import { SuiteCreate } from 'qaseio.models';
qase.suites.create('PRJCODE', SuiteCreate('New test suite')).then((res) => {
console.log(res.data); // SuiteCreated{...}
});
This method is used to update existing test suite through API.
import { SuiteUpdate } from 'qaseio.models';
qase.suites.update('PRJCODE', 123, SuiteUpdate('Updated suite')).then((res) => {
console.log(res.data); // SuiteCreated{...}
});
This method completely deletes a test suite from repository.
qase.suites.delete('PRJCODE', 123).then((res) => {
console.log(res); // AxiosResponse
});
This method allows to retrieve all milestones stored in selected project. You can you limit and offset params to paginate.
import { MilestoneFilters } from 'qaseio.models';
qase.milestones
.getAll('PRJCODE', { filters: new MilestoneFilters({ search: 'query' }) })
.then((res) => {
console.log(res.data); // MilestoneList{...}
});
This method allows to retrieve a specific milestone.
qase.milestones.get('PRJCODE', 123).then((res) => {
console.log(res.data); // MilestoneInfo{...}
});
qase.milestones.exists('PRJCODE', 123).then((exists) => {
console.log(exists); // boolean
});
This method is used to create a new test plan through API.
import { MilestoneCreate } from 'qaseio.models';
qase.milestones
.create('PRJCODE', new MilestoneCreate('New milestone'))
.then((res) => {
console.log(res.data); // MilestoneCreated{...}
});
This method is used to update existing milestone through API.
import { MilestoneUpdate } from 'qaseio.models';
test_suite = qase.milestones
.update('PRJCODE', 123, new MilestoneUpdate('Updated suite'))
.then((res) => {
console.log(res.data); // MilestoneCreated{...}
});
This method completely deletes a milestone from repository.
qase.milestones.delete('PRJCODE', 123).then((res) => {
console.log(res); // AxiosResponse
});
This method allows to retrieve all shared steps stored in selected project. You can you limit and offset params to paginate.
import { SharedStepFilters } from 'qaseio.models';
qase.sharedSteps
.getAll('PRJCODE', { filters: new SharedStepFilters({ search: 'query' }) })
.then((res) => {
console.log(res.data); // SharedStepList{...}
});
This method allows to retrieve a specific shared step.
qase.sharedSteps.get('PRJCODE', 'hash').then((res) => {
console.log(res.data); // SharedStepInfo{...}
});
qase.sharedSteps.exists('PRJCODE', 'hash').then((exists) => {
console.log(exists); // boolean
});
This method is used to create a new shared step through API.
import { SharedStepCreate } from 'qaseio.models';
qase.sharedSteps
.create('PRJCODE', new SharedStepCreate('New step', 'action'))
.then((res) => {
console.log(res.data); // SharedCreated{...}
});
This method is used to update existing shared step through API.
import { SharedStepUpdate } from 'qaseio.models';
qase.sharedSteps
.update('PRJCODE', 'hash', new SharedStepUpdate('Updated step'))
.then((res) => {
console.log(res.data); // SharedCreated{...}
});
This method completely deletes a shared step from repository.
qase.sharedSteps.delete('PRJCODE', 'hash').then((res) => {
console.log(res); // AxiosResponse
});
This method allows to retrieve all test plans stored in selected project. You can you limit and offset params to paginate.
qase.plans.getAll('PRJCODE').then((res) => {
console.log(res.data); // PlanList{...}
});
This method allows to retrieve a specific test plan.
qase.plans.get('PRJCODE', 123).then((res) => {
console.log(res.data); // PlanInfo{...}
});
qase.plans.exists('PRJCODE', 123).then((exists) => {
console.log(exists); // boolean
});
This method is used to create a new test plan through API.
import { PlanCreate } from 'qaseio.models';
qase.plans
.create('PRJCODE', new PlanCreate('New test plan', [1, 2, 3]))
.then((res) => {
console.log(res.data); // PlanCreated{...}
});
This method is used to update existing test plan through API.
import { PlanUpdate } from 'qaseio.models';
qase.plans
.update('PRJCODE', 123, new PlanUpdate('New test plan', [1, 2, 3]))
.then((res) => {
console.log(res.data); // PlanCreated{...}
});
This method completely deletes a test plan from repository.
qase.plans.delete('PRJCODE', 123).then((res) => {
console.log(res); // AxiosResponse
});
This method allows to retrieve all test runs stored in selected project. You can you limit and offset params to paginate.
qase.runs.getAll('PRJCODE', { include: 'cases' }).then((res) => {
console.log(res.data); // RunList{...}
});
This method allows to retrieve a specific test run.
qase.runs.get('PRJCODE', 4).then((res) => {
console.log(res.data); // RunInfo{...}
});
qase.runs.exists('PRJCODE', 4).then((exists) => {
console.log(exists); // boolean
});
This method is used to create a new test run through API.
import { RunCreate } from 'qaseio.models';
const run = new RunCreate('Test run', [1, 2, 3], { description: 'some desc' });
qase.runs.create(run).then((res) => {
console.log(res.data); // RunCreated{...}
});
This method completely deletes a test run from repository.
qase.runs.delete('PRJCODE', 4).then((res) => {
console.log(res); // AxiosResponse
});
This method allows to retrieve all test run results stored in selected project. You can you limit and offset params to paginate.
qase.results.getAll('PRJCODE').then((res) => {
console.log(res.data); // ResultList{...}
});
This method allows to retrieve a specific test run result.
qase.results
.get('PRJCODE', '2898ba7f3b4d857cec8bee4a852cdc85f8b33132')
.then((res) => {
console.log(res.data); // ResultInfo{...}
});
This method is used to create a new test run result through API.
import { ResultCreate, ResultStatus, ResultStepCreate } from 'qaseio.models';
const result = new ResultCreate(123, ResultStatus.PASSED, {
comment: 'some comment',
steps: [new ResultStepCreate(1, ResultStatus.PASSED)],
});
qase.results.create('PRJCODE', 4, result).then((res) => {
console.log(res.data); // ResultCreated{...}
});
This method is used to update existing test run result through API.
import { ResultUpdate, ResultStatus, ResultStepCreate } from 'qaseio.models';
const result = new ResultUpdate(ResultStatus.PASSED, {
comment: 'some comment',
steps: [new ResultStepCreate(2, ResultStatus.PASSED)],
});
qase.results
.update('PRJCODE', 4, '2898ba7f3b4d857cec8bee4a852cdc85f8b33132', result)
.then((res) => {
console.log(res.data); // ResultCreated{...}
});
This method completely deletes a test run result from repository.
qase.results
.delete('PRJCODE', 4, '2898ba7f3b4d857cec8bee4a852cdc85f8b33132')
.then((res) => {
console.log(res); // AxiosResponse
});
This method allows to retrieve all defects stored in selected project. You can you limit and offset params to paginate.
import { DefectStatus, DefectFilters } from 'qaseio.models';
qase.defects
.getAll('PRJCODE', {
filter: new DefectFilters({ status: DefectStatus.OPEN }),
})
.then((res) => {
console.log(res.data); // DefectList{...}
});
This method allows to retrieve a specific defect.
qase.defects.get('PRJCODE', 4).then((res) => {
console.log(res.data); // DefectInfo{...}
});
qase.defects.exists('PRJCODE', 4).then((exists) => {
console.log(exists); // boolean
});
This method is used to resolve defect through API.
qase.defects.resolve('PRJCODE', 4).then((res) => {
console.log(res.data); // DefectUpdated{...}
});
This method completely deletes a defect from repository.
qase.defects.delete('PRJCODE', 4).then((res) => {
console.log(res); // AxiosResponse
});
This method allows to retrieve all custom fields stored in selected project. You can you limit and offset params to paginate.
qase.customFields.getAll('PRJCODE').then((res) => {
console.log(res.data); // CustomFieldList{...}
});
This method allows to retrieve a specific custom field.
qase.customFields.get('PRJCODE', 123).then((res) => {
console.log(res.data); // CustomFieldInfo{...}
});
qase.customFields.exists('PRJCODE', 123).then((exists) => {
console.log(exists); // boolean
});
This method allows to retrieve all attachments stored in team. You can you limit and offset params to paginate.
qase.attachments.getAll().then((res) => {
console.log(res.data); // AttachmentList{...}
});
This method allows to retrieve a specific attachment.
qase.attachments.get('<hash>').then((res) => {
console.log(res.data); // AttachmentInfo{...}
});
qase.attachments.exists('<hash>').then((exists) => {
console.log(exists); // boolean
});
This method is used to upload new attachments through API. It supports different input formats
qase.attachments
.create('PRJCODE', { value: '{"test": true}', filename: 'data.json' })
.then((res) => {
console.log(res.data); // AttachmentCreated{...}
});
To upload binary attachment you should use fs
:
var fs = require('fs');
const data = fs.createReadStream('/path/to/file.png');
qase.attachments
.create('PRJCODE', { value: data, filename: 'data.png' })
.then((res) => {
console.log(res.data); // AttachmentCreated{...}
});
You can specify as much files to upload as you need, according to API limits.
This method completely deletes a attachment from repository.
qase.attachments.delete('<hash>').then((res) => {
console.log(res); // AxiosResponse
});
This method allows to retrieve all users in your team. You can you limit and offset params to paginate.
qase.users.getAll().then((res) => {
console.log(res.data); // UserList{...}
});
This method allows to retrieve a specific user in your team.
qase.users.get(123).then((res) => {
console.log(res.data); // UserInfo{...}
});
qase.users.exists(123).then((exists) => {
console.log(exists); // boolean
});
The reporter is maintained on the LTS versions of Node.js.