@glubean/cli 0.2.5 → 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.
- package/README.md +22 -2
- package/dist/commands/contracts.d.ts.map +1 -1
- package/dist/commands/contracts.js +28 -4
- package/dist/commands/contracts.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +267 -60
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/migrate.d.ts +31 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +516 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/redact.d.ts.map +1 -1
- package/dist/commands/redact.js +32 -8
- package/dist/commands/redact.js.map +1 -1
- package/dist/commands/run.d.ts +110 -2
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +493 -43
- package/dist/commands/run.js.map +1 -1
- package/dist/lib/config.d.ts +267 -43
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +744 -149
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/env.d.ts +29 -0
- package/dist/lib/env.d.ts.map +1 -0
- package/dist/lib/env.js +59 -0
- package/dist/lib/env.js.map +1 -0
- package/dist/lib/print-plan.d.ts +21 -0
- package/dist/lib/print-plan.d.ts.map +1 -0
- package/dist/lib/print-plan.js +108 -0
- package/dist/lib/print-plan.js.map +1 -0
- package/dist/lib/upload.d.ts +36 -1
- package/dist/lib/upload.d.ts.map +1 -1
- package/dist/lib/upload.js +126 -19
- package/dist/lib/upload.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +420 -27
- package/dist/main.js.map +1 -1
- package/package.json +15 -6
- package/templates/README.md +7 -13
- package/templates/demo/.env.example +7 -0
- package/templates/demo/.env.secrets.example +11 -0
- package/templates/demo/README.md +60 -0
- package/templates/demo/config/api.ts +24 -0
- package/templates/demo/gitignore.tpl +13 -0
- package/templates/demo/glubean.yaml +48 -0
- package/templates/demo/tests/api-flaky/search-flaky.test.ts +28 -0
- package/templates/demo/tests/api-stable/get-users.test.ts +30 -0
- package/templates/demo/tests/canary/synthetic-50pct-flaky.test.ts +23 -0
- package/templates/demo/tests/contracts/stable/users-contract.contract.ts +70 -0
- package/templates/demo/tsconfig.json +15 -0
- package/templates/AI-INSTRUCTIONS.md +0 -160
- package/templates/ci-config/ci.yaml +0 -13
- package/templates/ci-config/default.yaml +0 -9
- package/templates/ci-config/explore.yaml +0 -5
- package/templates/ci-config/staging.yaml +0 -9
package/README.md
CHANGED
|
@@ -21,7 +21,8 @@ glubean init # interactive wizard
|
|
|
21
21
|
glubean run # run all tests in testDir
|
|
22
22
|
glubean run path/to/file.test.ts
|
|
23
23
|
glubean run --filter checkout --tag smoke
|
|
24
|
-
glubean run --
|
|
24
|
+
glubean ci run --upload # CI profile + push results to Cloud
|
|
25
|
+
glubean migrate # preview v0.1.x -> v10 contract changes
|
|
25
26
|
```
|
|
26
27
|
|
|
27
28
|
See the full project README at the [repo root](../../README.md) for the broader Glubean story (SDK, MCP, agent workflow).
|
|
@@ -56,7 +57,7 @@ glubean run --pick happyPath # specific test.pick example
|
|
|
56
57
|
glubean run --fail-fast # stop on first failure
|
|
57
58
|
glubean run --result-json # write .result.json
|
|
58
59
|
glubean run --reporter junit # JUnit XML
|
|
59
|
-
glubean run
|
|
60
|
+
glubean ci run # use the `ci` profile from glubean.yaml
|
|
60
61
|
glubean run --upload --project <id> # push to Glubean Cloud
|
|
61
62
|
glubean run --inspect-brk # attach a debugger
|
|
62
63
|
```
|
|
@@ -85,6 +86,25 @@ glubean scan tests/
|
|
|
85
86
|
glubean scan --upload --project <id> # push contract metadata without running
|
|
86
87
|
```
|
|
87
88
|
|
|
89
|
+
### `migrate`
|
|
90
|
+
|
|
91
|
+
Preview or apply v0.1.x -> v10 project migrations. The command rewrites safe legacy patterns and reports anything that needs manual review.
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
glubean migrate
|
|
95
|
+
glubean migrate --dir path/to/project
|
|
96
|
+
glubean migrate --apply
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Current automatic changes:
|
|
100
|
+
|
|
101
|
+
| Pattern | Migration |
|
|
102
|
+
|---------|-----------|
|
|
103
|
+
| `contract.http("id", spec)` | Adds a scoped `contract.http.with(...)` instance and calls it |
|
|
104
|
+
| `import "@glubean/grpc"` / `import "@glubean/graphql"` | Moves plugin installation into `glubean.setup.ts` |
|
|
105
|
+
|
|
106
|
+
Manual review items are reported for removed case-level `setup` / `teardown`, legacy `definePlugin((runtime) => ...)`, and cases with `needs` that should be wrapped in `defineHttpCase<Needs>(...)`.
|
|
107
|
+
|
|
88
108
|
### `validate-metadata`
|
|
89
109
|
|
|
90
110
|
Verify that a previously generated `metadata.json` still matches the local files.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/commands/contracts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,kBAAkB,EAA0B,MAAM,yBAAyB,CAAC;AAiB1F,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAqBD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,kBAAkB,GAAG,SAAS,CAOhC;
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../src/commands/contracts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,kBAAkB,EAGnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,kBAAkB,EAA0B,MAAM,yBAAyB,CAAC;AAiB1F,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAqBD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,kBAAkB,GAAG,SAAS,CAOhC;AA2FD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAuCvE;AAID,wBAAgB,UAAU,CACxB,SAAS,EAAE,kBAAkB,EAAE,EAC/B,KAAK,GAAE,kBAAkB,EAAO,GAC/B,MAAM,CAkCR;AA2CD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAwBxE;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2BzE;AAYD,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,IAAI,CAAC,CAqMf"}
|
|
@@ -69,25 +69,40 @@ function computeSummary(contracts) {
|
|
|
69
69
|
return { total, active: total - deferred - deprecated - gated, deferred, deprecated, gated };
|
|
70
70
|
}
|
|
71
71
|
// ── Markdown outline formatter ──────────────────────────────────────────────
|
|
72
|
+
function formatStaticVerifyRule(rule) {
|
|
73
|
+
if (typeof rule === "string")
|
|
74
|
+
return rule;
|
|
75
|
+
const prefix = rule.id ? `${rule.id}: ` : "";
|
|
76
|
+
return `${prefix}${rule.description}`;
|
|
77
|
+
}
|
|
72
78
|
function formatCase(c) {
|
|
73
79
|
const desc = c.description ? ` — ${c.description}` : "";
|
|
80
|
+
const projectionNotes = [
|
|
81
|
+
c.given ? `given: ${c.given}` : undefined,
|
|
82
|
+
c.verifyRules && c.verifyRules.length > 0
|
|
83
|
+
? `verifies: ${c.verifyRules.map(formatStaticVerifyRule).join("; ")}`
|
|
84
|
+
: c.hasVerify
|
|
85
|
+
? "has verify()"
|
|
86
|
+
: undefined,
|
|
87
|
+
].filter(Boolean);
|
|
88
|
+
const notes = projectionNotes.length > 0 ? ` *(${projectionNotes.join("; ")})*` : "";
|
|
74
89
|
// Key off lifecycle first (authoritative), fall back to reason strings
|
|
75
90
|
const lifecycle = c.lifecycle
|
|
76
91
|
?? (c.deprecated ? "deprecated" : c.deferred ? "deferred" : "active");
|
|
77
92
|
if (lifecycle === "deprecated") {
|
|
78
93
|
const reason = c.deprecated ?? "deprecated";
|
|
79
|
-
return `- ⊘ **${c.key}** — deprecated: ${reason}`;
|
|
94
|
+
return `- ⊘ **${c.key}** — deprecated: ${reason}${notes}`;
|
|
80
95
|
}
|
|
81
96
|
if (lifecycle === "deferred") {
|
|
82
97
|
const reason = c.deferred ?? "deferred";
|
|
83
|
-
return `- ⊘ **${c.key}** — deferred: ${reason}`;
|
|
98
|
+
return `- ⊘ **${c.key}** — deferred: ${reason}${notes}`;
|
|
84
99
|
}
|
|
85
100
|
if (c.requires === "browser" || c.requires === "out-of-band") {
|
|
86
|
-
return `- ⊘ **${c.key}** — requires: ${c.requires}`;
|
|
101
|
+
return `- ⊘ **${c.key}** — requires: ${c.requires}${notes}`;
|
|
87
102
|
}
|
|
88
103
|
const severityTag = c.severity === "critical" ? " 🔴" : c.severity === "info" ? " ℹ️" : "";
|
|
89
104
|
const suffix = c.defaultRun === "opt-in" ? " *(opt-in)*" : "";
|
|
90
|
-
return `- **${c.key}**${desc}${suffix}${severityTag}`;
|
|
105
|
+
return `- **${c.key}**${desc}${notes}${suffix}${severityTag}`;
|
|
91
106
|
}
|
|
92
107
|
/**
|
|
93
108
|
* @deprecated CAR-2 back-compat shim. Delegates to the SDK artifact
|
|
@@ -128,6 +143,9 @@ export function formatMdOutline(contracts) {
|
|
|
128
143
|
requires: cs.requires,
|
|
129
144
|
deferredReason: cs.deferred,
|
|
130
145
|
deprecatedReason: cs.deprecated,
|
|
146
|
+
given: cs.given,
|
|
147
|
+
hasVerify: cs.hasVerify,
|
|
148
|
+
verifyRules: cs.verifyRules,
|
|
131
149
|
};
|
|
132
150
|
}),
|
|
133
151
|
}));
|
|
@@ -156,6 +174,9 @@ export function formatJson(contracts, flows = []) {
|
|
|
156
174
|
deprecated: cas.deprecated,
|
|
157
175
|
requires: cas.requires,
|
|
158
176
|
defaultRun: cas.defaultRun,
|
|
177
|
+
given: cas.given,
|
|
178
|
+
hasVerify: cas.hasVerify,
|
|
179
|
+
verifyRules: cas.verifyRules,
|
|
159
180
|
})),
|
|
160
181
|
})),
|
|
161
182
|
})),
|
|
@@ -349,6 +370,9 @@ export async function contractsCommand(options = {}) {
|
|
|
349
370
|
severity: c.severity,
|
|
350
371
|
requires: c.requires,
|
|
351
372
|
defaultRun: c.defaultRun,
|
|
373
|
+
given: c.given,
|
|
374
|
+
hasVerify: c.hasVerify,
|
|
375
|
+
verifyRules: c.verifyRules,
|
|
352
376
|
hasHeaderSchema: schemas?.response?.headers != null,
|
|
353
377
|
hasExample: schemas?.response?.examples != null,
|
|
354
378
|
line: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/commands/contracts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../../src/commands/contracts.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export interface InitOptions {
|
|
|
17
17
|
overwriteHooks?: boolean;
|
|
18
18
|
overwriteActions?: boolean;
|
|
19
19
|
baseUrl?: string;
|
|
20
|
+
/** Named scaffold template. Currently: "demo" (public demo project). */
|
|
21
|
+
template?: string;
|
|
20
22
|
}
|
|
21
23
|
export declare function initCommand(options?: InitOptions): Promise<void>;
|
|
22
24
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwiBH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAE7D,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmV1E"}
|
package/dist/commands/init.js
CHANGED
|
@@ -174,10 +174,9 @@ function makePackageJson(_baseUrl) {
|
|
|
174
174
|
version: "0.1.0",
|
|
175
175
|
type: "module",
|
|
176
176
|
scripts: {
|
|
177
|
-
test: "glubean run --
|
|
178
|
-
"test:
|
|
179
|
-
|
|
180
|
-
explore: "glubean run --config ci-config/explore.yaml",
|
|
177
|
+
test: "glubean run --profile local",
|
|
178
|
+
"test:ci": "glubean ci run",
|
|
179
|
+
explore: "glubean run --profile explore",
|
|
181
180
|
scan: "glubean scan",
|
|
182
181
|
"validate-metadata": "glubean validate-metadata",
|
|
183
182
|
},
|
|
@@ -186,6 +185,102 @@ function makePackageJson(_baseUrl) {
|
|
|
186
185
|
},
|
|
187
186
|
}, null, 2) + "\n");
|
|
188
187
|
}
|
|
188
|
+
// Canonical glubean.yaml emitted by `glubean init` for non-contract-first
|
|
189
|
+
// projects. Generated by Phase 4 of the config-profiles plan
|
|
190
|
+
// (`04-config-profiles-public-demo-plan.zh.md` §"新配置文件"). Suites
|
|
191
|
+
// declared but kept simple: tests only. Empty `contracts` suite stays
|
|
192
|
+
// out of the template — non-contract-first init doesn't create the
|
|
193
|
+
// contracts/ directory, and declaring a suite that resolves to zero
|
|
194
|
+
// files would trip the per-suite empty-files check.
|
|
195
|
+
const GLUBEAN_YAML_DEFAULT = `version: 1
|
|
196
|
+
|
|
197
|
+
defaults:
|
|
198
|
+
redaction:
|
|
199
|
+
# Full redaction: secrets are replaced with a fixed marker, no
|
|
200
|
+
# prefix/suffix characters revealed.
|
|
201
|
+
replacementFormat: simple
|
|
202
|
+
|
|
203
|
+
suites:
|
|
204
|
+
tests:
|
|
205
|
+
target: ./tests
|
|
206
|
+
kinds: [test]
|
|
207
|
+
explore:
|
|
208
|
+
target: ./explore
|
|
209
|
+
kinds: [test]
|
|
210
|
+
|
|
211
|
+
profiles:
|
|
212
|
+
local:
|
|
213
|
+
suites: [tests]
|
|
214
|
+
|
|
215
|
+
ci:
|
|
216
|
+
suites: [tests]
|
|
217
|
+
selection:
|
|
218
|
+
excludeTags: [manual, destructive]
|
|
219
|
+
execution:
|
|
220
|
+
failFast: true
|
|
221
|
+
concurrency: 2
|
|
222
|
+
reporters:
|
|
223
|
+
junit: .glubean/results/junit.xml
|
|
224
|
+
resultJson: .glubean/results/ci.result.json
|
|
225
|
+
|
|
226
|
+
explore:
|
|
227
|
+
suites: [explore]
|
|
228
|
+
`;
|
|
229
|
+
// Contract-first variant: declares BOTH \`contracts\` and \`tests\` suites
|
|
230
|
+
// and runs both in the local + ci profiles, per plan §Phase 4 task 5
|
|
231
|
+
// "contract-first init 默认 suites 包含 contracts 和 tests". A starter
|
|
232
|
+
// tests/sample.test.ts is also written below so multi-suite CI doesn't
|
|
233
|
+
// trip the per-suite empty-files check out of the box.
|
|
234
|
+
const GLUBEAN_YAML_CONTRACT_FIRST = `version: 1
|
|
235
|
+
|
|
236
|
+
defaults:
|
|
237
|
+
redaction:
|
|
238
|
+
# Full redaction: secrets are replaced with a fixed marker, no
|
|
239
|
+
# prefix/suffix characters revealed.
|
|
240
|
+
replacementFormat: simple
|
|
241
|
+
|
|
242
|
+
suites:
|
|
243
|
+
contracts:
|
|
244
|
+
target: ./contracts
|
|
245
|
+
kinds: [contract, flow]
|
|
246
|
+
tests:
|
|
247
|
+
target: ./tests
|
|
248
|
+
kinds: [test]
|
|
249
|
+
|
|
250
|
+
profiles:
|
|
251
|
+
local:
|
|
252
|
+
suites: [contracts, tests]
|
|
253
|
+
|
|
254
|
+
ci:
|
|
255
|
+
suites: [contracts, tests]
|
|
256
|
+
selection:
|
|
257
|
+
excludeTags: [manual, destructive]
|
|
258
|
+
execution:
|
|
259
|
+
failFast: true
|
|
260
|
+
concurrency: 2
|
|
261
|
+
reporters:
|
|
262
|
+
junit: .glubean/results/junit.xml
|
|
263
|
+
resultJson: .glubean/results/ci.result.json
|
|
264
|
+
|
|
265
|
+
contract-smoke:
|
|
266
|
+
suites: [contracts]
|
|
267
|
+
selection:
|
|
268
|
+
tags: [smoke]
|
|
269
|
+
`;
|
|
270
|
+
const CONTRACT_FIRST_SAMPLE_TEST = `import { test } from "@glubean/sdk";
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Starter test so the canonical CI profile (suites: [contracts, tests])
|
|
274
|
+
* doesn't trip "zero files" on a brand-new contract-first project.
|
|
275
|
+
* Delete this file once you've added real tests under ./tests.
|
|
276
|
+
*/
|
|
277
|
+
export const placeholder = test(
|
|
278
|
+
{ id: "placeholder", tags: ["smoke"] },
|
|
279
|
+
async (ctx) => {
|
|
280
|
+
ctx.assert(true, "starter test — replace me");
|
|
281
|
+
},
|
|
282
|
+
);
|
|
283
|
+
`;
|
|
189
284
|
function makeEnvFile(baseUrl) {
|
|
190
285
|
return `# Environment variables for tests
|
|
191
286
|
BASE_URL=${baseUrl}
|
|
@@ -196,19 +291,6 @@ const ENV_SECRETS = `# Secrets for tests (add this file to .gitignore)
|
|
|
196
291
|
USERNAME=emilys
|
|
197
292
|
PASSWORD=emilyspass
|
|
198
293
|
`;
|
|
199
|
-
function makeStagingEnvFile(baseUrl) {
|
|
200
|
-
const stagingUrl = baseUrl.replace(/\/\/([^/]+)/, "//staging.$1");
|
|
201
|
-
return `# Staging environment variables
|
|
202
|
-
# Usage: glubean run --env-file .env.staging
|
|
203
|
-
BASE_URL=${stagingUrl}
|
|
204
|
-
`;
|
|
205
|
-
}
|
|
206
|
-
const ENV_STAGING_SECRETS = `# Staging secrets (gitignored)
|
|
207
|
-
# Usage: auto-loaded when --env-file .env.staging is used
|
|
208
|
-
# API_KEY=your-staging-api-key
|
|
209
|
-
USERNAME=
|
|
210
|
-
PASSWORD=
|
|
211
|
-
`;
|
|
212
294
|
const GITIGNORE = `# Secrets (all env-specific secrets files)
|
|
213
295
|
.env.secrets
|
|
214
296
|
.env.*.secrets
|
|
@@ -361,14 +443,24 @@ jobs:
|
|
|
361
443
|
echo "PASSWORD=\${{ secrets.PASSWORD }}" >> .env.secrets
|
|
362
444
|
|
|
363
445
|
- name: Run tests
|
|
364
|
-
|
|
446
|
+
# The ci profile in glubean.yaml already sets reporters.resultJson
|
|
447
|
+
# (.glubean/results/ci.result.json) + reporters.junit, so no CLI
|
|
448
|
+
# override is needed. Adding --result-json without a path here
|
|
449
|
+
# would push output to the default glubean-run.result.json and
|
|
450
|
+
# bypass the profile-owned location.
|
|
451
|
+
run: npx glubean ci run
|
|
365
452
|
|
|
366
453
|
- name: Upload results
|
|
367
454
|
if: always()
|
|
368
455
|
uses: actions/upload-artifact@v4
|
|
369
456
|
with:
|
|
370
457
|
name: test-results
|
|
458
|
+
# include-hidden-files: glubean.yaml CI profile writes outputs
|
|
459
|
+
# under \`.glubean/results/\`; upload-artifact@v4 skips hidden
|
|
460
|
+
# paths by default and would silently drop the junit + result.json.
|
|
461
|
+
include-hidden-files: true
|
|
371
462
|
path: |
|
|
463
|
+
.glubean/results/**
|
|
372
464
|
**/*.junit.xml
|
|
373
465
|
**/*.result.json
|
|
374
466
|
`;
|
|
@@ -398,6 +490,18 @@ async function installDependencies() {
|
|
|
398
490
|
const DEFAULT_BASE_URL = "https://dummyjson.com";
|
|
399
491
|
export async function initCommand(options = {}) {
|
|
400
492
|
console.log(`\n${colors.bold}${colors.cyan}🫘 Glubean Init${colors.reset}\n`);
|
|
493
|
+
// `--template demo` is a non-interactive named scaffold — short-circuit
|
|
494
|
+
// before the TTY check + workflow prompt. Validate the name so a typo
|
|
495
|
+
// (e.g. `--template demoo`) fails loudly instead of silently falling
|
|
496
|
+
// through to the default workflow.
|
|
497
|
+
if (options.template !== undefined) {
|
|
498
|
+
if (options.template !== "demo") {
|
|
499
|
+
console.error(`Unknown --template "${options.template}". Supported: demo.`);
|
|
500
|
+
process.exit(1);
|
|
501
|
+
}
|
|
502
|
+
await initDemo(options.overwrite ?? false);
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
401
505
|
const interactive = options.interactive ?? true;
|
|
402
506
|
const forceInteractive = process.env["GLUBEAN_FORCE_INTERACTIVE"] === "1";
|
|
403
507
|
if (interactive && !isInteractive() && !forceInteractive) {
|
|
@@ -480,34 +584,9 @@ export async function initCommand(options = {}) {
|
|
|
480
584
|
description: "Secret variables",
|
|
481
585
|
},
|
|
482
586
|
{
|
|
483
|
-
path: ".
|
|
484
|
-
content:
|
|
485
|
-
description: "
|
|
486
|
-
},
|
|
487
|
-
{
|
|
488
|
-
path: ".env.staging.secrets",
|
|
489
|
-
content: ENV_STAGING_SECRETS,
|
|
490
|
-
description: "Staging secret variables",
|
|
491
|
-
},
|
|
492
|
-
{
|
|
493
|
-
path: "ci-config/default.yaml",
|
|
494
|
-
content: () => readCliTemplate("ci-config/default.yaml"),
|
|
495
|
-
description: "Default run config",
|
|
496
|
-
},
|
|
497
|
-
{
|
|
498
|
-
path: "ci-config/ci.yaml",
|
|
499
|
-
content: () => readCliTemplate("ci-config/ci.yaml"),
|
|
500
|
-
description: "CI run config",
|
|
501
|
-
},
|
|
502
|
-
{
|
|
503
|
-
path: "ci-config/staging.yaml",
|
|
504
|
-
content: () => readCliTemplate("ci-config/staging.yaml"),
|
|
505
|
-
description: "Staging run config",
|
|
506
|
-
},
|
|
507
|
-
{
|
|
508
|
-
path: "ci-config/explore.yaml",
|
|
509
|
-
content: () => readCliTemplate("ci-config/explore.yaml"),
|
|
510
|
-
description: "Explore run config",
|
|
587
|
+
path: "glubean.yaml",
|
|
588
|
+
content: GLUBEAN_YAML_DEFAULT,
|
|
589
|
+
description: "Canonical Glubean project config (suites + profiles)",
|
|
511
590
|
},
|
|
512
591
|
{
|
|
513
592
|
path: ".gitignore",
|
|
@@ -811,6 +890,7 @@ export const healthCheck = publicApi("health-check", {
|
|
|
811
890
|
endpoint: "GET /health",
|
|
812
891
|
feature: "System",
|
|
813
892
|
description: "Service health check",
|
|
893
|
+
tags: ["smoke"],
|
|
814
894
|
cases: {
|
|
815
895
|
ok: {
|
|
816
896
|
description: "Service is running and healthy",
|
|
@@ -826,9 +906,9 @@ const CONTRACT_FIRST_PACKAGE_JSON = (sdkVersion) => JSON.stringify({
|
|
|
826
906
|
scripts: {
|
|
827
907
|
"contract:run": "glubean run contracts/",
|
|
828
908
|
"contract:verbose": "glubean run contracts/ --verbose",
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
909
|
+
"contract:smoke": "glubean run --profile contract-smoke",
|
|
910
|
+
test: "glubean run --profile local",
|
|
911
|
+
"test:ci": "glubean ci run",
|
|
832
912
|
scan: "glubean scan",
|
|
833
913
|
},
|
|
834
914
|
dependencies: {
|
|
@@ -836,6 +916,138 @@ const CONTRACT_FIRST_PACKAGE_JSON = (sdkVersion) => JSON.stringify({
|
|
|
836
916
|
zod: "^4.0.0",
|
|
837
917
|
},
|
|
838
918
|
}, null, 2) + "\n";
|
|
919
|
+
const DEMO_PACKAGE_JSON = (sdkVersion) => JSON.stringify({
|
|
920
|
+
name: "glubean-public-demo",
|
|
921
|
+
version: "0.1.0",
|
|
922
|
+
type: "module",
|
|
923
|
+
scripts: {
|
|
924
|
+
// `local` profile only — deterministic suites, always green.
|
|
925
|
+
test: "glubean run --profile local",
|
|
926
|
+
// Full narrative incl. flaky + canary. Runs fully local (no
|
|
927
|
+
// upload). Exit code is intermittently non-zero BY DESIGN.
|
|
928
|
+
"test:full": "glubean run --profile full",
|
|
929
|
+
scan: "glubean scan",
|
|
930
|
+
},
|
|
931
|
+
dependencies: {
|
|
932
|
+
"@glubean/sdk": sdkVersion,
|
|
933
|
+
},
|
|
934
|
+
}, null, 2) + "\n";
|
|
935
|
+
/**
|
|
936
|
+
* `glubean init --template demo` — scaffolds the public demo project
|
|
937
|
+
* (Phase 6). Pairs with the standalone `glubean-demo-backend` service
|
|
938
|
+
* (see glubean/docs/05-demo-project-design.zh.md). Static template
|
|
939
|
+
* files live in packages/cli/templates/demo/**; only package.json
|
|
940
|
+
* needs SDK-version injection.
|
|
941
|
+
*/
|
|
942
|
+
async function initDemo(overwrite) {
|
|
943
|
+
console.log(`${colors.dim} Demo — runnable public demo project (pairs with glubean-demo-backend)${colors.reset}\n`);
|
|
944
|
+
const files = [
|
|
945
|
+
{
|
|
946
|
+
path: "package.json",
|
|
947
|
+
content: DEMO_PACKAGE_JSON(SDK_VERSION),
|
|
948
|
+
description: "Package config with local + full scripts",
|
|
949
|
+
},
|
|
950
|
+
{
|
|
951
|
+
path: "README.md",
|
|
952
|
+
content: () => readCliTemplate("demo/README.md"),
|
|
953
|
+
description: "Demo narrative explainer",
|
|
954
|
+
},
|
|
955
|
+
{
|
|
956
|
+
path: "glubean.yaml",
|
|
957
|
+
content: () => readCliTemplate("demo/glubean.yaml"),
|
|
958
|
+
description: "Demo config — stable / flaky / contract / canary suites",
|
|
959
|
+
},
|
|
960
|
+
{
|
|
961
|
+
// Enables allowImportingTsExtensions so the `.ts` relative imports
|
|
962
|
+
// (skill convention + required for contract discovery) typecheck
|
|
963
|
+
// cleanly in editors / tsc. The project runs via tsx (`glubean
|
|
964
|
+
// run`), so noEmit is fine.
|
|
965
|
+
path: "tsconfig.json",
|
|
966
|
+
content: () => readCliTemplate("demo/tsconfig.json"),
|
|
967
|
+
description: "TS config (allowImportingTsExtensions for .ts imports)",
|
|
968
|
+
},
|
|
969
|
+
{
|
|
970
|
+
path: ".env.example",
|
|
971
|
+
content: () => readCliTemplate("demo/.env.example"),
|
|
972
|
+
description: "Env vars template (MOCK_BACKEND_URL)",
|
|
973
|
+
},
|
|
974
|
+
{
|
|
975
|
+
path: ".env.secrets.example",
|
|
976
|
+
content: () => readCliTemplate("demo/.env.secrets.example"),
|
|
977
|
+
description: "Secrets template (upload token — opt-in only)",
|
|
978
|
+
},
|
|
979
|
+
{
|
|
980
|
+
// Sourced from gitignore.tpl, not .gitignore — npm pack omits
|
|
981
|
+
// files literally named `.gitignore` from the published package,
|
|
982
|
+
// so the template must use a non-ignored name. Written out to
|
|
983
|
+
// the real `.gitignore` in the scaffolded project.
|
|
984
|
+
path: ".gitignore",
|
|
985
|
+
content: () => readCliTemplate("demo/gitignore.tpl"),
|
|
986
|
+
description: "Git ignore rules",
|
|
987
|
+
},
|
|
988
|
+
{
|
|
989
|
+
path: "glubean.setup.ts",
|
|
990
|
+
content: GLUBEAN_SETUP_TEMPLATE,
|
|
991
|
+
description: "Plugin bootstrap entry",
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
path: "config/api.ts",
|
|
995
|
+
content: () => readCliTemplate("demo/config/api.ts"),
|
|
996
|
+
description: "Shared HTTP client (configure() once, imported everywhere)",
|
|
997
|
+
},
|
|
998
|
+
{
|
|
999
|
+
path: "tests/api-stable/get-users.test.ts",
|
|
1000
|
+
content: () => readCliTemplate("demo/tests/api-stable/get-users.test.ts"),
|
|
1001
|
+
description: "Stable suite — deterministic 200 tests",
|
|
1002
|
+
},
|
|
1003
|
+
{
|
|
1004
|
+
path: "tests/api-flaky/search-flaky.test.ts",
|
|
1005
|
+
content: () => readCliTemplate("demo/tests/api-flaky/search-flaky.test.ts"),
|
|
1006
|
+
description: "Flaky suite — ~30% 503 (full profile only)",
|
|
1007
|
+
},
|
|
1008
|
+
{
|
|
1009
|
+
path: "tests/canary/synthetic-50pct-flaky.test.ts",
|
|
1010
|
+
content: () => readCliTemplate("demo/tests/canary/synthetic-50pct-flaky.test.ts"),
|
|
1011
|
+
description: "In-process synthetic canary (full profile only)",
|
|
1012
|
+
},
|
|
1013
|
+
{
|
|
1014
|
+
path: "tests/contracts/stable/users-contract.contract.ts",
|
|
1015
|
+
content: () => readCliTemplate("demo/tests/contracts/stable/users-contract.contract.ts"),
|
|
1016
|
+
description: "Stable contract guarding the API shape",
|
|
1017
|
+
},
|
|
1018
|
+
];
|
|
1019
|
+
let created = 0;
|
|
1020
|
+
let skipped = 0;
|
|
1021
|
+
let overwritten = 0;
|
|
1022
|
+
for (const file of files) {
|
|
1023
|
+
const existedBefore = await fileExists(file.path);
|
|
1024
|
+
if (existedBefore && !overwrite) {
|
|
1025
|
+
console.log(` ${colors.dim}skip${colors.reset} ${file.path} (already exists)`);
|
|
1026
|
+
skipped++;
|
|
1027
|
+
continue;
|
|
1028
|
+
}
|
|
1029
|
+
const parentDir = file.path.substring(0, file.path.lastIndexOf("/"));
|
|
1030
|
+
if (parentDir)
|
|
1031
|
+
await mkdir(parentDir, { recursive: true });
|
|
1032
|
+
const content = await resolveContent(file.content);
|
|
1033
|
+
await writeFile(file.path, content, "utf-8");
|
|
1034
|
+
if (existedBefore) {
|
|
1035
|
+
console.log(` ${colors.yellow}overwrite${colors.reset} ${file.path} - ${file.description}`);
|
|
1036
|
+
overwritten++;
|
|
1037
|
+
}
|
|
1038
|
+
else {
|
|
1039
|
+
console.log(` ${colors.green}create${colors.reset} ${file.path} - ${file.description}`);
|
|
1040
|
+
created++;
|
|
1041
|
+
}
|
|
1042
|
+
}
|
|
1043
|
+
console.log(`\n${colors.green}✓${colors.reset} Demo project scaffolded ` +
|
|
1044
|
+
`(${created} created${overwritten ? `, ${overwritten} overwritten` : ""}${skipped ? `, ${skipped} skipped` : ""}).\n`);
|
|
1045
|
+
console.log(`${colors.dim}Next steps:${colors.reset}`);
|
|
1046
|
+
console.log(` 1. cp .env.example .env`);
|
|
1047
|
+
console.log(` 2. Set MOCK_BACKEND_URL (.env) to your deployed glubean-demo-backend`);
|
|
1048
|
+
console.log(` 3. npm install && npm test ${colors.dim}# local profile — green${colors.reset}`);
|
|
1049
|
+
console.log(` 4. npm run test:full ${colors.dim}# full narrative (flaky + canary), runs local${colors.reset}\n`);
|
|
1050
|
+
}
|
|
839
1051
|
async function initContractFirst(overwrite) {
|
|
840
1052
|
console.log(`${colors.dim} Contract-first — define API behavior before implementing${colors.reset}\n`);
|
|
841
1053
|
const files = [
|
|
@@ -885,19 +1097,14 @@ async function initContractFirst(overwrite) {
|
|
|
885
1097
|
description: "Shared Zod schemas directory",
|
|
886
1098
|
},
|
|
887
1099
|
{
|
|
888
|
-
path: "
|
|
889
|
-
content:
|
|
890
|
-
description: "
|
|
891
|
-
},
|
|
892
|
-
{
|
|
893
|
-
path: "ci-config/ci.yaml",
|
|
894
|
-
content: () => readCliTemplate("ci-config/ci.yaml"),
|
|
895
|
-
description: "CI run config",
|
|
1100
|
+
path: "glubean.yaml",
|
|
1101
|
+
content: GLUBEAN_YAML_CONTRACT_FIRST,
|
|
1102
|
+
description: "Canonical Glubean project config (contracts + tests)",
|
|
896
1103
|
},
|
|
897
1104
|
{
|
|
898
|
-
path: "
|
|
899
|
-
content:
|
|
900
|
-
description: "
|
|
1105
|
+
path: "tests/sample.test.ts",
|
|
1106
|
+
content: CONTRACT_FIRST_SAMPLE_TEST,
|
|
1107
|
+
description: "Starter test (so multi-suite CI has a file to run)",
|
|
901
1108
|
},
|
|
902
1109
|
{
|
|
903
1110
|
path: "GLUBEAN.md",
|