@glubean/cli 0.2.6 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +2 -2
  2. package/dist/commands/init.d.ts +2 -0
  3. package/dist/commands/init.d.ts.map +1 -1
  4. package/dist/commands/init.js +267 -60
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/commands/redact.d.ts.map +1 -1
  7. package/dist/commands/redact.js +32 -8
  8. package/dist/commands/redact.js.map +1 -1
  9. package/dist/commands/run.d.ts +110 -2
  10. package/dist/commands/run.d.ts.map +1 -1
  11. package/dist/commands/run.js +483 -40
  12. package/dist/commands/run.js.map +1 -1
  13. package/dist/lib/config.d.ts +267 -43
  14. package/dist/lib/config.d.ts.map +1 -1
  15. package/dist/lib/config.js +744 -149
  16. package/dist/lib/config.js.map +1 -1
  17. package/dist/lib/env.d.ts +29 -0
  18. package/dist/lib/env.d.ts.map +1 -0
  19. package/dist/lib/env.js +59 -0
  20. package/dist/lib/env.js.map +1 -0
  21. package/dist/lib/print-plan.d.ts +21 -0
  22. package/dist/lib/print-plan.d.ts.map +1 -0
  23. package/dist/lib/print-plan.js +108 -0
  24. package/dist/lib/print-plan.js.map +1 -0
  25. package/dist/lib/upload.d.ts +36 -1
  26. package/dist/lib/upload.d.ts.map +1 -1
  27. package/dist/lib/upload.js +126 -19
  28. package/dist/lib/upload.js.map +1 -1
  29. package/dist/main.d.ts.map +1 -1
  30. package/dist/main.js +405 -27
  31. package/dist/main.js.map +1 -1
  32. package/package.json +5 -5
  33. package/templates/README.md +7 -13
  34. package/templates/demo/.env.example +7 -0
  35. package/templates/demo/.env.secrets.example +11 -0
  36. package/templates/demo/README.md +60 -0
  37. package/templates/demo/config/api.ts +24 -0
  38. package/templates/demo/gitignore.tpl +13 -0
  39. package/templates/demo/glubean.yaml +48 -0
  40. package/templates/demo/tests/api-flaky/search-flaky.test.ts +28 -0
  41. package/templates/demo/tests/api-stable/get-users.test.ts +30 -0
  42. package/templates/demo/tests/canary/synthetic-50pct-flaky.test.ts +23 -0
  43. package/templates/demo/tests/contracts/stable/users-contract.contract.ts +70 -0
  44. package/templates/demo/tsconfig.json +15 -0
  45. package/templates/AI-INSTRUCTIONS.md +0 -160
  46. package/templates/ci-config/ci.yaml +0 -13
  47. package/templates/ci-config/default.yaml +0 -9
  48. package/templates/ci-config/explore.yaml +0 -5
  49. package/templates/ci-config/staging.yaml +0 -9
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glubean/cli",
3
- "version": "0.2.6",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "glubean": "./bin/gb.js"
@@ -27,10 +27,10 @@
27
27
  "dotenv": "^16.4.0",
28
28
  "tsx": "^4.19.0",
29
29
  "yaml": "^2.7.0",
30
- "@glubean/runner": "0.2.6",
31
- "@glubean/scanner": "0.2.4",
32
- "@glubean/sdk": "0.2.3",
33
- "@glubean/redaction": "0.2.0"
30
+ "@glubean/sdk": "0.3.0",
31
+ "@glubean/redaction": "0.2.0",
32
+ "@glubean/runner": "0.3.0",
33
+ "@glubean/scanner": "0.3.0"
34
34
  },
35
35
  "peerDependencies": {
36
36
  "typescript": "^5.0.0"
@@ -55,10 +55,9 @@ npm install
55
55
  3. Run tests:
56
56
 
57
57
  ```bash
58
- npm test # run all tests in tests/
59
- npm run test:verbose # with detailed output
60
- npm run test:staging # run against staging environment
61
- npm run explore # run explore/ tests
58
+ npm test # run the `local` profile from glubean.yaml
59
+ npm run test:ci # run the `ci` profile (failFast + junit + result.json)
60
+ npm run explore # run the `explore` profile (./explore tests)
62
61
  ```
63
62
 
64
63
  Or run a specific file:
@@ -69,19 +68,14 @@ npx glubean run tests/demo.test.ts --verbose
69
68
 
70
69
  ## Environment switching
71
70
 
72
- The same tests can run against different environments by switching env files:
73
-
74
- | Env file | Secrets file | Script shortcut |
75
- | -------------- | ---------------------- | ------------------------ |
76
- | `.env` | `.env.secrets` | `npm test` |
77
- | `.env.staging` | `.env.staging.secrets` | `npm run test:staging` |
78
-
79
- To add more environments (e.g. production), create `.env.production` and `.env.production.secrets`, then run:
71
+ Add a staging environment by creating `.env.staging` + `.env.staging.secrets`, then run:
80
72
 
81
73
  ```bash
82
- npx glubean run --env-file .env.production
74
+ npx glubean run --env-file .env.staging
83
75
  ```
84
76
 
77
+ To make staging the default for a run, switch the project's `defaults.envFile` in `glubean.yaml` (the loader only accepts `envFile` under `defaults`, not under a profile). For repeated use of the `--env-file` CLI flag, alias it in an npm script.
78
+
85
79
  All `*.secrets` files are gitignored by default. The non-secret `.env.*` files can be committed safely.
86
80
 
87
81
  ## AI-assisted test writing
@@ -0,0 +1,7 @@
1
+ # Glubean demo project — non-secret vars. Copy to .env (gitignored).
2
+ # Loaded into ctx.vars and {{VAR}} template substitution.
3
+
4
+ # URL of the mock backend (glubean-demo-backend). Replace with your
5
+ # deployed Cloudflare Workers URL. The stable/flaky tests + the stable
6
+ # contract all point at this.
7
+ MOCK_BACKEND_URL=https://demo-backend.example.com
@@ -0,0 +1,11 @@
1
+ # Glubean demo project — secrets. Copy to .env.secrets (gitignored).
2
+ # Loaded into ctx.secrets and auto-redacted in traces.
3
+
4
+ # Cloud upload token — only for the opt-in upload flow:
5
+ # glubean run --profile full --upload --project <your-project>
6
+ # `npm test` / `npm run test:full` run fully local and need none of this.
7
+ GLUBEAN_TOKEN=
8
+
9
+ # Optional — only if your glubean-demo-backend enforces the caller-key
10
+ # rate tier. Set this AND uncomment the headers line in config/api.ts.
11
+ # DEMO_BACKEND_CALLER_KEY=
@@ -0,0 +1,60 @@
1
+ # Glubean public demo project
2
+
3
+ A runnable demo that produces **real** flaky / regression data — not
4
+ contrived examples. Generated by `glubean init --template demo`. Pairs
5
+ with the `glubean-demo-backend` service (a small Cloudflare Worker with
6
+ deliberate failure modes).
7
+
8
+ ## The narrative
9
+
10
+ Three independent data sources, each telling one story. Any one
11
+ breaking doesn't affect the others.
12
+
13
+ | Suite | Source | Story |
14
+ |---|---|---|
15
+ | `api-stable` | mock backend `/api/stable/*` (deterministic 200) | "Stable suite stays green over time" |
16
+ | `api-flaky` | mock backend `/api/flaky/*` (~30% 503) | "Glubean detects this API is flaky" |
17
+ | `contracts-stable` | mock backend stable shape | "Contract guards the API shape" |
18
+ | `canary` | in-process `Math.random()` (~50% pass) | "The run/reduce pipeline is alive — independent of any backend" |
19
+
20
+ ## Commands
21
+
22
+ | Command | Profile | Suites | Result |
23
+ |---|---|---|---|
24
+ | `npm test` | `local` | api-stable, contracts-stable | Always green (safe for a fresh clone) |
25
+ | `npm run test:full` | `full` | + api-flaky, canary | Intermittently non-zero exit BY DESIGN — that's the point |
26
+
27
+ `test:full` runs **fully local** — no cloud account, no upload. To
28
+ publish results to a dashboard, run `glubean login` once then
29
+ `glubean run --profile full --upload --project <your-project>`.
30
+
31
+ ## Setup
32
+
33
+ ```bash
34
+ cp .env.example .env # set MOCK_BACKEND_URL to your glubean-demo-backend
35
+ npm install
36
+ npm test # local profile — green
37
+ npm run test:full # full narrative — flaky + canary intermittently fail
38
+ ```
39
+
40
+ `MOCK_BACKEND_URL` lives in `.env` (loaded into `ctx.vars` + `{{VAR}}`
41
+ templates). The HTTP client is configured once in
42
+ [`config/api.ts`](config/api.ts) and imported by every test + contract —
43
+ it auto-traces and auto-redacts requests, so the dashboard shows the
44
+ actual calls with zero hand-written client code.
45
+
46
+ `.env.secrets` (gitignored) is only needed for the opt-in `--upload`
47
+ flow — put `GLUBEAN_TOKEN` there.
48
+
49
+ ## Notes
50
+
51
+ - **Retry is off by default.** The runner doesn't auto-retry 5xx — a
52
+ verification test reports what the server actually returned (that's
53
+ how the flaky suite catches 503s). Need resilience for a specific
54
+ call? Pass `http.get(url, { retry: 2 })`, or set it for the whole
55
+ shared client in `config/api.ts` via `configure({ http: { retry } })`.
56
+ - **Why a self-hosted mock backend?** Third-party public APIs (httpbin,
57
+ jsonplaceholder) are deliberately stable — they can't produce a
58
+ believable "this API is flaky 30% of the time" story. The companion
59
+ `glubean-demo-backend` provides controlled failure modes that simulate
60
+ real production scenarios. See `glubean/docs/05-demo-project-design.zh.md`.
@@ -0,0 +1,24 @@
1
+ import { configure } from "@glubean/sdk";
2
+
3
+ /**
4
+ * Single shared HTTP client for the demo's mock backend.
5
+ *
6
+ * Per the Glubean project-structure convention: call `configure()`
7
+ * ONCE here and import `http` into every test + contract — don't
8
+ * repeat configure() per file. `prefixUrl` resolves {{MOCK_BACKEND_URL}}
9
+ * from .env at run time; the client auto-traces + auto-redacts every
10
+ * request.
11
+ *
12
+ * Optional caller key: if your deployed glubean-demo-backend enforces
13
+ * the caller-key rate tier (verified 60/min vs anonymous 10/min), set
14
+ * DEMO_BACKEND_CALLER_KEY in .env.secrets and uncomment the `headers`
15
+ * line below. Left off by default so a fresh scaffold runs zero-config
16
+ * — a `{{...}}` header throws if the secret is empty/unset, and the
17
+ * anonymous tier is plenty for occasional local runs.
18
+ */
19
+ export const { http } = configure({
20
+ http: {
21
+ prefixUrl: "{{MOCK_BACKEND_URL}}",
22
+ // headers: { "x-demo-caller-key": "{{DEMO_BACKEND_CALLER_KEY}}" },
23
+ },
24
+ });
@@ -0,0 +1,13 @@
1
+ node_modules/
2
+ .glubean/
3
+
4
+ # Secrets — Glubean loads these into ctx.secrets; never commit them.
5
+ .env.secrets
6
+ .env.*.secrets
7
+
8
+ # Local env (vars)
9
+ .env
10
+ .env.local
11
+
12
+ *.log
13
+ .DS_Store
@@ -0,0 +1,48 @@
1
+ version: 1
2
+
3
+ defaults:
4
+ redaction:
5
+ replacementFormat: simple
6
+
7
+ suites:
8
+ # Deterministic — always green. Backs the "stable stays green" story.
9
+ api-stable:
10
+ target: ./tests/api-stable
11
+ kinds: [test]
12
+ # Probabilistic 503 from the mock backend. Backs the "Glubean detects
13
+ # flaky" story — intentionally non-deterministic.
14
+ api-flaky:
15
+ target: ./tests/api-flaky
16
+ kinds: [test]
17
+ # Contract guarding the stable API shape. Always green.
18
+ contracts-stable:
19
+ target: ./tests/contracts/stable
20
+ kinds: [contract]
21
+ # 100% in-process Math.random() canary — proves the run/reduce
22
+ # pipeline itself is alive, independent of any backend.
23
+ canary:
24
+ target: ./tests/canary
25
+ kinds: [test]
26
+
27
+ profiles:
28
+ # `npm test` — only deterministic suites, so a fresh clone runs green.
29
+ local:
30
+ suites: [api-stable, contracts-stable]
31
+
32
+ # `npm run test:full` — the complete suite incl. flaky + canary. Exit
33
+ # code is intermittently non-zero BY DESIGN (that's the point — you
34
+ # SEE Glubean catch flaky/degrading behavior). Runs fully local; no
35
+ # upload, no cloud account needed.
36
+ #
37
+ # To publish results to a Glubean project dashboard, run
38
+ # `glubean login` once, then `glubean run --profile full --upload
39
+ # --project <your-project>` (or add an `upload:` block here with your
40
+ # projectAlias). Kept opt-in so a fresh scaffold runs with zero config.
41
+ full:
42
+ suites: [api-stable, api-flaky, contracts-stable, canary]
43
+ execution:
44
+ failFast: false
45
+ concurrency: 3
46
+ reporters:
47
+ console: summary
48
+ resultJson: .glubean/results/full.result.json
@@ -0,0 +1,28 @@
1
+ import { test } from "@glubean/sdk";
2
+ import { http } from "../../config/api.ts";
3
+
4
+ /**
5
+ * Flaky suite — hits the mock backend's /api/flaky/search endpoint,
6
+ * which returns 503 ~30% of the time by design. Asserting 200 makes
7
+ * the failures surface as real flaky data the dashboard classifies
8
+ * (stable test, intermittent fail).
9
+ *
10
+ * Non-2xx doesn't throw (throwHttpErrors defaults false) and the
11
+ * runner defaults retry to 0, so each raw 503 fails the test — no
12
+ * try/catch, no custom client. (If your runner predates the retry:0
13
+ * default, add `retry: 0` to the get() options here.)
14
+ *
15
+ * NOT in the `local` profile — `npm test` stays green. Only
16
+ * `npm run test:full` includes it.
17
+ */
18
+
19
+ export const flakySearch = test(
20
+ { id: "flaky-search", tags: ["flaky", "public-demo"] },
21
+ async ({ expect }) => {
22
+ const res = await http.get("api/flaky/search", {
23
+ searchParams: { q: "glubean" },
24
+ });
25
+ // ~30% of runs return 503 by design; this assertion fails on those.
26
+ expect(res).toHaveStatus(200);
27
+ },
28
+ );
@@ -0,0 +1,30 @@
1
+ import { test } from "@glubean/sdk";
2
+ import { http } from "../../config/api.ts";
3
+
4
+ /**
5
+ * Stable suite — hits the mock backend's deterministic /api/stable
6
+ * endpoints. Always passes; the "everything's working" baseline.
7
+ * Uses the shared client from config/api.ts (auto-traced).
8
+ */
9
+
10
+ export const listUsers = test(
11
+ { id: "stable-list-users", tags: ["stable", "public-demo"] },
12
+ async ({ expect }) => {
13
+ const res = await http.get("api/stable/users");
14
+ expect(res).toHaveStatus(200);
15
+ const body = await res.json<{ users: unknown[]; total: number }>();
16
+ expect(Array.isArray(body.users)).toBe(true);
17
+ expect(body.total).toBe(3);
18
+ },
19
+ );
20
+
21
+ export const getOneUser = test(
22
+ { id: "stable-get-user", tags: ["stable", "public-demo"] },
23
+ async ({ expect }) => {
24
+ const res = await http.get("api/stable/users/u_001");
25
+ expect(res).toHaveStatus(200);
26
+ const body = await res.json<{ id: string; name: string; email: string }>();
27
+ expect(body.id).toBe("u_001");
28
+ expect(body.email).toContain("@");
29
+ },
30
+ );
@@ -0,0 +1,23 @@
1
+ import { test } from "@glubean/sdk";
2
+
3
+ /**
4
+ * Synthetic canary — 100% in-process, no backend. A coin flip on
5
+ * Math.random() means this passes ~50% of runs. Its only job is to
6
+ * prove the run → reduce → dashboard pipeline is alive end-to-end,
7
+ * independent of any external service. If the mock backend is down,
8
+ * this canary still produces flaky data.
9
+ *
10
+ * Intentionally only in the `public-demo` profile — never `npm test`.
11
+ */
12
+
13
+ export const syntheticFlaky = test(
14
+ { id: "canary-synthetic-50pct", tags: ["canary", "public-demo"] },
15
+ async (ctx) => {
16
+ const roll = Math.random();
17
+ ctx.log(`synthetic canary roll = ${roll.toFixed(3)} (passes if < 0.5)`);
18
+ ctx.assert(
19
+ roll < 0.5,
20
+ "synthetic 50/50 canary — non-deterministic by design (proves the pipeline is live)",
21
+ );
22
+ },
23
+ );
@@ -0,0 +1,70 @@
1
+ import { contract } from "@glubean/sdk";
2
+ import type { SchemaLike } from "@glubean/sdk";
3
+ import { http } from "../../../config/api.ts";
4
+
5
+ /**
6
+ * Stable contract — guards the shape of the mock backend's
7
+ * /api/stable/users endpoint. Always green; if the backend ever
8
+ * changes this shape (drops/renames `users` or `total`), the contract
9
+ * fails and the dashboard shows a contract violation.
10
+ *
11
+ * Reuses the shared client from config/api.ts — same backend as the
12
+ * api-stable suite, configured once.
13
+ */
14
+
15
+ const stableApi = contract.http.with("demo-stable", {
16
+ client: http,
17
+ security: null,
18
+ });
19
+
20
+ interface UsersResponse {
21
+ users: Array<{ id: string; name: string; email: string }>;
22
+ total: number;
23
+ }
24
+
25
+ // Hand-rolled SchemaLike so the demo project needs no zod dependency.
26
+ // Validates the documented shape, not just the status — a 200 that
27
+ // dropped `users`/`total` must still fail this contract.
28
+ const usersResponseSchema: SchemaLike<UsersResponse> = {
29
+ safeParse(data: unknown) {
30
+ const d = data as Partial<UsersResponse> | null;
31
+ const issues: Array<{ message: string }> = [];
32
+ if (!d || typeof d !== "object") {
33
+ issues.push({ message: "response is not an object" });
34
+ } else {
35
+ if (!Array.isArray(d.users)) {
36
+ issues.push({ message: "`users` is missing or not an array" });
37
+ } else if (
38
+ !d.users.every(
39
+ (u) =>
40
+ u &&
41
+ typeof u.id === "string" &&
42
+ typeof u.name === "string" &&
43
+ typeof u.email === "string",
44
+ )
45
+ ) {
46
+ issues.push({ message: "each user must have string id/name/email" });
47
+ }
48
+ if (typeof d.total !== "number") {
49
+ issues.push({ message: "`total` is missing or not a number" });
50
+ }
51
+ }
52
+ return issues.length === 0
53
+ ? { success: true, data: data as UsersResponse }
54
+ : { success: false, error: { issues } };
55
+ },
56
+ };
57
+
58
+ // @contract
59
+ export const usersContract = stableApi("stable-users-shape", {
60
+ endpoint: "GET /api/stable/users",
61
+ feature: "Demo / Stable API",
62
+ description: "The stable users endpoint keeps its documented shape",
63
+ tags: ["stable", "public-demo"],
64
+ cases: {
65
+ ok: {
66
+ description: "returns 200 with a users array and total count",
67
+ expect: { status: 200, schema: usersResponseSchema },
68
+ },
69
+ },
70
+ });
@@ -0,0 +1,15 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2022",
4
+ "module": "ESNext",
5
+ "moduleResolution": "Bundler",
6
+ "strict": true,
7
+ "esModuleInterop": true,
8
+ "skipLibCheck": true,
9
+ "resolveJsonModule": true,
10
+ "noEmit": true,
11
+ "allowImportingTsExtensions": true
12
+ },
13
+ "include": ["**/*.ts"],
14
+ "exclude": ["node_modules"]
15
+ }
@@ -1,160 +0,0 @@
1
- # Glubean Test Project
2
-
3
- API test automation project using `@glubean/sdk`. Runtime is **Node.js**. Packages are from **npm**.
4
-
5
- ## Project Structure
6
-
7
- ```
8
- tests/ # Permanent test files — run in CI and Cloud
9
- explore/ # Exploratory tests — quick iteration in your editor
10
- data/ # Test data files (JSON, CSV, YAML)
11
- context/ # API specs and reference docs for AI and tooling
12
- .env # Public variables (BASE_URL)
13
- .env.secrets # Credentials — gitignored
14
- package.json # Runtime config, dependencies, glubean settings
15
- ```
16
-
17
- ## Setup
18
-
19
- If `glubean run` fails with module-not-found errors, run:
20
-
21
- ```bash
22
- npm install
23
- ```
24
-
25
- ## BEFORE Writing or Modifying Any Test (MANDATORY)
26
-
27
- You MUST complete these steps before writing any test code. Do NOT skip this — not even for "simple" tests.
28
-
29
- 1. Search `context/` for the API you are testing. Check OpenAPI specs (`context/*.json`) for exact paths, methods,
30
- request/response schemas. **Do NOT guess endpoint paths or response shapes.**
31
- 2. Check `.glubean/docs/` exists. If missing, download:
32
- ```bash
33
- mkdir -p .glubean/docs
34
- curl -sL https://raw.githubusercontent.com/glubean/cheatsheet/main/sdk-reference.md -o .glubean/docs/sdk-reference.md
35
- curl -sL https://raw.githubusercontent.com/glubean/cheatsheet/main/patterns.md -o .glubean/docs/patterns.md
36
- curl -sL https://raw.githubusercontent.com/glubean/cheatsheet/main/cli-reference.md -o .glubean/docs/cli-reference.md
37
- ```
38
- 3. Read `.glubean/docs/sdk-reference.md` — all exports, signatures, options.
39
- 4. Read `.glubean/docs/patterns.md` — runnable examples for every test type.
40
- 5. THEN write the test using only patterns from those docs and API details from step 1.
41
-
42
- **If you write test code without completing steps 1-4, you are violating this rule.** Do NOT guess — the endpoint paths,
43
- response schemas, and SDK API are all documented.
44
-
45
- **If `context/` has no spec or docs for the API under test:** Unless it is a well-known public API (e.g. GitHub,
46
- Stripe), STOP and ask the user for the endpoint path, method, and response schema. Do NOT hallucinate paths or response
47
- shapes.
48
-
49
- **If the OpenAPI spec exists but lacks response schemas:** Warn the user that response structure will be inferred at
50
- runtime, which lowers first-pass accuracy. Suggest adding response examples to `context/` to enable one-shot test
51
- generation.
52
-
53
- ## Quick Checklist
54
-
55
- Before submitting any test, verify:
56
-
57
- - [ ] Checked `context/` for endpoint spec + response schema
58
- - [ ] Response schema available? If not, warned user about reduced accuracy
59
- - [ ] Test ID is kebab-case and unique across the project
60
- - [ ] Tags are set (e.g. `["api"]`, `["smoke"]`, `["e2e"]`)
61
- - [ ] Creates resources → has `.teardown()` cleanup
62
- - [ ] No hardcoded secrets or test data in the test file
63
-
64
- ## Coverage Expectations
65
-
66
- Do not stop at a single happy-path test unless the user explicitly asks for only one case.
67
-
68
- - For authentication/identity endpoints, include:
69
- - one authenticated success case
70
- - one unauthenticated or invalid-credential case
71
- - For protected resources, include authorization failure cases (`401` or `403`) when applicable.
72
- - For create/update endpoints, include at least one invalid-input case when the contract documents validation rules.
73
- - If the OpenAPI spec lacks enough detail for a negative case, say so explicitly and choose the safest verifiable case.
74
-
75
- ## Definition of Done for API Tests
76
-
77
- Before considering an API test complete, verify whether the endpoint has:
78
-
79
- - a success path
80
- - an auth boundary
81
- - a validation boundary
82
- - a not-found or forbidden boundary
83
-
84
- Cover all applicable boundaries unless the user asked for a narrower scope.
85
-
86
- ## Import Convention
87
-
88
- Always use the npm package name:
89
-
90
- ```typescript
91
- // Correct
92
- import { test } from "@glubean/sdk";
93
- ```
94
-
95
- ## Conventions
96
-
97
- - **One test export per behavior.** Each `export const` is a test case.
98
- - **Tags:** `["smoke"]` for health checks, `["api"]` for API tests, `["e2e"]` for browser tests.
99
- - **IDs:** kebab-case, unique across the project. Used for history tracking.
100
- - **Data separation:** keep test data in `data/`, never hardcode payloads in test files.
101
- - **Secrets:** use `secrets.require("KEY")` or configure's secret binding. Never hardcode credentials.
102
- - **Cleanup:** use `.teardown()` for any resource created during the test.
103
- - **Imports:** use `.ts` extensions for local files.
104
-
105
- ## Running Tests
106
-
107
- ```bash
108
- glubean run # Run all tests in tests/
109
- glubean run tests/ # Run a specific directory
110
- glubean run --filter smoke # Run by tag
111
- glubean run --explore # Run explore/ tests
112
- glubean run --upload # Run and upload results to Cloud
113
- ```
114
-
115
- For all CLI options, run `glubean --help` or `glubean run --help`.
116
-
117
- ## MCP Setup (enables AI closed-loop)
118
-
119
- Without MCP, the AI can only write tests. With MCP, the AI can: **write → run → read failures → fix → rerun → pass** —
120
- without human intervention.
121
-
122
- ### Claude Code
123
-
124
- ```bash
125
- claude mcp add glubean -- npx @glubean/mcp
126
- ```
127
-
128
- ### Cursor
129
-
130
- Add to `~/.cursor/mcp.json`:
131
-
132
- ```json
133
- {
134
- "mcpServers": {
135
- "glubean": {
136
- "command": "npx",
137
- "args": ["@glubean/mcp"]
138
- }
139
- }
140
- }
141
- ```
142
-
143
- ### Available MCP Tools
144
-
145
- - `glubean_run_local_file` — run a test file locally, returns structured results (assertions, logs, traces)
146
- - `glubean_discover_tests` — scan a file and return test export metadata (id, name, tags)
147
- - `glubean_list_test_files` — list all test files in the project
148
- - `glubean_diagnose_config` — check project config for common issues (.env, package.json, dirs)
149
- - `glubean_get_last_run_summary` — get summary of the most recent local run
150
- - `glubean_get_local_events` — get filtered events (assertions, logs, traces) from the last run; useful for debugging
151
- failures
152
-
153
- ## Type Definitions
154
-
155
- For full API details beyond the cheatsheet, go to the import source:
156
-
157
- ```typescript
158
- import { configure, fromDir, test } from "@glubean/sdk";
159
- // Go-to-definition on these for exact signatures and options
160
- ```