@qa-gentic/stlc-agents 1.0.8 → 1.0.10

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
@@ -4,8 +4,8 @@
4
4
 
5
5
  Works with **GitHub Copilot** (VS Code Agent mode), **Claude Code**, **Cursor**, and **Windsurf**.
6
6
 
7
- [![npm version](https://img.shields.io/npm/v/@qa-gentic/stlc-agents)](https://www.npmjs.com/package/@qa-gentic/stlc-agents)
8
- [![PyPI version](https://img.shields.io/pypi/v/qa-gentic-stlc-agents)](https://pypi.org/project/qa-gentic-stlc-agents/)
7
+ ![npm version](https://img.shields.io/badge/npm-v1.0.10-blue)
8
+ ![PyPI version](https://img.shields.io/badge/pypi-v1.0.10-blue)
9
9
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
10
10
  [![Node.js >=18](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org)
11
11
  [![Python >=3.10](https://img.shields.io/badge/python-%3E%3D3.10-blue)](https://python.org)
@@ -35,10 +35,19 @@ A sixth server — **Playwright MCP** (`http://localhost:8931/mcp`) — drives a
35
35
 
36
36
  ```bash
37
37
  # 1. Install the CLI + npm package globally
38
+ # You will be prompted to choose your integration: ado / jira / both
39
+ # The choice is saved to ~/.qa-stlc/integration and reused by all subsequent commands.
38
40
  npm install -g @qa-gentic/stlc-agents
39
41
  ```
40
42
 
41
- The postinstall script automatically runs `pip install qa-gentic-stlc-agents` and prints next-step instructions. It does **not** prompt for input all interactive setup is done in the next step.
43
+ > **Note:** On most systems, the installer will prompt you to select your integration (ADO, Jira, or both) and then automatically run `qa-stlc init` and offer to scaffold a new project. If you do **not** see the prompt (for example, if npm skips postinstall for an already-installed package, or in some non-interactive environments), simply run:
44
+ >
45
+ > ```bash
46
+ > qa-stlc init
47
+ > qa-stlc scaffold
48
+ > ```
49
+ >
50
+ > This will perform the same setup steps as the postinstall script.
42
51
 
43
52
  ```bash
44
53
  # 2. Bootstrap your project (installs Python agents, copies skills, writes MCP config)
@@ -2,26 +2,41 @@
2
2
  /**
3
3
  * postinstall.js — Auto-install Python MCP servers after npm install -g
4
4
  *
5
- * npm 7+ runs lifecycle scripts with stdout suppressed by default (background
6
- * mode). To guarantee output is always visible we write exclusively to
7
- * stderr, which npm forwards to the terminal even in background mode.
5
+ * npm 7+ captures all stdout/stderr from lifecycle scripts for global installs,
6
+ * so normal process.stdout / process.stderr writes are swallowed.
7
+ *
8
+ * Fix: write directly to /dev/tty (Unix) which bypasses npm's pipe entirely.
9
+ * Falls back to process.stderr (visible for local installs / Windows CI).
8
10
  *
9
11
  * Interactive prompts (readline / TTY) require --foreground-scripts and are
10
- * therefore NOT used here. The user is instructed to run `qa-stlc init`
11
- * in their project after install — that command IS interactive.
12
+ * therefore NOT used here. The user is instructed to run `qa-stlc` in their
13
+ * project after install — that command IS interactive.
12
14
  */
13
15
  "use strict";
14
16
 
15
- // ── Route ALL output to stderr so it shows without --foreground-scripts ──────
16
- const _write = (msg) => process.stderr.write(msg + "\n");
17
+ // ── Open /dev/tty so writes go straight to the user's terminal ───────────────
18
+ // npm 7+ suppresses all stdout/stderr for global lifecycle scripts; /dev/tty
19
+ // bypasses that pipe entirely. Fall back to stderr on Windows / non-TTY CI.
20
+ const fs = require("fs");
21
+ let _tty = null;
22
+ try {
23
+ _tty = fs.openSync("/dev/tty", "w");
24
+ } catch (_) { /* Windows or no TTY — use stderr fallback */ }
25
+
26
+ const _write = (msg) => {
27
+ const line = msg + "\n";
28
+ if (_tty !== null) {
29
+ try { fs.writeSync(_tty, line); return; } catch (_) {}
30
+ }
31
+ process.stderr.write(line);
32
+ };
17
33
  console.log = _write;
18
34
  console.info = _write;
19
35
  console.warn = _write;
20
36
  console.error = _write;
21
37
 
22
38
  const { spawnSync } = require("child_process");
23
- const os = require("os");
24
- const fs = require("fs");
39
+ const os = require("os");
25
40
  const path = require("path");
26
41
  const pkg = require("../package.json");
27
42
 
@@ -92,4 +107,8 @@ ${b("Next steps")} — run these inside your project root:
92
107
  ${C.cyan}npx @playwright/mcp@latest --port 8931${C.reset}
93
108
 
94
109
  ${d("Docs: https://github.com/qa-gentic/stlc-agents")}
110
+
111
+ ${d(" Tip: npm sometimes suppresses postinstall output for global packages.")}
112
+ ${d(" If you missed these instructions, run qa-stlc in your project.")}
113
+ ${d(" Or reinstall with: npm install -g --foreground-scripts @qa-gentic/stlc-agents")}
95
114
  `);
package/bin/qa-stlc.js CHANGED
@@ -101,9 +101,43 @@ Quick Start (run once in your project root):
101
101
  $ npx @playwright/mcp@latest --port 8931
102
102
  `);
103
103
 
104
- program.parse(process.argv);
105
-
106
- // Show help if no command given
104
+ // Show next-step instructions if invoked with no command.
105
+ // This is the reliable fallback when npm suppresses postinstall output.
107
106
  if (!process.argv.slice(2).length) {
108
- program.outputHelp();
109
- }
107
+ const C = {
108
+ reset: "\x1b[0m", bold: "\x1b[1m",
109
+ green: "\x1b[32m", cyan: "\x1b[36m", dim: "\x1b[2m",
110
+ };
111
+ const b = (s) => `${C.bold}${s}${C.reset}`;
112
+ const d = (s) => `${C.dim}${s}${C.reset}`;
113
+ console.log(`
114
+ ${b("QA STLC Agents")} v${pkg.version}
115
+
116
+ ${b("Next steps")} — run these inside your project root:
117
+
118
+ ${b("1.")} Choose your integration and bootstrap:
119
+
120
+ ${C.cyan}qa-stlc init --vscode --integration ado${C.reset} ${d("# VS Code / GitHub Copilot — Azure DevOps")}
121
+ ${C.cyan}qa-stlc init --vscode --integration jira${C.reset} ${d("# VS Code / GitHub Copilot — Jira Cloud")}
122
+ ${C.cyan}qa-stlc init --vscode --integration both${C.reset} ${d("# VS Code / GitHub Copilot — ADO + Jira")}
123
+ ${C.cyan}qa-stlc init --integration ado${C.reset} ${d("# Claude Code — Azure DevOps")}
124
+
125
+ ${d("Installs skills, writes MCP config, sets your integration.")}
126
+ ${d("Run once; re-run any time to change integration.")}
127
+
128
+ ${b("2.")} Scaffold a new Playwright + Cucumber + TypeScript QA project:
129
+
130
+ ${C.cyan}qa-stlc scaffold --name my-qa-project${C.reset}
131
+
132
+ ${b("3.")} Start the Playwright browser server (keep running in a separate terminal):
133
+
134
+ ${C.cyan}npx @playwright/mcp@latest --port 8931${C.reset}
135
+
136
+ Run ${b("qa-stlc --help")} for the full command reference.
137
+
138
+ ${d("Docs: https://github.com/qa-gentic/stlc-agents")}
139
+ `);
140
+ process.exit(0);
141
+ }
142
+
143
+ program.parse(process.argv);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qa-gentic/stlc-agents",
3
- "version": "1.0.8",
3
+ "version": "1.0.10",
4
4
  "description": "QA STLC Agents — five MCP servers + skills for AI-powered test case, Gherkin, Playwright generation, and Helix-QA file writing against Azure DevOps and Jira Cloud. Full pipeline for both: fetch → test cases → Gherkin → Playwright → Helix-QA. Works with Claude Code, GitHub Copilot, Cursor, Windsurf.",
5
5
  "keywords": [
6
6
  "playwright",