Qase TMS JavaScript Api Client
npm install qaseio
Qase.io uses API tokens to authenticate requests. You can view an manage your API keys in API tokens pages.
You must replace api_token with your personal API key.
Pure JavaScript:
var qaseio = require("qaseio");
var qase = new qaseio.QaseApi("api_token");ES5:
import { QaseApi } from 'qaseio';
const qase = new QaseApi("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
})We maintain the reporter on LTS versions of Node. You can find the current versions by following the link