@qa-ai-stlc/cli 0.3.0 → 0.4.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 CHANGED
@@ -1,9 +1,16 @@
1
1
  # @qa-ai-stlc/cli
2
2
 
3
- The `qa` command: a thin client over `@qa-ai-stlc/core` for CI and humans. `qa init` creates the
4
- `.qa/` store and a starting `config.yaml`; `qa doctor` checks Node, browsers, identities and
5
- environment reachability before a run. Every command supports `--json` for machine-readable
6
- output and exits non-zero on failure.
3
+ The `qa` command: a thin client over `@qa-ai-stlc/core` and `@qa-ai-stlc/explorer` for CI and
4
+ humans. `qa init` creates the `.qa/` store and runs the testing scope survey; `qa doctor` checks
5
+ Node, browsers, identities and environment reachability before a run; `qa explore` crawls the
6
+ configured environment, optionally merges static source analysis (`--static`) and pick-mode
7
+ entries (`--pick <url>`), and writes the selector registry and a generated locator module;
8
+ `qa explore --verify` re-checks stored selectors against the live page without re-crawling.
9
+ `qa config set testing.<type> <value>` changes a scope decision after `init`; `qa config add
10
+ environment <name> --base-url <url> --allowlist <a,b,c>` and `qa config add identity <name> --auth
11
+ <cdp-attach|storage-state> --secret <QA_...> [--login-url <url>] [--username <user>]` add a
12
+ schema-validated entry instead of hand-editing `config.yaml`. Every command supports `--json` for
13
+ machine-readable output and exits non-zero on failure.
7
14
 
8
15
  Part of [QA-AI-STLC](https://github.com/Klim-101/QA-AI-STLC). See the repository root for
9
16
  license, contributing and security information.
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAwB,KAAK,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAQ9F,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,2BAA2B,EAAE,aAAa,GAAG,MAAM,CAAC,GAAG;IAC3F,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAeF;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BvG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAwB,KAAK,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAc9F,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,2BAA2B,EAAE,aAAa,GAAG,MAAM,CAAC,GAAG;IAC3F,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAgBF;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,YAAY,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BvG"}
package/dist/cli.js CHANGED
@@ -3,6 +3,7 @@
3
3
  import { parseArgs } from 'node:util';
4
4
  import { QaError } from '@qa-ai-stlc/core';
5
5
  import { createCommandContext } from './command-context.js';
6
+ import { runConfigAddEnvironment, runConfigAddIdentity, } from './commands/config-add.js';
6
7
  import { runConfigSet } from './commands/config-set.js';
7
8
  import { runDoctor } from './commands/doctor.js';
8
9
  import { runExplore } from './commands/explore.js';
@@ -16,6 +17,7 @@ Commands:
16
17
  doctor Check Node, browsers, identities and environment reachability
17
18
  explore Build the selector registry: crawl, static source analysis, pick mode, --verify
18
19
  config set Change one testing.<type> scope decision after init
20
+ config add Add an environment or identity: "config add environment <name> ..." or "config add identity <name> ..."
19
21
 
20
22
  Global options:
21
23
  --json Print machine-readable JSON instead of human text
@@ -132,12 +134,18 @@ async function dispatchInit(rest, dependencies) {
132
134
  }
133
135
  async function dispatchConfig(rest, dependencies) {
134
136
  const [subcommand, ...subRest] = rest;
135
- if (subcommand !== 'set') {
136
- dependencies.io.stderr(`Unknown "qa config" subcommand "${subcommand ?? ''}".\n\n${USAGE}`);
137
- return EXIT_USAGE;
137
+ if (subcommand === 'set') {
138
+ return await dispatchConfigSet(subRest, dependencies);
139
+ }
140
+ if (subcommand === 'add') {
141
+ return await dispatchConfigAdd(subRest, dependencies);
138
142
  }
143
+ dependencies.io.stderr(`Unknown "qa config" subcommand "${subcommand ?? ''}".\n\n${USAGE}`);
144
+ return EXIT_USAGE;
145
+ }
146
+ async function dispatchConfigSet(rest, dependencies) {
139
147
  const { values, positionals } = parseArgs({
140
- args: subRest,
148
+ args: rest,
141
149
  options: { json: { type: 'boolean', default: false } },
142
150
  allowPositionals: true,
143
151
  strict: true,
@@ -158,6 +166,91 @@ async function dispatchConfig(rest, dependencies) {
158
166
  printResult(context.io, json, 'config-set', result, formatConfigSetResult(result));
159
167
  return EXIT_SUCCESS;
160
168
  }
169
+ async function dispatchConfigAdd(rest, dependencies) {
170
+ const [target, ...targetRest] = rest;
171
+ if (target === 'environment') {
172
+ return await dispatchConfigAddEnvironment(targetRest, dependencies);
173
+ }
174
+ if (target === 'identity') {
175
+ return await dispatchConfigAddIdentity(targetRest, dependencies);
176
+ }
177
+ dependencies.io.stderr(`Unknown "qa config add" target "${target ?? ''}".\n\n${USAGE}`);
178
+ return EXIT_USAGE;
179
+ }
180
+ async function dispatchConfigAddEnvironment(rest, dependencies) {
181
+ const { values, positionals } = parseArgs({
182
+ args: rest,
183
+ options: {
184
+ json: { type: 'boolean', default: false },
185
+ 'base-url': { type: 'string' },
186
+ allowlist: { type: 'string' },
187
+ force: { type: 'boolean', default: false },
188
+ },
189
+ allowPositionals: true,
190
+ strict: true,
191
+ });
192
+ const [name] = positionals;
193
+ if (name === undefined || typeof values['base-url'] !== 'string' || typeof values.allowlist !== 'string') {
194
+ throw new QaError('CONFIG_ADD_USAGE', 'Usage: qa config add environment <name> --base-url <url> --allowlist <a,b,c>', {
195
+ remediation: 'Example: qa config add environment staging --base-url https://staging.example.com --allowlist staging.example.com',
196
+ });
197
+ }
198
+ const json = values.json;
199
+ const context = createCommandContext({
200
+ ...dependencies,
201
+ projectRoot: dependencies.projectRoot ?? process.cwd(),
202
+ json,
203
+ });
204
+ const allowlist = values.allowlist
205
+ .split(',')
206
+ .map((entry) => entry.trim())
207
+ .filter((entry) => entry.length > 0);
208
+ const result = await runConfigAddEnvironment(context, {
209
+ name,
210
+ baseUrl: values['base-url'],
211
+ allowlist,
212
+ force: values.force,
213
+ });
214
+ printResult(context.io, json, 'config-add-environment', result, formatConfigAddEnvironmentResult(result));
215
+ return EXIT_SUCCESS;
216
+ }
217
+ async function dispatchConfigAddIdentity(rest, dependencies) {
218
+ const { values, positionals } = parseArgs({
219
+ args: rest,
220
+ options: {
221
+ json: { type: 'boolean', default: false },
222
+ auth: { type: 'string' },
223
+ secret: { type: 'string' },
224
+ 'login-url': { type: 'string' },
225
+ username: { type: 'string' },
226
+ force: { type: 'boolean', default: false },
227
+ },
228
+ allowPositionals: true,
229
+ strict: true,
230
+ });
231
+ const [name] = positionals;
232
+ if (name === undefined || typeof values.auth !== 'string' || typeof values.secret !== 'string') {
233
+ throw new QaError('CONFIG_ADD_USAGE', 'Usage: qa config add identity <name> --auth <cdp-attach|storage-state> --secret <QA_...>', {
234
+ remediation: 'Example: qa config add identity admin --auth storage-state --secret QA_ADMIN_PASSWORD --login-url https://staging.example.com/login --username admin@example.com',
235
+ });
236
+ }
237
+ const json = values.json;
238
+ const context = createCommandContext({
239
+ ...dependencies,
240
+ projectRoot: dependencies.projectRoot ?? process.cwd(),
241
+ json,
242
+ });
243
+ const result = await runConfigAddIdentity(context, {
244
+ name,
245
+ auth: values.auth,
246
+ secret: values.secret,
247
+ ...(typeof values['login-url'] === 'string' ? { loginUrl: values['login-url'] } : {}),
248
+ ...(typeof values.username === 'string' ? { username: values.username } : {}),
249
+ force: values.force,
250
+ });
251
+ printResult(context.io, json, 'config-add-identity', result, formatConfigAddIdentityResult(result));
252
+ return EXIT_SUCCESS;
253
+ }
161
254
  async function dispatchDoctor(rest, dependencies) {
162
255
  const values = parseCommandArgs(rest, {
163
256
  json: { type: 'boolean', default: false },
@@ -231,6 +324,14 @@ function formatInitResult(result) {
231
324
  function formatConfigSetResult(result) {
232
325
  return [`Set ${result.key} = ${result.value}`];
233
326
  }
327
+ function formatConfigAddEnvironmentResult(result) {
328
+ return [
329
+ `Added environment "${result.name}": ${result.environment.baseUrl} (allowlist: ${result.environment.allowlist.join(', ')})`,
330
+ ];
331
+ }
332
+ function formatConfigAddIdentityResult(result) {
333
+ return [`Added identity "${result.name}": auth=${result.identity.auth}, secret=${result.identity.secret}`];
334
+ }
234
335
  function formatDoctorReport(report) {
235
336
  return report.checks.map((check) => {
236
337
  const marker = check.status === 'pass' ? 'PASS' : 'FAIL';
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { type EnvironmentConfig, type IdentityConfig } from '@qa-ai-stlc/schemas';
2
+ import type { CommandContext } from '../command-context.js';
3
+ export interface ConfigAddEnvironmentOptions {
4
+ readonly name: string;
5
+ readonly baseUrl: string;
6
+ readonly allowlist: readonly string[];
7
+ readonly force?: boolean;
8
+ }
9
+ export interface ConfigAddEnvironmentResult {
10
+ readonly name: string;
11
+ readonly environment: EnvironmentConfig;
12
+ }
13
+ export interface ConfigAddIdentityOptions {
14
+ readonly name: string;
15
+ readonly auth: string;
16
+ readonly secret: string;
17
+ readonly loginUrl?: string;
18
+ readonly username?: string;
19
+ readonly force?: boolean;
20
+ }
21
+ export interface ConfigAddIdentityResult {
22
+ readonly name: string;
23
+ readonly identity: IdentityConfig;
24
+ }
25
+ /**
26
+ * `qa config add environment <name> --base-url <url> --allowlist <a,b,c>` (P1-20): adds one
27
+ * environment to `config.yaml` without hand-editing YAML. Validates against
28
+ * `EnvironmentConfigSchema` before writing anything, and edits the parsed document in place
29
+ * (same technique as `qa config set`) so existing comments and formatting survive.
30
+ */
31
+ export declare function runConfigAddEnvironment(context: CommandContext, options: ConfigAddEnvironmentOptions): Promise<ConfigAddEnvironmentResult>;
32
+ /**
33
+ * `qa config add identity <name> --auth <cdp-attach|storage-state> --secret <QA_...> [--login-url
34
+ * <url>] [--username <user>]` (P1-20): same technique as `runConfigAddEnvironment`, validated
35
+ * against `IdentityConfigSchema` — which itself requires `loginUrl`/`username` when
36
+ * `auth: storage-state` — before writing.
37
+ */
38
+ export declare function runConfigAddIdentity(context: CommandContext, options: ConfigAddIdentityOptions): Promise<ConfigAddIdentityResult>;
39
+ //# sourceMappingURL=config-add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-add.d.ts","sourceRoot":"","sources":["../../src/commands/config-add.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;CACzC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;CACnC;AAWD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC,CAqCrC;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAmClC"}
@@ -0,0 +1,88 @@
1
+ // Copyright The QA-AI-STLC Authors
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { QaError, QaStore, loadConfig } from '@qa-ai-stlc/core';
4
+ import { EnvironmentConfigSchema, IdentityConfigSchema, } from '@qa-ai-stlc/schemas';
5
+ import { parseDocument } from 'yaml';
6
+ import { z } from 'zod';
7
+ function requireName(name) {
8
+ if (name.trim().length === 0) {
9
+ throw new QaError('CONFIG_ADD_NAME_INVALID', 'A name is required', {
10
+ remediation: 'Pass a non-empty name, for example "staging" or "admin".',
11
+ });
12
+ }
13
+ return name;
14
+ }
15
+ /**
16
+ * `qa config add environment <name> --base-url <url> --allowlist <a,b,c>` (P1-20): adds one
17
+ * environment to `config.yaml` without hand-editing YAML. Validates against
18
+ * `EnvironmentConfigSchema` before writing anything, and edits the parsed document in place
19
+ * (same technique as `qa config set`) so existing comments and formatting survive.
20
+ */
21
+ export async function runConfigAddEnvironment(context, options) {
22
+ const name = requireName(options.name);
23
+ const parsed = EnvironmentConfigSchema.safeParse({
24
+ baseUrl: options.baseUrl,
25
+ allowlist: options.allowlist,
26
+ });
27
+ if (!parsed.success) {
28
+ throw new QaError('CONFIG_ADD_VALUE_INVALID', `The environment is not valid:\n${z.prettifyError(parsed.error)}`, {
29
+ remediation: 'Provide a non-empty --base-url and at least one --allowlist entry.',
30
+ cause: parsed.error,
31
+ });
32
+ }
33
+ const store = new QaStore({ projectRoot: context.projectRoot, fs: context.fs });
34
+ // Throws a coded QaError (CONFIG_MISSING/CONFIG_MALFORMED/CONFIG_INVALID) if there is nothing
35
+ // valid to edit yet, rather than this command producing its own, differently-worded one.
36
+ const config = await loadConfig(store);
37
+ if (options.force !== true && name in config.environments) {
38
+ throw new QaError('CONFIG_ADD_NAME_EXISTS', `Environment "${name}" already exists`, {
39
+ remediation: 'Choose a different name, or pass --force to overwrite it.',
40
+ });
41
+ }
42
+ // `parsed.data` already satisfies EnvironmentConfigSchema, the same schema ConfigSchema embeds
43
+ // for every `environments` entry, and every other field in the loaded document already passed
44
+ // ConfigSchema in `loadConfig` above — so, unlike `qa config set` (whose testing/api fields
45
+ // interact through a cross-field refine), adding this entry cannot leave the document invalid;
46
+ // there is no further validation step here.
47
+ const raw = await store.readText('config.yaml');
48
+ const document = parseDocument(raw);
49
+ document.setIn(['environments', name], parsed.data);
50
+ await store.writeText('config.yaml', document.toString());
51
+ return { name, environment: parsed.data };
52
+ }
53
+ /**
54
+ * `qa config add identity <name> --auth <cdp-attach|storage-state> --secret <QA_...> [--login-url
55
+ * <url>] [--username <user>]` (P1-20): same technique as `runConfigAddEnvironment`, validated
56
+ * against `IdentityConfigSchema` — which itself requires `loginUrl`/`username` when
57
+ * `auth: storage-state` — before writing.
58
+ */
59
+ export async function runConfigAddIdentity(context, options) {
60
+ const name = requireName(options.name);
61
+ const parsed = IdentityConfigSchema.safeParse({
62
+ auth: options.auth,
63
+ secret: options.secret,
64
+ ...(options.loginUrl !== undefined ? { loginUrl: options.loginUrl } : {}),
65
+ ...(options.username !== undefined ? { username: options.username } : {}),
66
+ });
67
+ if (!parsed.success) {
68
+ throw new QaError('CONFIG_ADD_VALUE_INVALID', `The identity is not valid:\n${z.prettifyError(parsed.error)}`, {
69
+ remediation: 'Provide --auth (cdp-attach or storage-state), --secret (a QA_-prefixed environment variable name), and, for storage-state, --login-url and --username.',
70
+ cause: parsed.error,
71
+ });
72
+ }
73
+ const store = new QaStore({ projectRoot: context.projectRoot, fs: context.fs });
74
+ const config = await loadConfig(store);
75
+ if (options.force !== true && name in config.identities) {
76
+ throw new QaError('CONFIG_ADD_NAME_EXISTS', `Identity "${name}" already exists`, {
77
+ remediation: 'Choose a different name, or pass --force to overwrite it.',
78
+ });
79
+ }
80
+ // Same reasoning as runConfigAddEnvironment above: parsed.data already satisfies
81
+ // IdentityConfigSchema, so re-validating the whole document cannot fail.
82
+ const raw = await store.readText('config.yaml');
83
+ const document = parseDocument(raw);
84
+ document.setIn(['identities', name], parsed.data);
85
+ await store.writeText('config.yaml', document.toString());
86
+ return { name, identity: parsed.data };
87
+ }
88
+ //# sourceMappingURL=config-add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-add.js","sourceRoot":"","sources":["../../src/commands/config-add.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qa-ai-stlc/cli",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "The qa command: init, doctor and every deterministic engine operation exposed for CI and humans.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",