@jonit-dev/night-watch-cli 1.8.10-beta.2 → 1.8.10-beta.4
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/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +957 -1906
- package/dist/cli.js.map +1 -0
- package/dist/commands/analytics.d.ts +14 -0
- package/dist/commands/analytics.d.ts.map +1 -0
- package/dist/commands/analytics.js +69 -0
- package/dist/commands/analytics.js.map +1 -0
- package/dist/commands/audit.d.ts +19 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +144 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/board.d.ts +9 -0
- package/dist/commands/board.d.ts.map +1 -0
- package/dist/commands/board.js +702 -0
- package/dist/commands/board.js.map +1 -0
- package/dist/commands/cancel.d.ts +46 -0
- package/dist/commands/cancel.d.ts.map +1 -0
- package/dist/commands/cancel.js +239 -0
- package/dist/commands/cancel.js.map +1 -0
- package/dist/commands/cron.d.ts +8 -0
- package/dist/commands/cron.d.ts.map +1 -0
- package/dist/commands/cron.js +134 -0
- package/dist/commands/cron.js.map +1 -0
- package/dist/commands/dashboard/tab-actions.d.ts +10 -0
- package/dist/commands/dashboard/tab-actions.d.ts.map +1 -0
- package/dist/commands/dashboard/tab-actions.js +247 -0
- package/dist/commands/dashboard/tab-actions.js.map +1 -0
- package/dist/commands/dashboard/tab-config.d.ts +21 -0
- package/dist/commands/dashboard/tab-config.d.ts.map +1 -0
- package/dist/commands/dashboard/tab-config.js +873 -0
- package/dist/commands/dashboard/tab-config.js.map +1 -0
- package/dist/commands/dashboard/tab-logs.d.ts +10 -0
- package/dist/commands/dashboard/tab-logs.d.ts.map +1 -0
- package/dist/commands/dashboard/tab-logs.js +202 -0
- package/dist/commands/dashboard/tab-logs.js.map +1 -0
- package/dist/commands/dashboard/tab-schedules.d.ts +21 -0
- package/dist/commands/dashboard/tab-schedules.d.ts.map +1 -0
- package/dist/commands/dashboard/tab-schedules.js +320 -0
- package/dist/commands/dashboard/tab-schedules.js.map +1 -0
- package/dist/commands/dashboard/tab-status.d.ts +32 -0
- package/dist/commands/dashboard/tab-status.d.ts.map +1 -0
- package/dist/commands/dashboard/tab-status.js +424 -0
- package/dist/commands/dashboard/tab-status.js.map +1 -0
- package/dist/commands/dashboard/types.d.ts +42 -0
- package/dist/commands/dashboard/types.d.ts.map +1 -0
- package/dist/commands/dashboard/types.js +5 -0
- package/dist/commands/dashboard/types.js.map +1 -0
- package/dist/commands/dashboard.d.ts +11 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +242 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/doctor.d.ts +16 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +195 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/history.d.ts +7 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +49 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/init.d.ts +45 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +777 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install.d.ts +65 -0
- package/dist/commands/install.d.ts.map +1 -0
- package/dist/commands/install.js +405 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/logs.d.ts +15 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +155 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/merge.d.ts +26 -0
- package/dist/commands/merge.d.ts.map +1 -0
- package/dist/commands/merge.js +159 -0
- package/dist/commands/merge.js.map +1 -0
- package/dist/commands/notify.d.ts +7 -0
- package/dist/commands/notify.d.ts.map +1 -0
- package/dist/commands/notify.js +43 -0
- package/dist/commands/notify.js.map +1 -0
- package/dist/commands/plan.d.ts +19 -0
- package/dist/commands/plan.d.ts.map +1 -0
- package/dist/commands/plan.js +88 -0
- package/dist/commands/plan.js.map +1 -0
- package/dist/commands/prd-state.d.ts +12 -0
- package/dist/commands/prd-state.d.ts.map +1 -0
- package/dist/commands/prd-state.js +47 -0
- package/dist/commands/prd-state.js.map +1 -0
- package/dist/commands/prd.d.ts +18 -0
- package/dist/commands/prd.d.ts.map +1 -0
- package/dist/commands/prd.js +363 -0
- package/dist/commands/prd.js.map +1 -0
- package/dist/commands/prds.d.ts +13 -0
- package/dist/commands/prds.d.ts.map +1 -0
- package/dist/commands/prds.js +194 -0
- package/dist/commands/prds.js.map +1 -0
- package/dist/commands/prs.d.ts +14 -0
- package/dist/commands/prs.d.ts.map +1 -0
- package/dist/commands/prs.js +104 -0
- package/dist/commands/prs.js.map +1 -0
- package/dist/commands/qa.d.ts +34 -0
- package/dist/commands/qa.d.ts.map +1 -0
- package/dist/commands/qa.js +214 -0
- package/dist/commands/qa.js.map +1 -0
- package/dist/commands/queue.d.ts +8 -0
- package/dist/commands/queue.d.ts.map +1 -0
- package/dist/commands/queue.js +378 -0
- package/dist/commands/queue.js.map +1 -0
- package/dist/commands/resolve.d.ts +26 -0
- package/dist/commands/resolve.d.ts.map +1 -0
- package/dist/commands/resolve.js +186 -0
- package/dist/commands/resolve.js.map +1 -0
- package/dist/commands/retry.d.ts +9 -0
- package/dist/commands/retry.d.ts.map +1 -0
- package/dist/commands/retry.js +71 -0
- package/dist/commands/retry.js.map +1 -0
- package/dist/commands/review.d.ts +82 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +479 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/run.d.ts +73 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +509 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/serve.d.ts +19 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +142 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/shared/env-builder.d.ts +49 -0
- package/dist/commands/shared/env-builder.d.ts.map +1 -0
- package/dist/commands/shared/env-builder.js +150 -0
- package/dist/commands/shared/env-builder.js.map +1 -0
- package/dist/commands/slice.d.ts +35 -0
- package/dist/commands/slice.d.ts.map +1 -0
- package/dist/commands/slice.js +316 -0
- package/dist/commands/slice.js.map +1 -0
- package/dist/commands/state.d.ts +8 -0
- package/dist/commands/state.d.ts.map +1 -0
- package/dist/commands/state.js +54 -0
- package/dist/commands/state.js.map +1 -0
- package/dist/commands/status.d.ts +14 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +297 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/summary.d.ts +14 -0
- package/dist/commands/summary.d.ts.map +1 -0
- package/dist/commands/summary.js +193 -0
- package/dist/commands/summary.js.map +1 -0
- package/dist/commands/uninstall.d.ts +25 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +134 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.d.ts +22 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +90 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/scripts/night-watch-cron.sh +1 -3
- package/dist/scripts/night-watch-helpers.sh +52 -7
- package/dist/scripts/night-watch-merger-cron.sh +1 -1
- package/dist/scripts/night-watch-plan-cron.sh +1 -1
- package/dist/scripts/night-watch-slicer-cron.sh +1 -1
- package/dist/web/assets/index-CgXj_KM1.css +1 -0
- package/dist/web/assets/index-Dr4zlyJf.js +406 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/assets/index-BUgI2S1s.js +0 -406
- package/dist/web/assets/index-CkdLFBd7.js +0 -406
- package/dist/web/assets/index-RMfswANB.css +0 -1
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRs command for Night Watch CLI
|
|
3
|
+
* Lists matching PRs with their CI status and review scores
|
|
4
|
+
*/
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import { collectPrInfo, createTable, dim, header, info, loadConfig, } from '@night-watch/core';
|
|
7
|
+
/**
|
|
8
|
+
* Format CI status with color coding
|
|
9
|
+
*/
|
|
10
|
+
function formatCiStatus(status) {
|
|
11
|
+
switch (status) {
|
|
12
|
+
case 'pass':
|
|
13
|
+
return chalk.green('pass');
|
|
14
|
+
case 'fail':
|
|
15
|
+
return chalk.red('fail');
|
|
16
|
+
case 'pending':
|
|
17
|
+
return chalk.yellow('pending');
|
|
18
|
+
default:
|
|
19
|
+
return chalk.dim('unknown');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Format review score with color coding
|
|
24
|
+
*/
|
|
25
|
+
function formatReviewScore(score) {
|
|
26
|
+
if (score === null) {
|
|
27
|
+
return chalk.dim('-');
|
|
28
|
+
}
|
|
29
|
+
if (score >= 80) {
|
|
30
|
+
return chalk.green(String(score));
|
|
31
|
+
}
|
|
32
|
+
if (score >= 60) {
|
|
33
|
+
return chalk.yellow(String(score));
|
|
34
|
+
}
|
|
35
|
+
return chalk.red(String(score));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* PRs command implementation
|
|
39
|
+
*/
|
|
40
|
+
export function prsCommand(program) {
|
|
41
|
+
program
|
|
42
|
+
.command('prs')
|
|
43
|
+
.description('List matching PRs with CI status and review scores')
|
|
44
|
+
.option('--json', 'Output PRs as JSON')
|
|
45
|
+
.option('--debug', 'Enable debug logging for CI status and review score derivation')
|
|
46
|
+
.action(async (options) => {
|
|
47
|
+
try {
|
|
48
|
+
// Enable debug mode via environment variable
|
|
49
|
+
if (options.debug) {
|
|
50
|
+
process.env.DEBUG_PR_DATA = '1';
|
|
51
|
+
}
|
|
52
|
+
const projectDir = process.cwd();
|
|
53
|
+
const config = loadConfig(projectDir);
|
|
54
|
+
const prs = await collectPrInfo(projectDir, config.branchPatterns);
|
|
55
|
+
// Output as JSON if requested
|
|
56
|
+
if (options.json) {
|
|
57
|
+
const output = {
|
|
58
|
+
prs,
|
|
59
|
+
count: prs.length,
|
|
60
|
+
};
|
|
61
|
+
console.log(JSON.stringify(output, null, 2));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// Print header
|
|
65
|
+
console.log();
|
|
66
|
+
console.log(chalk.bold.cyan('Night Watch PRs'));
|
|
67
|
+
console.log(chalk.dim('-'.repeat(40)));
|
|
68
|
+
console.log();
|
|
69
|
+
if (prs.length === 0) {
|
|
70
|
+
info('No open PRs matching configured branch patterns found.');
|
|
71
|
+
dim(`Branch patterns: ${config.branchPatterns.join(', ')}`);
|
|
72
|
+
console.log();
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
header(`Open PRs (${prs.length})`);
|
|
76
|
+
// Create and populate table
|
|
77
|
+
const table = createTable({
|
|
78
|
+
head: ['#', 'Title', 'Branch', 'CI', 'Score', 'URL'],
|
|
79
|
+
colWidths: [6, 30, 25, 10, 8, 50],
|
|
80
|
+
});
|
|
81
|
+
for (const pr of prs) {
|
|
82
|
+
// Truncate title if too long
|
|
83
|
+
const title = pr.title.length > 27 ? pr.title.substring(0, 24) + '...' : pr.title;
|
|
84
|
+
// Truncate branch if too long
|
|
85
|
+
const branch = pr.branch.length > 22 ? pr.branch.substring(0, 19) + '...' : pr.branch;
|
|
86
|
+
table.push([
|
|
87
|
+
String(pr.number),
|
|
88
|
+
title,
|
|
89
|
+
branch,
|
|
90
|
+
formatCiStatus(pr.ciStatus),
|
|
91
|
+
formatReviewScore(pr.reviewScore),
|
|
92
|
+
pr.url,
|
|
93
|
+
]);
|
|
94
|
+
}
|
|
95
|
+
console.log(table.toString());
|
|
96
|
+
console.log();
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
console.error(`Error listing PRs: ${error instanceof Error ? error.message : String(error)}`);
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=prs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prs.js","sourceRoot":"","sources":["../../src/commands/prs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QA command - executes the QA cron script for PR test generation
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { INightWatchConfig } from '@night-watch/core';
|
|
6
|
+
/**
|
|
7
|
+
* Options for the qa command
|
|
8
|
+
*/
|
|
9
|
+
export interface IQaOptions {
|
|
10
|
+
dryRun: boolean;
|
|
11
|
+
timeout?: string;
|
|
12
|
+
provider?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* QA notifications should not fire for script-level skip/no-op outcomes.
|
|
16
|
+
*/
|
|
17
|
+
export declare function shouldSendQaNotification(scriptStatus?: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Parse PR numbers emitted by the QA script marker data (e.g. "#12,#34").
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseQaPrNumbers(prsRaw?: string): number[];
|
|
22
|
+
/**
|
|
23
|
+
* Build environment variables map from config and CLI options for QA
|
|
24
|
+
*/
|
|
25
|
+
export declare function buildEnvVars(config: INightWatchConfig, options: IQaOptions): Record<string, string>;
|
|
26
|
+
/**
|
|
27
|
+
* Apply CLI flag overrides to the config for QA
|
|
28
|
+
*/
|
|
29
|
+
export declare function applyCliOverrides(config: INightWatchConfig, options: IQaOptions): INightWatchConfig;
|
|
30
|
+
/**
|
|
31
|
+
* Register the qa command with the program
|
|
32
|
+
*/
|
|
33
|
+
export declare function qaCommand(program: Command): void;
|
|
34
|
+
//# sourceMappingURL=qa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qa.d.ts","sourceRoot":"","sources":["../../src/commands/qa.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAEL,iBAAiB,EAgBlB,MAAM,mBAAmB,CAAC;AAS3B;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAQvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAc1D;AAWD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,UAAU,GAClB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA6BxB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,UAAU,GAClB,iBAAiB,CAgBnB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+IhD"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QA command - executes the QA cron script for PR test generation
|
|
3
|
+
*/
|
|
4
|
+
import { CLAUDE_MODEL_IDS, PROVIDER_COMMANDS, createSpinner, createTable, dim, executeScriptWithOutput, fetchPrDetailsByNumber, fetchQaScreenshotUrlsForPr, getScriptPath, header, info, loadConfig, parseScriptResult, resolveJobProvider, sendNotifications, error as uiError, } from '@night-watch/core';
|
|
5
|
+
import { buildBaseEnvVars, formatProviderDisplay, getTelegramStatusWebhooks, maybeApplyCronSchedulingDelay, } from './shared/env-builder.js';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
/**
|
|
8
|
+
* QA notifications should not fire for script-level skip/no-op outcomes.
|
|
9
|
+
*/
|
|
10
|
+
export function shouldSendQaNotification(scriptStatus) {
|
|
11
|
+
if (!scriptStatus) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
if (scriptStatus === 'queued') {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
return !scriptStatus.startsWith('skip_');
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Parse PR numbers emitted by the QA script marker data (e.g. "#12,#34").
|
|
21
|
+
*/
|
|
22
|
+
export function parseQaPrNumbers(prsRaw) {
|
|
23
|
+
if (!prsRaw)
|
|
24
|
+
return [];
|
|
25
|
+
const seen = new Set();
|
|
26
|
+
const numbers = [];
|
|
27
|
+
for (const token of prsRaw.split(',')) {
|
|
28
|
+
const parsed = parseInt(token.trim().replace(/^#/, ''), 10);
|
|
29
|
+
if (Number.isNaN(parsed) || seen.has(parsed)) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
seen.add(parsed);
|
|
33
|
+
numbers.push(parsed);
|
|
34
|
+
}
|
|
35
|
+
return numbers;
|
|
36
|
+
}
|
|
37
|
+
function parseRepoFromPrUrl(prUrl) {
|
|
38
|
+
if (!prUrl) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
const match = prUrl.match(/^https?:\/\/github\.com\/([^/]+\/[^/]+)\/pull\/\d+/i);
|
|
42
|
+
return match?.[1];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Build environment variables map from config and CLI options for QA
|
|
46
|
+
*/
|
|
47
|
+
export function buildEnvVars(config, options) {
|
|
48
|
+
// Start with base env vars shared by all job types
|
|
49
|
+
const env = buildBaseEnvVars(config, 'qa', options.dryRun);
|
|
50
|
+
// Runtime for QA (uses NW_QA_* variables)
|
|
51
|
+
env.NW_QA_MAX_RUNTIME = String(config.qa.maxRuntime);
|
|
52
|
+
// Branch patterns: use qa-specific if non-empty, else top-level
|
|
53
|
+
const branchPatterns = config.qa.branchPatterns.length > 0 ? config.qa.branchPatterns : config.branchPatterns;
|
|
54
|
+
env.NW_BRANCH_PATTERNS = branchPatterns.join(',');
|
|
55
|
+
// QA-specific settings
|
|
56
|
+
env.NW_QA_SKIP_LABEL = config.qa.skipLabel;
|
|
57
|
+
env.NW_QA_VALIDATED_LABEL = config.qa.validatedLabel;
|
|
58
|
+
env.NW_QA_ARTIFACTS = config.qa.artifacts;
|
|
59
|
+
env.NW_QA_AUTO_INSTALL_PLAYWRIGHT = config.qa.autoInstallPlaywright ? '1' : '0';
|
|
60
|
+
env.NW_CLAUDE_MODEL_ID =
|
|
61
|
+
CLAUDE_MODEL_IDS[config.primaryFallbackModel ?? config.claudeModel ?? 'sonnet'];
|
|
62
|
+
// Telegram status messages from bash scripts (start/progress/final status)
|
|
63
|
+
const telegramWebhooks = getTelegramStatusWebhooks(config);
|
|
64
|
+
if (telegramWebhooks.length > 0) {
|
|
65
|
+
env.NW_TELEGRAM_STATUS_WEBHOOKS = JSON.stringify(telegramWebhooks);
|
|
66
|
+
env.NW_TELEGRAM_BOT_TOKEN = telegramWebhooks[0].botToken;
|
|
67
|
+
env.NW_TELEGRAM_CHAT_ID = telegramWebhooks[0].chatId;
|
|
68
|
+
}
|
|
69
|
+
return env;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Apply CLI flag overrides to the config for QA
|
|
73
|
+
*/
|
|
74
|
+
export function applyCliOverrides(config, options) {
|
|
75
|
+
const overridden = { ...config, qa: { ...config.qa } };
|
|
76
|
+
if (options.timeout) {
|
|
77
|
+
const timeout = parseInt(options.timeout, 10);
|
|
78
|
+
if (!isNaN(timeout)) {
|
|
79
|
+
overridden.qa.maxRuntime = timeout;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (options.provider) {
|
|
83
|
+
// Use _cliProviderOverride to ensure CLI flag takes precedence over jobProviders
|
|
84
|
+
overridden._cliProviderOverride = options.provider;
|
|
85
|
+
}
|
|
86
|
+
return overridden;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Register the qa command with the program
|
|
90
|
+
*/
|
|
91
|
+
export function qaCommand(program) {
|
|
92
|
+
program
|
|
93
|
+
.command('qa')
|
|
94
|
+
.description('Run QA process now')
|
|
95
|
+
.option('--dry-run', 'Show what would be executed without running')
|
|
96
|
+
.option('--timeout <seconds>', 'Override max runtime in seconds for QA')
|
|
97
|
+
.option('--provider <string>', 'AI provider to use (claude or codex)')
|
|
98
|
+
.action(async (options) => {
|
|
99
|
+
// Get the project directory (current working directory)
|
|
100
|
+
const projectDir = process.cwd();
|
|
101
|
+
// Load config from file and environment
|
|
102
|
+
let config = loadConfig(projectDir);
|
|
103
|
+
// Apply CLI flag overrides
|
|
104
|
+
config = applyCliOverrides(config, options);
|
|
105
|
+
if (!config.qa.enabled && !options.dryRun) {
|
|
106
|
+
info('QA is disabled in config; skipping run.');
|
|
107
|
+
process.exit(0);
|
|
108
|
+
}
|
|
109
|
+
// Build environment variables
|
|
110
|
+
const envVars = buildEnvVars(config, options);
|
|
111
|
+
// Get the script path
|
|
112
|
+
const scriptPath = getScriptPath('night-watch-qa-cron.sh');
|
|
113
|
+
if (options.dryRun) {
|
|
114
|
+
header('Dry Run: QA Process');
|
|
115
|
+
// Resolve QA-specific provider
|
|
116
|
+
const qaProvider = resolveJobProvider(config, 'qa');
|
|
117
|
+
// Configuration section with table
|
|
118
|
+
header('Configuration');
|
|
119
|
+
const configTable = createTable({ head: ['Setting', 'Value'] });
|
|
120
|
+
configTable.push(['Provider', qaProvider]);
|
|
121
|
+
configTable.push(['Provider CLI', PROVIDER_COMMANDS[qaProvider]]);
|
|
122
|
+
configTable.push([
|
|
123
|
+
'Max Runtime',
|
|
124
|
+
`${config.qa.maxRuntime}s (${Math.floor(config.qa.maxRuntime / 60)}min)`,
|
|
125
|
+
]);
|
|
126
|
+
const branchPatterns = config.qa.branchPatterns.length > 0 ? config.qa.branchPatterns : config.branchPatterns;
|
|
127
|
+
configTable.push(['Branch Patterns', branchPatterns.join(', ')]);
|
|
128
|
+
configTable.push(['Skip Label', config.qa.skipLabel]);
|
|
129
|
+
configTable.push(['Validated Label', config.qa.validatedLabel]);
|
|
130
|
+
configTable.push(['Artifacts', config.qa.artifacts]);
|
|
131
|
+
configTable.push([
|
|
132
|
+
'Auto-install Playwright',
|
|
133
|
+
config.qa.autoInstallPlaywright ? 'Yes' : 'No',
|
|
134
|
+
]);
|
|
135
|
+
console.log(configTable.toString());
|
|
136
|
+
// Environment variables
|
|
137
|
+
header('Environment Variables');
|
|
138
|
+
for (const [key, value] of Object.entries(envVars)) {
|
|
139
|
+
dim(` ${key}=${value}`);
|
|
140
|
+
}
|
|
141
|
+
// Full command that would be executed
|
|
142
|
+
header('Command');
|
|
143
|
+
dim(` bash ${scriptPath} ${projectDir}`);
|
|
144
|
+
console.log();
|
|
145
|
+
process.exit(0);
|
|
146
|
+
}
|
|
147
|
+
// Execute the script with spinner
|
|
148
|
+
const spinner = createSpinner('Running QA process...');
|
|
149
|
+
spinner.start();
|
|
150
|
+
try {
|
|
151
|
+
await maybeApplyCronSchedulingDelay(config, 'qa', projectDir);
|
|
152
|
+
const { exitCode, stdout, stderr } = await executeScriptWithOutput(scriptPath, [projectDir], envVars);
|
|
153
|
+
const scriptResult = parseScriptResult(`${stdout}\n${stderr}`);
|
|
154
|
+
if (exitCode === 0) {
|
|
155
|
+
if (scriptResult?.status === 'queued') {
|
|
156
|
+
spinner.succeed('QA process queued — another job is currently running');
|
|
157
|
+
}
|
|
158
|
+
else if (scriptResult?.status?.startsWith('skip_')) {
|
|
159
|
+
spinner.succeed('QA process completed (no PRs needed QA)');
|
|
160
|
+
}
|
|
161
|
+
else if (scriptResult?.status === 'warning_qa') {
|
|
162
|
+
spinner.succeed('QA process completed with warnings');
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
spinner.succeed('QA process completed successfully');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
spinner.fail(`QA process exited with code ${exitCode}`);
|
|
170
|
+
}
|
|
171
|
+
// Send notifications (fire-and-forget, failures do not affect exit code)
|
|
172
|
+
if (!options.dryRun) {
|
|
173
|
+
const skipNotification = !shouldSendQaNotification(scriptResult?.status);
|
|
174
|
+
if (skipNotification) {
|
|
175
|
+
info('Skipping QA notification (no actionable QA result)');
|
|
176
|
+
}
|
|
177
|
+
if (!skipNotification) {
|
|
178
|
+
const qaPrNumbers = parseQaPrNumbers(scriptResult?.data.prs);
|
|
179
|
+
const primaryQaPr = qaPrNumbers[0];
|
|
180
|
+
const prDetails = primaryQaPr ? fetchPrDetailsByNumber(primaryQaPr, projectDir) : null;
|
|
181
|
+
const repo = scriptResult?.data.repo ?? parseRepoFromPrUrl(prDetails?.url);
|
|
182
|
+
const fallbackPrUrl = !prDetails?.url && primaryQaPr && repo
|
|
183
|
+
? `https://github.com/${repo}/pull/${primaryQaPr}`
|
|
184
|
+
: undefined;
|
|
185
|
+
const qaScreenshotUrls = primaryQaPr !== undefined
|
|
186
|
+
? fetchQaScreenshotUrlsForPr(primaryQaPr, projectDir, repo)
|
|
187
|
+
: [];
|
|
188
|
+
const _qaCtx = {
|
|
189
|
+
event: 'qa_completed',
|
|
190
|
+
projectName: path.basename(projectDir),
|
|
191
|
+
exitCode,
|
|
192
|
+
provider: formatProviderDisplay(envVars.NW_PROVIDER_CMD, envVars.NW_PROVIDER_LABEL),
|
|
193
|
+
prNumber: prDetails?.number ?? primaryQaPr,
|
|
194
|
+
prUrl: prDetails?.url ?? fallbackPrUrl,
|
|
195
|
+
prTitle: prDetails?.title,
|
|
196
|
+
prBody: prDetails?.body,
|
|
197
|
+
filesChanged: prDetails?.changedFiles,
|
|
198
|
+
additions: prDetails?.additions,
|
|
199
|
+
deletions: prDetails?.deletions,
|
|
200
|
+
qaScreenshotUrls,
|
|
201
|
+
};
|
|
202
|
+
await sendNotifications(config, _qaCtx);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
process.exit(exitCode);
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
spinner.fail('Failed to execute QA command');
|
|
209
|
+
uiError(`${err instanceof Error ? err.message : String(err)}`);
|
|
210
|
+
process.exit(1);
|
|
211
|
+
}
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=qa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qa.js","sourceRoot":"","sources":["../../src/commands/qa.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Queue command — manage the global job queue.
|
|
3
|
+
* Provides subcommands for viewing, clearing, and dispatching queued jobs.
|
|
4
|
+
*/
|
|
5
|
+
import { Command } from 'commander';
|
|
6
|
+
export declare function createQueueCommand(): Command;
|
|
7
|
+
export declare function queueCommand(program: Command): void;
|
|
8
|
+
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/commands/queue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DpC,wBAAgB,kBAAkB,IAAI,OAAO,CAyU5C;AAkED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEnD"}
|