@qacrow/sdk
v0.1.0
Published
Official TypeScript SDK and CLI for QACrow — AI-powered QA testing.
Maintainers
Readme
@qacrow/sdk
Official TypeScript SDK and CLI for QACrow — AI-powered QA testing.
Write plain-English test plans, run real browser tests, get structured bug reports.
Install
npm install @qacrow/sdk
# or
pnpm add @qacrow/sdkRequires Node 18+.
Quick start
import { QACrow } from "@qacrow/sdk";
const qac = new QACrow({ apiKey: process.env.QACROW_API_KEY! });
// Create a plan
const plan = await qac.testPlans.create({
title: "Checkout flow",
targetUrl: "https://example.com",
body: "Open the homepage, add a product to cart, and complete checkout with test card 4242…",
});
// Run it and wait for results
const run = await qac.runs.start(plan.id);
const final = await qac.runs.waitFor(run.id, {
onUpdate: (r) => console.log("status:", r.status),
});
console.log(`Found ${final.issues?.length ?? 0} issues`);
for (const i of final.issues ?? []) {
console.log(`[${i.severity}] ${i.title}`);
}CLI
The package installs a qacrow binary:
export QACROW_API_KEY=qac_…
qacrow plans list
qacrow runs start plan_123 --wait
qacrow issues list --severity critical
qacrow credits balanceRun qacrow help for the full command list.
Great for CI, cron jobs, and AI agents that can shell out:
# GitHub Actions example
- run: npx --yes @qacrow/sdk runs start plan_123 --wait
env:
QACROW_API_KEY: ${{ secrets.QACROW_API_KEY }}API surface
| Resource | Methods |
|---|---|
| testPlans | list, get, create, update, delete, review, fix, templates |
| runs | list, get, start, create, cancel, recording, waitFor |
| issues | list |
| credits | balance, ledger, checkout, redeemCoupon |
| schedules | list, create, update, delete |
| webhooks | list, create, delete |
For anything not yet covered:
const data = await qac.request("/some/endpoint", { method: "POST", body: {…} });Configuration
new QACrow({
apiKey: "qac_…", // required
baseUrl: "https://qacrow.com/api", // override for self-hosted
timeoutMs: 60_000, // per-request timeout
retries: 2, // GET-only retries on 5xx / network errors
fetch: customFetch, // optional fetch impl
});Errors
All non-2xx responses throw QACrowError:
import { QACrowError } from "@qacrow/sdk";
try {
await qac.runs.start("plan_bad");
} catch (err) {
if (err instanceof QACrowError) {
console.error(err.status, err.code, err.message);
}
}Module format
This package ships as ESM only ("type": "module"). Use it from:
- Modern Node 18+ projects with
"type": "module"in theirpackage.json - TypeScript projects with
"module": "ES2022"(or newer) and"moduleResolution": "Bundler"/"NodeNext" - Bundlers (Vite, esbuild, webpack 5+, Rollup)
- Dynamic
import()from CommonJS:const { QACrow } = await import("@qacrow/sdk");
require("@qacrow/sdk") from a CommonJS file is not supported.
License
MIT
