@zosmaai/zosma-qa-cli 0.0.5 → 0.0.7
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/bin/zosma-qa.js +0 -1
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +5 -6
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +324 -59
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/report.js +2 -2
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/run.d.ts +4 -2
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +62 -13
- package/dist/commands/run.js.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/bin/zosma-qa.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGxD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA0ExE"}
|
package/dist/commands/agents.js
CHANGED
|
@@ -4,9 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.initAgents = initAgents;
|
|
7
|
-
const
|
|
8
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
7
|
+
const node_child_process_1 = require("node:child_process");
|
|
9
8
|
const prompts_1 = require("@inquirer/prompts");
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
10
|
/**
|
|
11
11
|
* `zosma-qa agents init` — prompts the user to choose their AI coding tool
|
|
12
12
|
* and runs `npx playwright init-agents --loop=<choice>`.
|
|
@@ -35,7 +35,7 @@ async function initAgents(loopOverride) {
|
|
|
35
35
|
{
|
|
36
36
|
name: 'Claude Code',
|
|
37
37
|
value: 'claude',
|
|
38
|
-
description:
|
|
38
|
+
description: "Anthropic's Claude Code CLI (claude.ai/code)",
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
name: 'VS Code (Copilot)',
|
|
@@ -65,14 +65,13 @@ async function initAgents(loopOverride) {
|
|
|
65
65
|
else {
|
|
66
66
|
console.log('');
|
|
67
67
|
console.log(chalk_1.default.yellow(' Could not run playwright init-agents.'));
|
|
68
|
-
console.log(chalk_1.default.dim(' Make sure Playwright is installed:\n' +
|
|
69
|
-
' pnpm install && npx playwright install\n'));
|
|
68
|
+
console.log(chalk_1.default.dim(' Make sure Playwright is installed:\n' + ' pnpm install && npx playwright install\n'));
|
|
70
69
|
process.exit(exitCode);
|
|
71
70
|
}
|
|
72
71
|
}
|
|
73
72
|
function spawnAsync(cmd, args) {
|
|
74
73
|
return new Promise((resolve, reject) => {
|
|
75
|
-
const child = (0,
|
|
74
|
+
const child = (0, node_child_process_1.spawn)(cmd, args, {
|
|
76
75
|
stdio: 'inherit',
|
|
77
76
|
cwd: process.cwd(),
|
|
78
77
|
env: { ...process.env },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":";;;;;AAWA,
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA0HA,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CA6G7C"}
|
package/dist/commands/init.js
CHANGED
|
@@ -4,13 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.runInit = runInit;
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
7
|
+
const node_child_process_1 = require("node:child_process");
|
|
8
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const prompts_1 = require("@inquirer/prompts");
|
|
10
11
|
const chalk_1 = __importDefault(require("chalk"));
|
|
11
12
|
const ora_1 = __importDefault(require("ora"));
|
|
12
|
-
|
|
13
|
-
// ─── Template content ─────────────────────────────────────────────────────────
|
|
13
|
+
// ─── TypeScript templates ──────────────────────────────────────────────────────
|
|
14
14
|
function seedSpecTemplate(baseURL) {
|
|
15
15
|
return `import { test, expect } from '@playwright/test';
|
|
16
16
|
|
|
@@ -43,7 +43,7 @@ export default defineConfig({
|
|
|
43
43
|
});
|
|
44
44
|
`;
|
|
45
45
|
}
|
|
46
|
-
function
|
|
46
|
+
function zosmaConfigTsTemplate(baseURL, browsers) {
|
|
47
47
|
const browsersJson = JSON.stringify(browsers);
|
|
48
48
|
return `import { defineConfig } from '@zosmaai/zosma-qa-core';
|
|
49
49
|
|
|
@@ -54,6 +54,63 @@ export default defineConfig({
|
|
|
54
54
|
});
|
|
55
55
|
`;
|
|
56
56
|
}
|
|
57
|
+
// ─── Python templates ──────────────────────────────────────────────────────────
|
|
58
|
+
function pyprojectTomlTemplate(projectName, baseURL, browsers) {
|
|
59
|
+
const safeName = projectName.trim() || 'my-qa-project';
|
|
60
|
+
const browserOpts = browsers.map((b) => `--browser ${b}`).join(' ');
|
|
61
|
+
return `[project]
|
|
62
|
+
name = "${safeName}"
|
|
63
|
+
version = "0.1.0"
|
|
64
|
+
requires-python = ">=3.9"
|
|
65
|
+
dependencies = [
|
|
66
|
+
"pytest-playwright>=0.5.0",
|
|
67
|
+
]
|
|
68
|
+
|
|
69
|
+
[tool.pytest.ini_options]
|
|
70
|
+
testpaths = ["tests"]
|
|
71
|
+
base_url = "${baseURL}"
|
|
72
|
+
addopts = "${browserOpts}"
|
|
73
|
+
`;
|
|
74
|
+
}
|
|
75
|
+
function confpyTemplate() {
|
|
76
|
+
return `# conftest.py
|
|
77
|
+
#
|
|
78
|
+
# pytest-playwright fixtures are available automatically:
|
|
79
|
+
# page — a new Playwright Page for each test
|
|
80
|
+
# browser — the browser instance
|
|
81
|
+
# context — the browser context
|
|
82
|
+
#
|
|
83
|
+
# base_url is configured in pyproject.toml under [tool.pytest.ini_options].
|
|
84
|
+
# Add your own shared fixtures below.
|
|
85
|
+
`;
|
|
86
|
+
}
|
|
87
|
+
function testSeedPyTemplate() {
|
|
88
|
+
return `from playwright.sync_api import Page, expect
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def test_seed(page: Page) -> None:
|
|
92
|
+
"""
|
|
93
|
+
Seed test — entry point for AI agents.
|
|
94
|
+
|
|
95
|
+
How to use with agents:
|
|
96
|
+
# Prompt your AI tool:
|
|
97
|
+
# "Use the planner agent. Seed: tests/test_seed.py"
|
|
98
|
+
"""
|
|
99
|
+
page.goto("/")
|
|
100
|
+
expect(page).not_to_have_title("")
|
|
101
|
+
`;
|
|
102
|
+
}
|
|
103
|
+
function zosmaConfigPyTemplate(baseURL, browsers) {
|
|
104
|
+
const browsersJson = JSON.stringify(browsers);
|
|
105
|
+
return `import { defineConfig } from '@zosmaai/zosma-qa-core';
|
|
106
|
+
|
|
107
|
+
export default defineConfig({
|
|
108
|
+
plugins: ['pytest'],
|
|
109
|
+
baseURL: '${baseURL}',
|
|
110
|
+
browsers: ${browsersJson},
|
|
111
|
+
});
|
|
112
|
+
`;
|
|
113
|
+
}
|
|
57
114
|
// ─── Main init command ────────────────────────────────────────────────────────
|
|
58
115
|
async function runInit() {
|
|
59
116
|
const cwd = process.cwd();
|
|
@@ -61,6 +118,35 @@ async function runInit() {
|
|
|
61
118
|
console.log(chalk_1.default.bold.cyan(' zosma-qa') + chalk_1.default.dim(' — zero-config QA platform'));
|
|
62
119
|
console.log('');
|
|
63
120
|
// ── Gather inputs ──────────────────────────────────────────────────────────
|
|
121
|
+
const projectName = await (0, prompts_1.input)({
|
|
122
|
+
message: 'Project name:',
|
|
123
|
+
default: '',
|
|
124
|
+
transformer: (v) => v.trim(),
|
|
125
|
+
});
|
|
126
|
+
const projectDir = projectName.trim() ? node_path_1.default.join(cwd, projectName.trim()) : cwd;
|
|
127
|
+
if (projectName.trim()) {
|
|
128
|
+
console.log(chalk_1.default.dim(` Scaffolding into ./${projectName.trim()}/`));
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
console.log(chalk_1.default.dim(' No name given — scaffolding in current directory'));
|
|
132
|
+
}
|
|
133
|
+
console.log('');
|
|
134
|
+
const language = await (0, prompts_1.select)({
|
|
135
|
+
message: 'Language:',
|
|
136
|
+
choices: [
|
|
137
|
+
{
|
|
138
|
+
name: 'TypeScript (default)',
|
|
139
|
+
value: 'typescript',
|
|
140
|
+
description: 'Playwright tests in TypeScript — the most common choice',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: 'Python',
|
|
144
|
+
value: 'python',
|
|
145
|
+
description: 'Playwright tests in Python using pytest-playwright',
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
default: 'typescript',
|
|
149
|
+
});
|
|
64
150
|
const baseURL = await (0, prompts_1.input)({
|
|
65
151
|
message: 'Base URL of the app under test:',
|
|
66
152
|
default: 'http://localhost:3000',
|
|
@@ -73,43 +159,69 @@ async function runInit() {
|
|
|
73
159
|
{ name: 'Firefox', value: 'firefox', checked: false },
|
|
74
160
|
{ name: 'WebKit (Safari)', value: 'webkit', checked: false },
|
|
75
161
|
],
|
|
76
|
-
validate: (v) =>
|
|
77
|
-
});
|
|
78
|
-
const agentLoop = await (0, prompts_1.select)({
|
|
79
|
-
message: 'Set up AI agents for test generation?',
|
|
80
|
-
choices: [
|
|
81
|
-
{
|
|
82
|
-
name: 'OpenCode (default)',
|
|
83
|
-
value: 'opencode',
|
|
84
|
-
description: 'Initialise agent definitions for the OpenCode AI coding tool',
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
name: 'Claude Code',
|
|
88
|
-
value: 'claude',
|
|
89
|
-
description: 'Initialise agent definitions for Claude Code (claude.ai/code)',
|
|
90
|
-
},
|
|
91
|
-
{
|
|
92
|
-
name: 'VS Code (Copilot)',
|
|
93
|
-
value: 'vscode',
|
|
94
|
-
description: 'Initialise agent definitions for GitHub Copilot in VS Code',
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
name: 'Skip for now',
|
|
98
|
-
value: 'skip',
|
|
99
|
-
description: 'You can always run `npx zosma-qa agents init` later',
|
|
100
|
-
},
|
|
101
|
-
],
|
|
102
|
-
default: 'opencode',
|
|
162
|
+
validate: (v) => v.length > 0 ? true : 'Select at least one browser',
|
|
103
163
|
});
|
|
164
|
+
// AI loop prompt — TypeScript only; the init-agents tooling requires Node.js/Playwright TS
|
|
165
|
+
let agentLoop = 'skip';
|
|
166
|
+
if (language === 'typescript') {
|
|
167
|
+
agentLoop = await (0, prompts_1.select)({
|
|
168
|
+
message: 'Set up AI agents for test generation?',
|
|
169
|
+
choices: [
|
|
170
|
+
{
|
|
171
|
+
name: 'OpenCode (default)',
|
|
172
|
+
value: 'opencode',
|
|
173
|
+
description: 'Initialise agent definitions for the OpenCode AI coding tool',
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: 'Claude Code',
|
|
177
|
+
value: 'claude',
|
|
178
|
+
description: 'Initialise agent definitions for Claude Code (claude.ai/code)',
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
name: 'VS Code (Copilot)',
|
|
182
|
+
value: 'vscode',
|
|
183
|
+
description: 'Initialise agent definitions for GitHub Copilot in VS Code',
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: 'Skip for now',
|
|
187
|
+
value: 'skip',
|
|
188
|
+
description: 'You can always run `npx zosma-qa agents init` later',
|
|
189
|
+
},
|
|
190
|
+
],
|
|
191
|
+
default: 'opencode',
|
|
192
|
+
});
|
|
193
|
+
}
|
|
104
194
|
console.log('');
|
|
105
195
|
// ── Scaffold files ─────────────────────────────────────────────────────────
|
|
196
|
+
if (language === 'python') {
|
|
197
|
+
const uvAvailable = isUvAvailable();
|
|
198
|
+
await scaffoldPython(projectDir, projectName, baseURL, browsers, uvAvailable);
|
|
199
|
+
console.log('');
|
|
200
|
+
console.log(`${chalk_1.default.bold.green(' Ready!')} Here's what to do next:\n`);
|
|
201
|
+
const cdHint = projectName.trim() ? ` ${chalk_1.default.cyan(`cd ${projectName.trim()}`)}\n` : '';
|
|
202
|
+
if (cdHint)
|
|
203
|
+
console.log(cdHint);
|
|
204
|
+
printPythonSummary(uvAvailable);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
await scaffoldTypeScript(projectDir, baseURL, browsers, agentLoop);
|
|
208
|
+
console.log('');
|
|
209
|
+
console.log(`${chalk_1.default.bold.green(' Ready!')} Here's what to do next:\n`);
|
|
210
|
+
const cdHint = projectName.trim() ? ` ${chalk_1.default.cyan(`cd ${projectName.trim()}`)}\n` : '';
|
|
211
|
+
if (cdHint)
|
|
212
|
+
console.log(cdHint);
|
|
213
|
+
printTypeScriptSummary();
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// ─── TypeScript scaffold ───────────────────────────────────────────────────────
|
|
217
|
+
async function scaffoldTypeScript(projectDir, baseURL, browsers, agentLoop) {
|
|
106
218
|
const spinner = (0, ora_1.default)();
|
|
107
219
|
// tests/
|
|
108
|
-
const testsDir =
|
|
220
|
+
const testsDir = node_path_1.default.join(projectDir, 'tests');
|
|
109
221
|
ensureDir(testsDir);
|
|
110
|
-
const seedPath =
|
|
111
|
-
if (!
|
|
112
|
-
|
|
222
|
+
const seedPath = node_path_1.default.join(testsDir, 'seed.spec.ts');
|
|
223
|
+
if (!node_fs_1.default.existsSync(seedPath)) {
|
|
224
|
+
node_fs_1.default.writeFileSync(seedPath, seedSpecTemplate(baseURL), 'utf8');
|
|
113
225
|
spinner.succeed(chalk_1.default.green(`Created tests/seed.spec.ts`));
|
|
114
226
|
}
|
|
115
227
|
else {
|
|
@@ -117,17 +229,17 @@ async function runInit() {
|
|
|
117
229
|
spinner.stop();
|
|
118
230
|
}
|
|
119
231
|
// specs/
|
|
120
|
-
const specsDir =
|
|
232
|
+
const specsDir = node_path_1.default.join(projectDir, 'specs');
|
|
121
233
|
ensureDir(specsDir);
|
|
122
|
-
const specsKeep =
|
|
123
|
-
if (!
|
|
124
|
-
|
|
234
|
+
const specsKeep = node_path_1.default.join(specsDir, '.gitkeep');
|
|
235
|
+
if (!node_fs_1.default.existsSync(specsKeep)) {
|
|
236
|
+
node_fs_1.default.writeFileSync(specsKeep, '', 'utf8');
|
|
125
237
|
}
|
|
126
238
|
spinner.succeed(chalk_1.default.green(`Created specs/ (AI planner writes test plans here)`));
|
|
127
239
|
// playwright.config.ts
|
|
128
|
-
const pwConfigPath =
|
|
129
|
-
if (!
|
|
130
|
-
|
|
240
|
+
const pwConfigPath = node_path_1.default.join(projectDir, 'playwright.config.ts');
|
|
241
|
+
if (!node_fs_1.default.existsSync(pwConfigPath)) {
|
|
242
|
+
node_fs_1.default.writeFileSync(pwConfigPath, playwrightConfigTemplate(baseURL, browsers), 'utf8');
|
|
131
243
|
spinner.succeed(chalk_1.default.green(`Created playwright.config.ts`));
|
|
132
244
|
}
|
|
133
245
|
else {
|
|
@@ -135,9 +247,9 @@ async function runInit() {
|
|
|
135
247
|
spinner.stop();
|
|
136
248
|
}
|
|
137
249
|
// zosma.config.ts
|
|
138
|
-
const zosmaConfigPath =
|
|
139
|
-
if (!
|
|
140
|
-
|
|
250
|
+
const zosmaConfigPath = node_path_1.default.join(projectDir, 'zosma.config.ts');
|
|
251
|
+
if (!node_fs_1.default.existsSync(zosmaConfigPath)) {
|
|
252
|
+
node_fs_1.default.writeFileSync(zosmaConfigPath, zosmaConfigTsTemplate(baseURL, browsers), 'utf8');
|
|
141
253
|
spinner.succeed(chalk_1.default.green(`Created zosma.config.ts`));
|
|
142
254
|
}
|
|
143
255
|
else {
|
|
@@ -145,29 +257,136 @@ async function runInit() {
|
|
|
145
257
|
spinner.stop();
|
|
146
258
|
}
|
|
147
259
|
// .github/agents/
|
|
148
|
-
const agentsDir =
|
|
149
|
-
ensureDir(
|
|
260
|
+
const agentsDir = node_path_1.default.join(projectDir, '.github', 'agents');
|
|
261
|
+
ensureDir(node_path_1.default.join(projectDir, '.github'));
|
|
150
262
|
ensureDir(agentsDir);
|
|
151
|
-
const agentsKeep =
|
|
152
|
-
if (!
|
|
153
|
-
|
|
263
|
+
const agentsKeep = node_path_1.default.join(agentsDir, '.gitkeep');
|
|
264
|
+
if (!node_fs_1.default.existsSync(agentsKeep)) {
|
|
265
|
+
node_fs_1.default.writeFileSync(agentsKeep, '', 'utf8');
|
|
266
|
+
}
|
|
267
|
+
// ── Install dependencies ───────────────────────────────────────────────────
|
|
268
|
+
const pkgJsonPath = node_path_1.default.join(projectDir, 'package.json');
|
|
269
|
+
if (!node_fs_1.default.existsSync(pkgJsonPath)) {
|
|
270
|
+
const initSpinner = (0, ora_1.default)('Creating package.json…').start();
|
|
271
|
+
try {
|
|
272
|
+
await spawnAsync('npm', ['init', '-y'], projectDir);
|
|
273
|
+
initSpinner.succeed(chalk_1.default.green('Created package.json'));
|
|
274
|
+
}
|
|
275
|
+
catch {
|
|
276
|
+
initSpinner.warn(chalk_1.default.yellow('Could not create package.json — run `npm init -y` manually'));
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
const pm = detectPackageManager(projectDir);
|
|
280
|
+
const installSpinner = (0, ora_1.default)(`Installing @zosmaai/zosma-qa-playwright and @playwright/test via ${pm}…`).start();
|
|
281
|
+
try {
|
|
282
|
+
if (pm === 'pnpm') {
|
|
283
|
+
await spawnAsync('pnpm', ['add', '-D', '@zosmaai/zosma-qa-playwright', '@playwright/test'], projectDir);
|
|
284
|
+
}
|
|
285
|
+
else if (pm === 'yarn') {
|
|
286
|
+
await spawnAsync('yarn', ['add', '-D', '@zosmaai/zosma-qa-playwright', '@playwright/test'], projectDir);
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
await spawnAsync('npm', ['install', '-D', '@zosmaai/zosma-qa-playwright', '@playwright/test'], projectDir);
|
|
290
|
+
}
|
|
291
|
+
installSpinner.succeed(chalk_1.default.green('Installed @zosmaai/zosma-qa-playwright'));
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
installSpinner.warn(chalk_1.default.yellow(`Could not install dependencies automatically. Run manually:\n` +
|
|
295
|
+
` npm install -D @zosmaai/zosma-qa-playwright @playwright/test`));
|
|
154
296
|
}
|
|
155
297
|
// ── Run playwright init-agents ─────────────────────────────────────────────
|
|
156
298
|
if (agentLoop !== 'skip') {
|
|
157
299
|
console.log('');
|
|
158
300
|
const agentSpinner = (0, ora_1.default)(`Running: npx playwright init-agents --loop=${agentLoop}`).start();
|
|
159
301
|
try {
|
|
160
|
-
await spawnAsync('npx', ['playwright', 'init-agents', `--loop=${agentLoop}`],
|
|
302
|
+
await spawnAsync('npx', ['playwright', 'init-agents', `--loop=${agentLoop}`], projectDir);
|
|
161
303
|
agentSpinner.succeed(chalk_1.default.green(`Agent definitions written to .github/agents/ (loop: ${agentLoop})`));
|
|
162
304
|
}
|
|
163
|
-
catch (
|
|
305
|
+
catch (_err) {
|
|
164
306
|
agentSpinner.warn(chalk_1.default.yellow(`Could not run playwright init-agents. Run manually:\n` +
|
|
165
307
|
` npx playwright install && npx playwright init-agents --loop=${agentLoop}`));
|
|
166
308
|
}
|
|
167
309
|
}
|
|
168
|
-
|
|
310
|
+
}
|
|
311
|
+
// ─── Python scaffold ───────────────────────────────────────────────────────────
|
|
312
|
+
async function scaffoldPython(projectDir, projectName, baseURL, browsers, uvAvailable) {
|
|
313
|
+
const spinner = (0, ora_1.default)();
|
|
314
|
+
// tests/test_seed.py
|
|
315
|
+
const testsDir = node_path_1.default.join(projectDir, 'tests');
|
|
316
|
+
ensureDir(testsDir);
|
|
317
|
+
const seedPath = node_path_1.default.join(testsDir, 'test_seed.py');
|
|
318
|
+
if (!node_fs_1.default.existsSync(seedPath)) {
|
|
319
|
+
node_fs_1.default.writeFileSync(seedPath, testSeedPyTemplate(), 'utf8');
|
|
320
|
+
spinner.succeed(chalk_1.default.green(`Created tests/test_seed.py`));
|
|
321
|
+
}
|
|
322
|
+
else {
|
|
323
|
+
spinner.info(chalk_1.default.dim(`Skipped tests/test_seed.py (already exists)`));
|
|
324
|
+
spinner.stop();
|
|
325
|
+
}
|
|
326
|
+
// conftest.py
|
|
327
|
+
const confpyPath = node_path_1.default.join(projectDir, 'conftest.py');
|
|
328
|
+
if (!node_fs_1.default.existsSync(confpyPath)) {
|
|
329
|
+
node_fs_1.default.writeFileSync(confpyPath, confpyTemplate(), 'utf8');
|
|
330
|
+
spinner.succeed(chalk_1.default.green(`Created conftest.py`));
|
|
331
|
+
}
|
|
332
|
+
else {
|
|
333
|
+
spinner.info(chalk_1.default.dim(`Skipped conftest.py (already exists)`));
|
|
334
|
+
spinner.stop();
|
|
335
|
+
}
|
|
336
|
+
// pyproject.toml
|
|
337
|
+
const pyprojectPath = node_path_1.default.join(projectDir, 'pyproject.toml');
|
|
338
|
+
if (!node_fs_1.default.existsSync(pyprojectPath)) {
|
|
339
|
+
node_fs_1.default.writeFileSync(pyprojectPath, pyprojectTomlTemplate(projectName, baseURL, browsers), 'utf8');
|
|
340
|
+
spinner.succeed(chalk_1.default.green(`Created pyproject.toml`));
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
spinner.info(chalk_1.default.dim(`Skipped pyproject.toml (already exists)`));
|
|
344
|
+
spinner.stop();
|
|
345
|
+
}
|
|
346
|
+
// zosma.config.ts
|
|
347
|
+
const zosmaConfigPath = node_path_1.default.join(projectDir, 'zosma.config.ts');
|
|
348
|
+
if (!node_fs_1.default.existsSync(zosmaConfigPath)) {
|
|
349
|
+
node_fs_1.default.writeFileSync(zosmaConfigPath, zosmaConfigPyTemplate(baseURL, browsers), 'utf8');
|
|
350
|
+
spinner.succeed(chalk_1.default.green(`Created zosma.config.ts`));
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
spinner.info(chalk_1.default.dim(`Skipped zosma.config.ts (already exists)`));
|
|
354
|
+
spinner.stop();
|
|
355
|
+
}
|
|
356
|
+
// specs/
|
|
357
|
+
const specsDir = node_path_1.default.join(projectDir, 'specs');
|
|
358
|
+
ensureDir(specsDir);
|
|
359
|
+
const specsKeep = node_path_1.default.join(specsDir, '.gitkeep');
|
|
360
|
+
if (!node_fs_1.default.existsSync(specsKeep)) {
|
|
361
|
+
node_fs_1.default.writeFileSync(specsKeep, '', 'utf8');
|
|
362
|
+
}
|
|
363
|
+
spinner.succeed(chalk_1.default.green(`Created specs/ (AI planner writes test plans here)`));
|
|
364
|
+
// .github/agents/
|
|
365
|
+
const agentsDir = node_path_1.default.join(projectDir, '.github', 'agents');
|
|
366
|
+
ensureDir(node_path_1.default.join(projectDir, '.github'));
|
|
367
|
+
ensureDir(agentsDir);
|
|
368
|
+
const agentsKeep = node_path_1.default.join(agentsDir, '.gitkeep');
|
|
369
|
+
if (!node_fs_1.default.existsSync(agentsKeep)) {
|
|
370
|
+
node_fs_1.default.writeFileSync(agentsKeep, '', 'utf8');
|
|
371
|
+
}
|
|
372
|
+
// ── Install via uv (if available) ─────────────────────────────────────────
|
|
373
|
+
if (uvAvailable) {
|
|
374
|
+
const installSpinner = (0, ora_1.default)('Installing pytest-playwright via uv…').start();
|
|
375
|
+
try {
|
|
376
|
+
await spawnAsync('uv', ['add', 'pytest-playwright'], projectDir);
|
|
377
|
+
installSpinner.succeed(chalk_1.default.green('Installed pytest-playwright (via uv)'));
|
|
378
|
+
}
|
|
379
|
+
catch {
|
|
380
|
+
installSpinner.warn(chalk_1.default.yellow('Could not install pytest-playwright automatically — see install instructions below.'));
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
// init-agents is not yet supported for Python (requires Node.js/Playwright TS tooling)
|
|
169
384
|
console.log('');
|
|
170
|
-
console.log(chalk_1.default.
|
|
385
|
+
console.log(chalk_1.default.dim(` Note: AI agent scaffolding (npx playwright init-agents) is not yet supported\n` +
|
|
386
|
+
` for Python projects. Use tests/test_seed.py as your AI agent entry point.\n`));
|
|
387
|
+
}
|
|
388
|
+
// ─── Summaries ────────────────────────────────────────────────────────────────
|
|
389
|
+
function printTypeScriptSummary() {
|
|
171
390
|
console.log(` ${chalk_1.default.cyan('npx zosma-qa run')} run your tests`);
|
|
172
391
|
console.log(` ${chalk_1.default.cyan('npx zosma-qa agents init')} re-run agent setup for a different AI tool`);
|
|
173
392
|
console.log(` ${chalk_1.default.cyan('npx zosma-qa report')} open the HTML report`);
|
|
@@ -175,17 +394,63 @@ async function runInit() {
|
|
|
175
394
|
console.log(chalk_1.default.dim(` Tip: open ${chalk_1.default.white('tests/seed.spec.ts')} and prompt your AI agent:\n` +
|
|
176
395
|
` "Use the planner agent. Seed: tests/seed.spec.ts"\n`));
|
|
177
396
|
}
|
|
397
|
+
function printPythonSummary(uvAvailable) {
|
|
398
|
+
if (uvAvailable) {
|
|
399
|
+
console.log(` Download browser binaries:`);
|
|
400
|
+
console.log(` ${chalk_1.default.cyan('playwright install')}\n`);
|
|
401
|
+
console.log(` Run your tests:`);
|
|
402
|
+
console.log(` ${chalk_1.default.cyan('uv run pytest tests/test_seed.py')}`);
|
|
403
|
+
console.log(` ${chalk_1.default.cyan('npx zosma-qa run')} (detects uv automatically)\n`);
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
console.log(` Install dependencies first:\n`);
|
|
407
|
+
console.log(chalk_1.default.bold(` Option A — uv`) + chalk_1.default.dim(` (recommended — handles virtualenv for you)`));
|
|
408
|
+
console.log(` ${chalk_1.default.cyan('curl -LsSf https://astral.sh/uv/install.sh | sh')}`);
|
|
409
|
+
console.log(` ${chalk_1.default.cyan('uv sync')}`);
|
|
410
|
+
console.log(` ${chalk_1.default.cyan('playwright install')}`);
|
|
411
|
+
console.log(` ${chalk_1.default.cyan('uv run pytest tests/test_seed.py')}\n`);
|
|
412
|
+
console.log(chalk_1.default.bold(` Option B — venv + pip`));
|
|
413
|
+
console.log(` ${chalk_1.default.cyan('python -m venv .venv')}`);
|
|
414
|
+
console.log(` ${chalk_1.default.cyan('source .venv/bin/activate')}` +
|
|
415
|
+
chalk_1.default.dim(` # Windows: .venv\\Scripts\\activate`));
|
|
416
|
+
console.log(` ${chalk_1.default.cyan('pip install pytest-playwright')}`);
|
|
417
|
+
console.log(` ${chalk_1.default.cyan('playwright install')}`);
|
|
418
|
+
console.log(` ${chalk_1.default.cyan('pytest tests/test_seed.py')}\n`);
|
|
419
|
+
}
|
|
420
|
+
console.log(chalk_1.default.dim(` Tip: open ${chalk_1.default.white('tests/test_seed.py')} and prompt your AI agent:\n` +
|
|
421
|
+
` "Write more tests following the pattern in tests/test_seed.py"\n`));
|
|
422
|
+
}
|
|
178
423
|
// ─── Utilities ────────────────────────────────────────────────────────────────
|
|
179
424
|
function ensureDir(dir) {
|
|
180
|
-
if (!
|
|
181
|
-
|
|
425
|
+
if (!node_fs_1.default.existsSync(dir)) {
|
|
426
|
+
node_fs_1.default.mkdirSync(dir, { recursive: true });
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Check whether `uv` is installed on the system.
|
|
431
|
+
* Returns true if `uv --version` exits with code 0.
|
|
432
|
+
*/
|
|
433
|
+
function isUvAvailable() {
|
|
434
|
+
try {
|
|
435
|
+
const result = (0, node_child_process_1.spawnSync)('uv', ['--version'], { stdio: 'pipe' });
|
|
436
|
+
return result.status === 0;
|
|
437
|
+
}
|
|
438
|
+
catch {
|
|
439
|
+
return false;
|
|
182
440
|
}
|
|
183
441
|
}
|
|
184
442
|
function spawnAsync(cmd, args, cwd) {
|
|
185
443
|
return new Promise((resolve, reject) => {
|
|
186
|
-
const child = (0,
|
|
444
|
+
const child = (0, node_child_process_1.spawn)(cmd, args, { stdio: 'inherit', cwd });
|
|
187
445
|
child.on('close', (code) => (code === 0 ? resolve() : reject(new Error(`exit ${code}`))));
|
|
188
446
|
child.on('error', reject);
|
|
189
447
|
});
|
|
190
448
|
}
|
|
449
|
+
function detectPackageManager(cwd) {
|
|
450
|
+
if (node_fs_1.default.existsSync(node_path_1.default.join(cwd, 'pnpm-lock.yaml')))
|
|
451
|
+
return 'pnpm';
|
|
452
|
+
if (node_fs_1.default.existsSync(node_path_1.default.join(cwd, 'yarn.lock')))
|
|
453
|
+
return 'yarn';
|
|
454
|
+
return 'npm';
|
|
455
|
+
}
|
|
191
456
|
//# sourceMappingURL=init.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/report.js
CHANGED
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.openReport = openReport;
|
|
7
|
-
const
|
|
7
|
+
const node_child_process_1 = require("node:child_process");
|
|
8
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
9
|
/**
|
|
10
10
|
* `zosma-qa report` — opens the Playwright HTML report in the default browser.
|
|
@@ -22,7 +22,7 @@ async function openReport() {
|
|
|
22
22
|
}
|
|
23
23
|
function spawnAsync(cmd, args) {
|
|
24
24
|
return new Promise((resolve, reject) => {
|
|
25
|
-
const child = (0,
|
|
25
|
+
const child = (0, node_child_process_1.spawn)(cmd, args, {
|
|
26
26
|
stdio: 'inherit',
|
|
27
27
|
cwd: process.cwd(),
|
|
28
28
|
env: { ...process.env },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":";;;;;AAMA,gCAYC;AAlBD,
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/commands/report.ts"],"names":[],"mappings":";;;;;AAMA,gCAYC;AAlBD,2DAA2C;AAC3C,kDAA0B;AAE1B;;GAEG;AACI,KAAK,UAAU,UAAU;IAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;IAExE,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,uCAAuC,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,IAAc;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,GAAG,EAAE,IAAI,EAAE;YAC7B,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/commands/run.d.ts
CHANGED
|
@@ -8,8 +8,10 @@ export interface RunOptions {
|
|
|
8
8
|
reporter?: string;
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
|
-
* `zosma-qa run` —
|
|
12
|
-
*
|
|
11
|
+
* `zosma-qa run` — detects the active runner from zosma.config and delegates
|
|
12
|
+
* to the appropriate process:
|
|
13
|
+
* - plugins: ['pytest'] → `uv run pytest` (if uv.lock present) or `python -m pytest`
|
|
14
|
+
* - plugins: ['playwright'] → `npx playwright test` (default)
|
|
13
15
|
*/
|
|
14
16
|
export declare function runTests(options?: RunOptions): Promise<void>;
|
|
15
17
|
//# sourceMappingURL=run.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtE"}
|
package/dist/commands/run.js
CHANGED
|
@@ -4,28 +4,62 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.runTests = runTests;
|
|
7
|
-
const
|
|
7
|
+
const node_child_process_1 = require("node:child_process");
|
|
8
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const zosma_qa_core_1 = require("@zosmaai/zosma-qa-core");
|
|
8
11
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
12
|
/**
|
|
10
|
-
* `zosma-qa run` —
|
|
11
|
-
*
|
|
13
|
+
* `zosma-qa run` — detects the active runner from zosma.config and delegates
|
|
14
|
+
* to the appropriate process:
|
|
15
|
+
* - plugins: ['pytest'] → `uv run pytest` (if uv.lock present) or `python -m pytest`
|
|
16
|
+
* - plugins: ['playwright'] → `npx playwright test` (default)
|
|
12
17
|
*/
|
|
13
18
|
async function runTests(options = {}) {
|
|
14
|
-
const
|
|
19
|
+
const cwd = process.cwd();
|
|
20
|
+
const config = await (0, zosma_qa_core_1.loadConfig)(cwd);
|
|
21
|
+
const isPython = config.plugins.includes('pytest');
|
|
22
|
+
if (isPython) {
|
|
23
|
+
await runPytest(options, config.testDir ?? './tests', cwd);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
await runPlaywright(options, cwd);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// ─── pytest dispatch ───────────────────────────────────────────────────────────
|
|
30
|
+
function buildPytestArgs(options, testDir) {
|
|
31
|
+
const args = [testDir];
|
|
32
|
+
if (options.grep)
|
|
33
|
+
args.push('-k', options.grep);
|
|
34
|
+
if (options.headed)
|
|
35
|
+
args.push('--headed');
|
|
36
|
+
// --project, --debug, --workers, --shard, --reporter have no pytest equivalent — silently ignored
|
|
37
|
+
return args;
|
|
38
|
+
}
|
|
39
|
+
async function runPytest(options, testDir, cwd) {
|
|
40
|
+
const hasUvLock = node_fs_1.default.existsSync(node_path_1.default.join(cwd, 'uv.lock'));
|
|
41
|
+
let cmd;
|
|
42
|
+
let args;
|
|
43
|
+
if (hasUvLock) {
|
|
44
|
+
cmd = 'uv';
|
|
45
|
+
args = ['run', 'pytest', ...buildPytestArgs(options, testDir)];
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
cmd = 'python';
|
|
49
|
+
args = ['-m', 'pytest', ...buildPytestArgs(options, testDir)];
|
|
50
|
+
}
|
|
15
51
|
console.log('');
|
|
16
52
|
console.log(chalk_1.default.bold.cyan(' zosma-qa') +
|
|
17
53
|
chalk_1.default.dim(' running: ') +
|
|
18
|
-
chalk_1.default.white(
|
|
54
|
+
chalk_1.default.white(`${cmd} ${args.join(' ')}`));
|
|
19
55
|
console.log('');
|
|
20
|
-
const exitCode = await
|
|
56
|
+
const exitCode = await spawnProcess(cmd, args, cwd);
|
|
21
57
|
if (exitCode !== 0) {
|
|
22
|
-
console.log('');
|
|
23
|
-
console.log(chalk_1.default.dim(` View the report: `) + chalk_1.default.cyan('npx zosma-qa report'));
|
|
24
58
|
process.exit(exitCode);
|
|
25
59
|
}
|
|
26
60
|
}
|
|
27
|
-
// ───
|
|
28
|
-
function
|
|
61
|
+
// ─── Playwright dispatch ───────────────────────────────────────────────────────
|
|
62
|
+
function buildPlaywrightArgs(options) {
|
|
29
63
|
const args = ['test'];
|
|
30
64
|
if (options.project)
|
|
31
65
|
args.push('--project', options.project);
|
|
@@ -43,11 +77,26 @@ function buildArgs(options) {
|
|
|
43
77
|
args.push('--reporter', options.reporter);
|
|
44
78
|
return args;
|
|
45
79
|
}
|
|
46
|
-
function
|
|
80
|
+
async function runPlaywright(options, cwd) {
|
|
81
|
+
const args = buildPlaywrightArgs(options);
|
|
82
|
+
console.log('');
|
|
83
|
+
console.log(chalk_1.default.bold.cyan(' zosma-qa') +
|
|
84
|
+
chalk_1.default.dim(' running: ') +
|
|
85
|
+
chalk_1.default.white(`npx playwright ${args.join(' ')}`));
|
|
86
|
+
console.log('');
|
|
87
|
+
const exitCode = await spawnProcess('npx', ['playwright', ...args], cwd);
|
|
88
|
+
if (exitCode !== 0) {
|
|
89
|
+
console.log('');
|
|
90
|
+
console.log(chalk_1.default.dim(` View the report: `) + chalk_1.default.cyan('npx zosma-qa report'));
|
|
91
|
+
process.exit(exitCode);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// ─── helpers ──────────────────────────────────────────────────────────────────
|
|
95
|
+
function spawnProcess(cmd, args, cwd) {
|
|
47
96
|
return new Promise((resolve, reject) => {
|
|
48
|
-
const child = (0,
|
|
97
|
+
const child = (0, node_child_process_1.spawn)(cmd, args, {
|
|
49
98
|
stdio: 'inherit',
|
|
50
|
-
cwd
|
|
99
|
+
cwd,
|
|
51
100
|
env: { ...process.env },
|
|
52
101
|
});
|
|
53
102
|
child.on('close', (code) => resolve(code ?? 1));
|
package/dist/commands/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":";;;;;AAsBA,4BAUC;AAhCD,2DAA2C;AAC3C,sDAAyB;AACzB,0DAA6B;AAC7B,0DAAoD;AACpD,kDAA0B;AAY1B;;;;;GAKG;AACI,KAAK,UAAU,QAAQ,CAAC,UAAsB,EAAE;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAU,EAAC,GAAG,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEnD,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE,GAAG,CAAC,CAAC;IAC7D,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,kFAAkF;AAElF,SAAS,eAAe,CAAC,OAAmB,EAAE,OAAe;IAC3D,MAAM,IAAI,GAAa,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,OAAO,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,kGAAkG;IAClG,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAAmB,EAAE,OAAe,EAAE,GAAW;IACxE,MAAM,SAAS,GAAG,iBAAE,CAAC,UAAU,CAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;IAE3D,IAAI,GAAW,CAAC;IAChB,IAAI,IAAc,CAAC;IAEnB,IAAI,SAAS,EAAE,CAAC;QACd,GAAG,GAAG,IAAI,CAAC;QACX,IAAI,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACjE,CAAC;SAAM,CAAC;QACN,GAAG,GAAG,QAAQ,CAAC;QACf,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAC3B,eAAK,CAAC,GAAG,CAAC,aAAa,CAAC;QACxB,eAAK,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAC1C,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAEpD,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,kFAAkF;AAElF,SAAS,mBAAmB,CAAC,OAAmB;IAC9C,MAAM,IAAI,GAAa,CAAC,MAAM,CAAC,CAAC;IAEhC,IAAI,OAAO,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,OAAO,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,OAAO,CAAC,KAAK;QAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,OAAO,CAAC,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEhE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAmB,EAAE,GAAW;IAC3D,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAC3B,eAAK,CAAC,GAAG,CAAC,aAAa,CAAC;QACxB,eAAK,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAClD,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IAEzE,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,eAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,SAAS,YAAY,CAAC,GAAW,EAAE,IAAc,EAAE,GAAW;IAC5D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,GAAG,EAAE,IAAI,EAAE;YAC7B,KAAK,EAAE,SAAS;YAChB,GAAG;YACH,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const commander_1 = require("commander");
|
|
4
|
-
const init_1 = require("./commands/init");
|
|
5
|
-
const run_1 = require("./commands/run");
|
|
6
4
|
const agents_1 = require("./commands/agents");
|
|
5
|
+
const init_1 = require("./commands/init");
|
|
7
6
|
const report_1 = require("./commands/report");
|
|
7
|
+
const run_1 = require("./commands/run");
|
|
8
8
|
const program = new commander_1.Command();
|
|
9
9
|
program
|
|
10
10
|
.name('zosma-qa')
|
|
@@ -32,9 +32,7 @@ program
|
|
|
32
32
|
await (0, run_1.runTests)(options);
|
|
33
33
|
});
|
|
34
34
|
// ─── agents ───────────────────────────────────────────────────────────────────
|
|
35
|
-
const agentsCmd = program
|
|
36
|
-
.command('agents')
|
|
37
|
-
.description('Manage Playwright AI agent definitions');
|
|
35
|
+
const agentsCmd = program.command('agents').description('Manage Playwright AI agent definitions');
|
|
38
36
|
agentsCmd
|
|
39
37
|
.command('init')
|
|
40
38
|
.description('Generate Playwright AI agent definitions for your AI coding tool')
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AACpC,8CAA+C;AAC/C,0CAA0C;AAC1C,8CAA+C;AAC/C,wCAA0C;AAE1C,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,2DAA2D,CAAC;KACxE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,oEAAoE,CAAC;KACjF,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,cAAO,GAAE,CAAC;AAClB,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,6DAA6D,CAAC;KAC1E,MAAM,CAAC,sBAAsB,EAAE,6CAA6C,CAAC;KAC7E,MAAM,CAAC,sBAAsB,EAAE,sCAAsC,CAAC;KACtE,MAAM,CAAC,UAAU,EAAE,4CAA4C,CAAC;KAChE,MAAM,CAAC,SAAS,EAAE,oCAAoC,CAAC;KACvD,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;KACzD,MAAM,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;KACnD,MAAM,CAAC,uBAAuB,EAAE,0CAA0C,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,cAAQ,EAAC,OAAO,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,wCAAwC,CAAC,CAAC;AAElG,SAAS;KACN,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kEAAkE,CAAC;KAC/E,MAAM,CAAC,eAAe,EAAE,4CAA4C,CAAC;KACrE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,IAAA,mBAAU,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,IAAA,mBAAU,GAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zosmaai/zosma-qa-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
4
4
|
"description": "CLI for zosma-qa — zero-config QA platform",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
"chalk": "^5.3.0",
|
|
36
36
|
"commander": "^12.1.0",
|
|
37
37
|
"ora": "^8.1.1",
|
|
38
|
-
"@zosmaai/zosma-qa-
|
|
39
|
-
"@zosmaai/zosma-qa-
|
|
38
|
+
"@zosmaai/zosma-qa-playwright": "0.0.7",
|
|
39
|
+
"@zosmaai/zosma-qa-core": "0.0.7"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@types/node": "^20.0.0",
|