@provartesting/provardx-cli 1.5.0-dev.2 → 1.5.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 +163 -12
- package/bin/mcp-start.js +74 -0
- package/lib/commands/provar/auth/clear.d.ts +7 -0
- package/lib/commands/provar/auth/clear.js +36 -0
- package/lib/commands/provar/auth/clear.js.map +1 -0
- package/lib/commands/provar/auth/login.d.ts +10 -0
- package/lib/commands/provar/auth/login.js +90 -0
- package/lib/commands/provar/auth/login.js.map +1 -0
- package/lib/commands/provar/auth/rotate.d.ts +7 -0
- package/lib/commands/provar/auth/rotate.js +42 -0
- package/lib/commands/provar/auth/rotate.js.map +1 -0
- package/lib/commands/provar/auth/status.d.ts +7 -0
- package/lib/commands/provar/auth/status.js +107 -0
- package/lib/commands/provar/auth/status.js.map +1 -0
- package/lib/commands/provar/mcp/start.d.ts +2 -0
- package/lib/commands/provar/mcp/start.js +14 -1
- package/lib/commands/provar/mcp/start.js.map +1 -1
- package/lib/mcp/docs/NITROX_CATALOG_SOURCE.json +6 -0
- package/lib/mcp/docs/NITROX_COMPONENT_CATALOG.md +2001 -0
- package/lib/mcp/docs/PROVAR_TEST_STEP_REFERENCE.md +1430 -0
- package/lib/mcp/docs/PROVAR_TOOL_GUIDE.md +175 -0
- package/lib/mcp/licensing/algasClient.js +14 -5
- package/lib/mcp/licensing/algasClient.js.map +1 -1
- package/lib/mcp/licensing/ideDetection.d.ts +0 -12
- package/lib/mcp/licensing/ideDetection.js +1 -73
- package/lib/mcp/licensing/ideDetection.js.map +1 -1
- package/lib/mcp/licensing/licenseCache.js +7 -1
- package/lib/mcp/licensing/licenseCache.js.map +1 -1
- package/lib/mcp/licensing/licenseValidator.d.ts +3 -3
- package/lib/mcp/licensing/licenseValidator.js +11 -4
- package/lib/mcp/licensing/licenseValidator.js.map +1 -1
- package/lib/mcp/prompts/guidePrompts.d.ts +4 -0
- package/lib/mcp/prompts/guidePrompts.js +324 -0
- package/lib/mcp/prompts/guidePrompts.js.map +1 -0
- package/lib/mcp/prompts/index.d.ts +2 -0
- package/lib/mcp/prompts/index.js +23 -0
- package/lib/mcp/prompts/index.js.map +1 -0
- package/lib/mcp/prompts/loopPrompts.d.ts +6 -0
- package/lib/mcp/prompts/loopPrompts.js +435 -0
- package/lib/mcp/prompts/loopPrompts.js.map +1 -0
- package/lib/mcp/prompts/migrationPrompts.d.ts +4 -0
- package/lib/mcp/prompts/migrationPrompts.js +207 -0
- package/lib/mcp/prompts/migrationPrompts.js.map +1 -0
- package/lib/mcp/rules/provar_best_practices_rules.json +256 -544
- package/lib/mcp/security/pathPolicy.d.ts +5 -0
- package/lib/mcp/security/pathPolicy.js +58 -3
- package/lib/mcp/security/pathPolicy.js.map +1 -1
- package/lib/mcp/server.d.ts +17 -0
- package/lib/mcp/server.js +151 -6
- package/lib/mcp/server.js.map +1 -1
- package/lib/mcp/tools/antTools.d.ts +15 -0
- package/lib/mcp/tools/antTools.js +347 -170
- package/lib/mcp/tools/antTools.js.map +1 -1
- package/lib/mcp/tools/automationTools.d.ts +18 -8
- package/lib/mcp/tools/automationTools.js +332 -176
- package/lib/mcp/tools/automationTools.js.map +1 -1
- package/lib/mcp/tools/bestPracticesEngine.js +161 -23
- package/lib/mcp/tools/bestPracticesEngine.js.map +1 -1
- package/lib/mcp/tools/connectionTools.d.ts +4 -0
- package/lib/mcp/tools/connectionTools.js +172 -0
- package/lib/mcp/tools/connectionTools.js.map +1 -0
- package/lib/mcp/tools/defectTools.d.ts +1 -1
- package/lib/mcp/tools/defectTools.js +56 -50
- package/lib/mcp/tools/defectTools.js.map +1 -1
- package/lib/mcp/tools/hierarchyValidate.d.ts +1 -1
- package/lib/mcp/tools/hierarchyValidate.js +127 -42
- package/lib/mcp/tools/hierarchyValidate.js.map +1 -1
- package/lib/mcp/tools/nitroXTools.d.ts +23 -0
- package/lib/mcp/tools/nitroXTools.js +823 -0
- package/lib/mcp/tools/nitroXTools.js.map +1 -0
- package/lib/mcp/tools/pageObjectGenerate.js +132 -57
- package/lib/mcp/tools/pageObjectGenerate.js.map +1 -1
- package/lib/mcp/tools/pageObjectValidate.js +136 -46
- package/lib/mcp/tools/pageObjectValidate.js.map +1 -1
- package/lib/mcp/tools/projectInspect.js +51 -30
- package/lib/mcp/tools/projectInspect.js.map +1 -1
- package/lib/mcp/tools/projectValidateFromPath.js +70 -49
- package/lib/mcp/tools/projectValidateFromPath.js.map +1 -1
- package/lib/mcp/tools/propertiesTools.d.ts +2 -0
- package/lib/mcp/tools/propertiesTools.js +332 -78
- package/lib/mcp/tools/propertiesTools.js.map +1 -1
- package/lib/mcp/tools/qualityHubApiTools.d.ts +3 -0
- package/lib/mcp/tools/qualityHubApiTools.js +138 -0
- package/lib/mcp/tools/qualityHubApiTools.js.map +1 -0
- package/lib/mcp/tools/qualityHubTools.js +219 -70
- package/lib/mcp/tools/qualityHubTools.js.map +1 -1
- package/lib/mcp/tools/rcaTools.d.ts +3 -2
- package/lib/mcp/tools/rcaTools.js +189 -56
- package/lib/mcp/tools/rcaTools.js.map +1 -1
- package/lib/mcp/tools/sfSpawn.d.ts +25 -3
- package/lib/mcp/tools/sfSpawn.js +154 -6
- package/lib/mcp/tools/sfSpawn.js.map +1 -1
- package/lib/mcp/tools/testCaseGenerate.js +226 -78
- package/lib/mcp/tools/testCaseGenerate.js.map +1 -1
- package/lib/mcp/tools/testCaseStepTools.d.ts +4 -0
- package/lib/mcp/tools/testCaseStepTools.js +226 -0
- package/lib/mcp/tools/testCaseStepTools.js.map +1 -0
- package/lib/mcp/tools/testCaseValidate.d.ts +11 -0
- package/lib/mcp/tools/testCaseValidate.js +300 -44
- package/lib/mcp/tools/testCaseValidate.js.map +1 -1
- package/lib/mcp/tools/testPlanTools.d.ts +1 -0
- package/lib/mcp/tools/testPlanTools.js +299 -59
- package/lib/mcp/tools/testPlanTools.js.map +1 -1
- package/lib/mcp/tools/testPlanValidate.js +56 -18
- package/lib/mcp/tools/testPlanValidate.js.map +1 -1
- package/lib/mcp/tools/testSuiteValidate.js +37 -11
- package/lib/mcp/tools/testSuiteValidate.js.map +1 -1
- package/lib/mcp/update/updateChecker.d.ts +14 -0
- package/lib/mcp/update/updateChecker.js +228 -0
- package/lib/mcp/update/updateChecker.js.map +1 -0
- package/lib/services/auth/credentials.d.ts +21 -0
- package/lib/services/auth/credentials.js +75 -0
- package/lib/services/auth/credentials.js.map +1 -0
- package/lib/services/auth/loginFlow.d.ts +68 -0
- package/lib/services/auth/loginFlow.js +216 -0
- package/lib/services/auth/loginFlow.js.map +1 -0
- package/lib/services/projectValidation.d.ts +5 -2
- package/lib/services/projectValidation.js +83 -31
- package/lib/services/projectValidation.js.map +1 -1
- package/lib/services/qualityHub/client.d.ts +161 -0
- package/lib/services/qualityHub/client.js +226 -0
- package/lib/services/qualityHub/client.js.map +1 -0
- package/messages/sf.provar.auth.clear.md +16 -0
- package/messages/sf.provar.auth.login.md +31 -0
- package/messages/sf.provar.auth.rotate.md +23 -0
- package/messages/sf.provar.auth.status.md +16 -0
- package/messages/sf.provar.mcp.start.md +83 -48
- package/oclif.manifest.json +325 -28
- package/package.json +23 -12
|
@@ -13,16 +13,20 @@ import { assertPathAllowed, PathPolicyError } from '../security/pathPolicy.js';
|
|
|
13
13
|
import { makeError, makeRequestId } from '../schemas/common.js';
|
|
14
14
|
import { log } from '../logging/logger.js';
|
|
15
15
|
export function registerPageObjectValidate(server, config) {
|
|
16
|
-
server.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
.string()
|
|
21
|
-
.optional()
|
|
22
|
-
|
|
16
|
+
server.registerTool('provar_pageobject_validate', {
|
|
17
|
+
title: 'Validate Page Object',
|
|
18
|
+
description: 'Validate a Provar Java Page Object against naming conventions, locator best practices, and structural requirements. Returns quality score (0–100) and list of issues.',
|
|
19
|
+
inputSchema: {
|
|
20
|
+
content: z.string().optional().describe('Java source code to validate directly'),
|
|
21
|
+
file_path: z.string().optional().describe('Path to .java Page Object file'),
|
|
22
|
+
expected_class_name: z
|
|
23
|
+
.string()
|
|
24
|
+
.optional()
|
|
25
|
+
.describe('Expected class name for PO_006 check; inferred from file_path when omitted'),
|
|
26
|
+
},
|
|
23
27
|
}, ({ content, file_path, expected_class_name }) => {
|
|
24
28
|
const requestId = makeRequestId();
|
|
25
|
-
log('info', '
|
|
29
|
+
log('info', 'provar_pageobject_validate', { requestId, has_content: !!content, file_path });
|
|
26
30
|
try {
|
|
27
31
|
let source = content;
|
|
28
32
|
let inferredClassName = expected_class_name;
|
|
@@ -52,29 +56,88 @@ export function registerPageObjectValidate(server, config) {
|
|
|
52
56
|
catch (err) {
|
|
53
57
|
const error = err;
|
|
54
58
|
const errResult = makeError(error instanceof PathPolicyError ? error.code : 'VALIDATE_ERROR', error.message, requestId, false);
|
|
55
|
-
log('error', '
|
|
59
|
+
log('error', 'provar_pageobject_validate failed', { requestId, error: error.message });
|
|
56
60
|
return { isError: true, content: [{ type: 'text', text: JSON.stringify(errResult) }] };
|
|
57
61
|
}
|
|
58
62
|
});
|
|
59
63
|
}
|
|
60
64
|
// ── Validator (ported from quality-hub-agents/lambda/src/validator/page_object_validator.py) ──
|
|
61
65
|
const VALID_LOCATOR_STRATEGIES = new Set([
|
|
62
|
-
'xpath',
|
|
63
|
-
'
|
|
66
|
+
'xpath',
|
|
67
|
+
'id',
|
|
68
|
+
'css',
|
|
69
|
+
'name',
|
|
70
|
+
'className',
|
|
71
|
+
'tagName',
|
|
72
|
+
'linkText',
|
|
73
|
+
'partialLinkText',
|
|
74
|
+
'visualforce',
|
|
75
|
+
'label',
|
|
64
76
|
]);
|
|
65
77
|
const VALID_ELEMENT_TYPES = new Set([
|
|
66
|
-
'TextType',
|
|
67
|
-
'
|
|
78
|
+
'TextType',
|
|
79
|
+
'ButtonType',
|
|
80
|
+
'LinkType',
|
|
81
|
+
'ChoiceListType',
|
|
82
|
+
'RadioType',
|
|
83
|
+
'FileType',
|
|
84
|
+
'DateType',
|
|
85
|
+
'RichTextType',
|
|
86
|
+
'BooleanType',
|
|
68
87
|
]);
|
|
69
88
|
const PASCAL_CASE_RE = /^[A-Z][A-Za-z0-9]*$/;
|
|
70
89
|
const VALID_JAVA_IDENT_RE = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
71
90
|
const JAVA_RESERVED = new Set([
|
|
72
|
-
'abstract',
|
|
73
|
-
'
|
|
74
|
-
'
|
|
75
|
-
'
|
|
76
|
-
'
|
|
77
|
-
'
|
|
91
|
+
'abstract',
|
|
92
|
+
'assert',
|
|
93
|
+
'boolean',
|
|
94
|
+
'break',
|
|
95
|
+
'byte',
|
|
96
|
+
'case',
|
|
97
|
+
'catch',
|
|
98
|
+
'char',
|
|
99
|
+
'class',
|
|
100
|
+
'const',
|
|
101
|
+
'continue',
|
|
102
|
+
'default',
|
|
103
|
+
'do',
|
|
104
|
+
'double',
|
|
105
|
+
'else',
|
|
106
|
+
'enum',
|
|
107
|
+
'extends',
|
|
108
|
+
'final',
|
|
109
|
+
'finally',
|
|
110
|
+
'float',
|
|
111
|
+
'for',
|
|
112
|
+
'goto',
|
|
113
|
+
'if',
|
|
114
|
+
'implements',
|
|
115
|
+
'import',
|
|
116
|
+
'instanceof',
|
|
117
|
+
'int',
|
|
118
|
+
'interface',
|
|
119
|
+
'long',
|
|
120
|
+
'native',
|
|
121
|
+
'new',
|
|
122
|
+
'package',
|
|
123
|
+
'private',
|
|
124
|
+
'protected',
|
|
125
|
+
'public',
|
|
126
|
+
'return',
|
|
127
|
+
'short',
|
|
128
|
+
'static',
|
|
129
|
+
'strictfp',
|
|
130
|
+
'super',
|
|
131
|
+
'switch',
|
|
132
|
+
'synchronized',
|
|
133
|
+
'this',
|
|
134
|
+
'throw',
|
|
135
|
+
'throws',
|
|
136
|
+
'transient',
|
|
137
|
+
'try',
|
|
138
|
+
'void',
|
|
139
|
+
'volatile',
|
|
140
|
+
'while',
|
|
78
141
|
]);
|
|
79
142
|
const SF_DYNAMIC_ATTRS_RE = /data-aura-rendered-by|data-aura-class|aura-id|data-component-id/i;
|
|
80
143
|
const INDEXED_XPATH_RE = /\[\d+\]/;
|
|
@@ -103,7 +166,8 @@ export function validatePageObject(source, expectedClassName) {
|
|
|
103
166
|
const packageName = packageMatch ? packageMatch[1] : null;
|
|
104
167
|
if (!packageMatch) {
|
|
105
168
|
issues.push({
|
|
106
|
-
rule_id: 'PO_001',
|
|
169
|
+
rule_id: 'PO_001',
|
|
170
|
+
severity: 'ERROR',
|
|
107
171
|
message: 'Missing package declaration.',
|
|
108
172
|
applies_to: 'class',
|
|
109
173
|
suggestion: "Add 'package pageobjects;' at the top of the file.",
|
|
@@ -111,7 +175,8 @@ export function validatePageObject(source, expectedClassName) {
|
|
|
111
175
|
}
|
|
112
176
|
else if (!/^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$/.test(packageName)) {
|
|
113
177
|
issues.push({
|
|
114
|
-
rule_id: 'PO_002',
|
|
178
|
+
rule_id: 'PO_002',
|
|
179
|
+
severity: 'ERROR',
|
|
115
180
|
message: `Invalid package name: "${packageName}".`,
|
|
116
181
|
applies_to: 'class',
|
|
117
182
|
suggestion: 'Package names should be valid lower-case Java identifiers separated by dots.',
|
|
@@ -124,7 +189,8 @@ export function validatePageObject(source, expectedClassName) {
|
|
|
124
189
|
const closeBraces = (stripped.match(/\}/g) ?? []).length;
|
|
125
190
|
if (openBraces !== closeBraces) {
|
|
126
191
|
issues.push({
|
|
127
|
-
rule_id: 'PO_060',
|
|
192
|
+
rule_id: 'PO_060',
|
|
193
|
+
severity: 'ERROR',
|
|
128
194
|
message: `Mismatched braces: ${openBraces} opening vs ${closeBraces} closing.`,
|
|
129
195
|
applies_to: 'class',
|
|
130
196
|
suggestion: 'Check for missing or extra curly braces.',
|
|
@@ -133,7 +199,8 @@ export function validatePageObject(source, expectedClassName) {
|
|
|
133
199
|
// ── Imports ──────────────────────────────────────────────────────────────────
|
|
134
200
|
if (!stripped.includes('import com.provar.core.testapi.annotations')) {
|
|
135
201
|
issues.push({
|
|
136
|
-
rule_id: 'PO_012',
|
|
202
|
+
rule_id: 'PO_012',
|
|
203
|
+
severity: 'WARNING',
|
|
137
204
|
message: 'Missing import for Provar annotations.',
|
|
138
205
|
applies_to: 'class',
|
|
139
206
|
suggestion: "Add 'import com.provar.core.testapi.annotations.*;'",
|
|
@@ -147,7 +214,8 @@ export function validatePageObject(source, expectedClassName) {
|
|
|
147
214
|
const fields = extractFields(source);
|
|
148
215
|
if (fields.length === 0 && !issues.some((i) => i.rule_id === 'PO_003')) {
|
|
149
216
|
issues.push({
|
|
150
|
-
rule_id: 'PO_030',
|
|
217
|
+
rule_id: 'PO_030',
|
|
218
|
+
severity: 'WARNING',
|
|
151
219
|
message: 'No WebElement or WebComponent fields found.',
|
|
152
220
|
applies_to: 'class',
|
|
153
221
|
suggestion: 'Add at least one WebElement field with @FindBy locator and type annotation.',
|
|
@@ -159,7 +227,8 @@ export function validatePageObject(source, expectedClassName) {
|
|
|
159
227
|
// ── Commented code ───────────────────────────────────────────────────────────
|
|
160
228
|
if (/\/\/\s*(public|private|protected|@FindBy|WebElement|@\w+Type)/.test(source)) {
|
|
161
229
|
issues.push({
|
|
162
|
-
rule_id: 'PO_080',
|
|
230
|
+
rule_id: 'PO_080',
|
|
231
|
+
severity: 'INFO',
|
|
163
232
|
message: 'Commented-out code detected.',
|
|
164
233
|
applies_to: 'class',
|
|
165
234
|
suggestion: 'Remove commented code. Use version control to track history.',
|
|
@@ -189,7 +258,8 @@ function checkClassDeclaration(stripped, expectedClassName, issues) {
|
|
|
189
258
|
const className = classMatch ? classMatch[1] : null;
|
|
190
259
|
if (!classMatch) {
|
|
191
260
|
issues.push({
|
|
192
|
-
rule_id: 'PO_003',
|
|
261
|
+
rule_id: 'PO_003',
|
|
262
|
+
severity: 'ERROR',
|
|
193
263
|
message: 'Missing public class declaration.',
|
|
194
264
|
applies_to: 'class',
|
|
195
265
|
suggestion: "Ensure the file has a 'public class ClassName' declaration.",
|
|
@@ -198,7 +268,8 @@ function checkClassDeclaration(stripped, expectedClassName, issues) {
|
|
|
198
268
|
else {
|
|
199
269
|
if (!PASCAL_CASE_RE.test(className)) {
|
|
200
270
|
issues.push({
|
|
201
|
-
rule_id: 'PO_004',
|
|
271
|
+
rule_id: 'PO_004',
|
|
272
|
+
severity: 'WARNING',
|
|
202
273
|
message: `Class name "${className}" is not PascalCase.`,
|
|
203
274
|
applies_to: 'class',
|
|
204
275
|
suggestion: "Rename to PascalCase (e.g., 'MyPageObject').",
|
|
@@ -206,7 +277,8 @@ function checkClassDeclaration(stripped, expectedClassName, issues) {
|
|
|
206
277
|
}
|
|
207
278
|
if (!VALID_JAVA_IDENT_RE.test(className)) {
|
|
208
279
|
issues.push({
|
|
209
|
-
rule_id: 'PO_005',
|
|
280
|
+
rule_id: 'PO_005',
|
|
281
|
+
severity: 'ERROR',
|
|
210
282
|
message: `Class name "${className}" is not a valid Java identifier.`,
|
|
211
283
|
applies_to: 'class',
|
|
212
284
|
suggestion: 'Class names must start with a letter, $, or _ and contain only letters, digits, $, or _.',
|
|
@@ -214,7 +286,8 @@ function checkClassDeclaration(stripped, expectedClassName, issues) {
|
|
|
214
286
|
}
|
|
215
287
|
if (expectedClassName && className !== expectedClassName) {
|
|
216
288
|
issues.push({
|
|
217
|
-
rule_id: 'PO_006',
|
|
289
|
+
rule_id: 'PO_006',
|
|
290
|
+
severity: 'ERROR',
|
|
218
291
|
message: `Class name "${className}" does not match expected "${expectedClassName}".`,
|
|
219
292
|
applies_to: 'class',
|
|
220
293
|
suggestion: 'Class name must match the filename.',
|
|
@@ -228,7 +301,8 @@ function checkAnnotations(stripped, issues) {
|
|
|
228
301
|
const hasSalesforceAnnotation = /@SalesforcePage\s*\(/.test(stripped);
|
|
229
302
|
if (!hasPageAnnotation && !hasSalesforceAnnotation) {
|
|
230
303
|
issues.push({
|
|
231
|
-
rule_id: 'PO_020',
|
|
304
|
+
rule_id: 'PO_020',
|
|
305
|
+
severity: 'WARNING',
|
|
232
306
|
message: 'Missing @Page or @SalesforcePage annotation.',
|
|
233
307
|
applies_to: 'annotation',
|
|
234
308
|
suggestion: 'Add @Page annotation before the class declaration.',
|
|
@@ -238,7 +312,8 @@ function checkAnnotations(stripped, issues) {
|
|
|
238
312
|
const m = /@Page\s*\(([^)]*)\)/.exec(stripped);
|
|
239
313
|
if (m && !m[1].includes('title')) {
|
|
240
314
|
issues.push({
|
|
241
|
-
rule_id: 'PO_021',
|
|
315
|
+
rule_id: 'PO_021',
|
|
316
|
+
severity: 'WARNING',
|
|
242
317
|
message: '@Page annotation missing title attribute.',
|
|
243
318
|
applies_to: 'annotation',
|
|
244
319
|
suggestion: 'Add title attribute to @Page annotation.',
|
|
@@ -250,7 +325,8 @@ function checkAnnotations(stripped, issues) {
|
|
|
250
325
|
if (m) {
|
|
251
326
|
if (!m[1].includes('title') || !m[1].includes('connection')) {
|
|
252
327
|
issues.push({
|
|
253
|
-
rule_id: 'PO_022',
|
|
328
|
+
rule_id: 'PO_022',
|
|
329
|
+
severity: 'ERROR',
|
|
254
330
|
message: '@SalesforcePage missing required title or connection attribute.',
|
|
255
331
|
applies_to: 'annotation',
|
|
256
332
|
suggestion: 'Add required attributes to @SalesforcePage annotation.',
|
|
@@ -259,7 +335,8 @@ function checkAnnotations(stripped, issues) {
|
|
|
259
335
|
const pageTypes = ['page', 'auraComponent', 'object', 'lightningWebComponent'];
|
|
260
336
|
if (!pageTypes.some((t) => m[1].includes(t))) {
|
|
261
337
|
issues.push({
|
|
262
|
-
rule_id: 'PO_023',
|
|
338
|
+
rule_id: 'PO_023',
|
|
339
|
+
severity: 'WARNING',
|
|
263
340
|
message: '@SalesforcePage should specify page type attribute.',
|
|
264
341
|
applies_to: 'annotation',
|
|
265
342
|
suggestion: 'Add one of: page, auraComponent, object, or lightningWebComponent.',
|
|
@@ -274,7 +351,8 @@ function validateFields(fields, hasSalesforceAnnotation, issues) {
|
|
|
274
351
|
for (const field of fields) {
|
|
275
352
|
if (fieldNames.has(field.name)) {
|
|
276
353
|
issues.push({
|
|
277
|
-
rule_id: 'PO_031',
|
|
354
|
+
rule_id: 'PO_031',
|
|
355
|
+
severity: 'ERROR',
|
|
278
356
|
message: `Duplicate field name: "${field.name}".`,
|
|
279
357
|
applies_to: 'field',
|
|
280
358
|
suggestion: 'Rename one of the duplicate fields.',
|
|
@@ -285,7 +363,8 @@ function validateFields(fields, hasSalesforceAnnotation, issues) {
|
|
|
285
363
|
}
|
|
286
364
|
if (!VALID_JAVA_IDENT_RE.test(field.name)) {
|
|
287
365
|
issues.push({
|
|
288
|
-
rule_id: 'PO_032',
|
|
366
|
+
rule_id: 'PO_032',
|
|
367
|
+
severity: 'ERROR',
|
|
289
368
|
message: `Invalid field name: "${field.name}".`,
|
|
290
369
|
applies_to: 'field',
|
|
291
370
|
suggestion: 'Field names must be valid Java identifiers.',
|
|
@@ -293,7 +372,8 @@ function validateFields(fields, hasSalesforceAnnotation, issues) {
|
|
|
293
372
|
}
|
|
294
373
|
if (JAVA_RESERVED.has(field.name)) {
|
|
295
374
|
issues.push({
|
|
296
|
-
rule_id: 'PO_033',
|
|
375
|
+
rule_id: 'PO_033',
|
|
376
|
+
severity: 'ERROR',
|
|
297
377
|
message: `Field name "${field.name}" is a Java reserved word.`,
|
|
298
378
|
applies_to: 'field',
|
|
299
379
|
suggestion: 'Rename field to avoid Java reserved words.',
|
|
@@ -301,7 +381,8 @@ function validateFields(fields, hasSalesforceAnnotation, issues) {
|
|
|
301
381
|
}
|
|
302
382
|
if (field.locatorStrategy && !VALID_LOCATOR_STRATEGIES.has(field.locatorStrategy)) {
|
|
303
383
|
issues.push({
|
|
304
|
-
rule_id: 'PO_034',
|
|
384
|
+
rule_id: 'PO_034',
|
|
385
|
+
severity: 'ERROR',
|
|
305
386
|
message: `Invalid locator strategy: "${field.locatorStrategy}".`,
|
|
306
387
|
applies_to: 'field',
|
|
307
388
|
suggestion: 'Use one of: xpath, id, css, name, className, tagName, linkText, partialLinkText, visualforce, label.',
|
|
@@ -309,7 +390,8 @@ function validateFields(fields, hasSalesforceAnnotation, issues) {
|
|
|
309
390
|
}
|
|
310
391
|
if (field.elementType && !VALID_ELEMENT_TYPES.has(field.elementType)) {
|
|
311
392
|
issues.push({
|
|
312
|
-
rule_id: 'PO_036',
|
|
393
|
+
rule_id: 'PO_036',
|
|
394
|
+
severity: 'WARNING',
|
|
313
395
|
message: `Invalid element type: "@${field.elementType}". (CheckboxType is not valid — use BooleanType.)`,
|
|
314
396
|
applies_to: 'field',
|
|
315
397
|
suggestion: 'Use a valid Provar element type: TextType, ButtonType, LinkType, ChoiceListType, RadioType, FileType, DateType, RichTextType, BooleanType.',
|
|
@@ -325,7 +407,8 @@ function checkLocatorQuality(field, hasSalesforceAnnotation, issues) {
|
|
|
325
407
|
return;
|
|
326
408
|
if ((strat === 'xpath' || strat === '') && /^\/html|^\/body/i.test(lv)) {
|
|
327
409
|
issues.push({
|
|
328
|
-
rule_id: 'PO_071',
|
|
410
|
+
rule_id: 'PO_071',
|
|
411
|
+
severity: 'ERROR',
|
|
329
412
|
message: `Absolute XPath for field "${field.name}".`,
|
|
330
413
|
applies_to: 'field',
|
|
331
414
|
suggestion: 'Use relative XPath starting with // or .//',
|
|
@@ -333,7 +416,8 @@ function checkLocatorQuality(field, hasSalesforceAnnotation, issues) {
|
|
|
333
416
|
}
|
|
334
417
|
if (SF_DYNAMIC_ATTRS_RE.test(lv)) {
|
|
335
418
|
issues.push({
|
|
336
|
-
rule_id: 'PO_073',
|
|
419
|
+
rule_id: 'PO_073',
|
|
420
|
+
severity: 'ERROR',
|
|
337
421
|
message: `Salesforce dynamic attribute in locator for "${field.name}".`,
|
|
338
422
|
applies_to: 'field',
|
|
339
423
|
suggestion: 'Use stable identifiers like labels, data-testid, or semantic selectors.',
|
|
@@ -341,7 +425,8 @@ function checkLocatorQuality(field, hasSalesforceAnnotation, issues) {
|
|
|
341
425
|
}
|
|
342
426
|
if (strat === 'id' && hasSalesforceAnnotation) {
|
|
343
427
|
issues.push({
|
|
344
|
-
rule_id: 'PO_070',
|
|
428
|
+
rule_id: 'PO_070',
|
|
429
|
+
severity: 'WARNING',
|
|
345
430
|
message: `ID-based locator on Salesforce page for "${field.name}". IDs may be dynamic.`,
|
|
346
431
|
applies_to: 'field',
|
|
347
432
|
suggestion: 'Prefer xpath/css with stable attributes like data-testid, aria-label, name.',
|
|
@@ -349,7 +434,8 @@ function checkLocatorQuality(field, hasSalesforceAnnotation, issues) {
|
|
|
349
434
|
}
|
|
350
435
|
if (INDEXED_XPATH_RE.test(lv)) {
|
|
351
436
|
issues.push({
|
|
352
|
-
rule_id: 'PO_072',
|
|
437
|
+
rule_id: 'PO_072',
|
|
438
|
+
severity: 'WARNING',
|
|
353
439
|
message: `Indexed XPath [n] for field "${field.name}".`,
|
|
354
440
|
applies_to: 'field',
|
|
355
441
|
suggestion: 'Prefer attribute-based selection over positional indexes.',
|
|
@@ -359,7 +445,8 @@ function checkLocatorQuality(field, hasSalesforceAnnotation, issues) {
|
|
|
359
445
|
const segments = (lv.match(/\/{2}/g) ?? []).length;
|
|
360
446
|
if (segments > 4) {
|
|
361
447
|
issues.push({
|
|
362
|
-
rule_id: 'PO_076',
|
|
448
|
+
rule_id: 'PO_076',
|
|
449
|
+
severity: 'WARNING',
|
|
363
450
|
message: `Complex XPath (${segments} descent operators) for "${field.name}".`,
|
|
364
451
|
applies_to: 'field',
|
|
365
452
|
suggestion: 'Simplify with a more direct path or data-testid attributes.',
|
|
@@ -368,7 +455,8 @@ function checkLocatorQuality(field, hasSalesforceAnnotation, issues) {
|
|
|
368
455
|
}
|
|
369
456
|
if (POSITION_FN_RE.test(lv)) {
|
|
370
457
|
issues.push({
|
|
371
|
-
rule_id: 'PO_079',
|
|
458
|
+
rule_id: 'PO_079',
|
|
459
|
+
severity: 'WARNING',
|
|
372
460
|
message: `Position function (last/first/position) in XPath for "${field.name}".`,
|
|
373
461
|
applies_to: 'field',
|
|
374
462
|
suggestion: 'Use unique identifiers instead of position-based selection.',
|
|
@@ -376,7 +464,8 @@ function checkLocatorQuality(field, hasSalesforceAnnotation, issues) {
|
|
|
376
464
|
}
|
|
377
465
|
if (strat === 'css' && /[a-z0-9]+-[a-z0-9]+-[a-z0-9]+/.test(lv)) {
|
|
378
466
|
issues.push({
|
|
379
|
-
rule_id: 'PO_075',
|
|
467
|
+
rule_id: 'PO_075',
|
|
468
|
+
severity: 'INFO',
|
|
380
469
|
message: `Possibly autogenerated CSS class pattern for "${field.name}".`,
|
|
381
470
|
applies_to: 'field',
|
|
382
471
|
suggestion: 'Prefer stable attributes over autogenerated CSS classes.',
|
|
@@ -384,7 +473,8 @@ function checkLocatorQuality(field, hasSalesforceAnnotation, issues) {
|
|
|
384
473
|
}
|
|
385
474
|
if (lv.length > 200) {
|
|
386
475
|
issues.push({
|
|
387
|
-
rule_id: 'PO_078',
|
|
476
|
+
rule_id: 'PO_078',
|
|
477
|
+
severity: 'INFO',
|
|
388
478
|
message: `Very long locator (${lv.length} chars) for "${field.name}".`,
|
|
389
479
|
applies_to: 'field',
|
|
390
480
|
suggestion: 'Consider a shorter, more maintainable locator.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pageObjectValidate.js","sourceRoot":"","sources":["../../../src/mcp/tools/pageObjectValidate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pageObjectValidate.js","sourceRoot":"","sources":["../../../src/mcp/tools/pageObjectValidate.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,24 +12,26 @@ import { assertPathAllowed, PathPolicyError } from '../security/pathPolicy.js';
|
|
|
12
12
|
import { makeError, makeRequestId } from '../schemas/common.js';
|
|
13
13
|
import { log } from '../logging/logger.js';
|
|
14
14
|
export function registerProjectInspect(server, config) {
|
|
15
|
-
server.
|
|
16
|
-
'Inspect
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
15
|
+
server.registerTool('provar_project_inspect', {
|
|
16
|
+
title: 'Inspect Project',
|
|
17
|
+
description: [
|
|
18
|
+
'Inspect a Provar project folder and return a structured inventory.',
|
|
19
|
+
'Returns: provardx-properties.json config files (for ProvarDX CLI runs),',
|
|
20
|
+
'ANT build files (build.xml etc in ANT/ dirs, for CLI/pipeline runs),',
|
|
21
|
+
'source page object directories with Java file counts (src/pageobjects — compiled bin/ dirs excluded),',
|
|
22
|
+
'.testcase files found recursively under tests/,',
|
|
23
|
+
'count of custom test step files in src/customapis/,',
|
|
24
|
+
'count of data source files (CSV/XLSX/JSON) in data/ and templates/ dirs,',
|
|
25
|
+
'test plan coverage showing which test cases are covered vs uncovered,',
|
|
26
|
+
'and connection + environment overview parsed from the .testproject file',
|
|
27
|
+
'(Salesforce, UI Testing, Web Services, Quality Hub, Database, and other connection types).',
|
|
28
|
+
].join(' '),
|
|
29
|
+
inputSchema: {
|
|
30
|
+
project_path: z.string().describe('Absolute or relative path to the Provar project root directory'),
|
|
31
|
+
},
|
|
30
32
|
}, ({ project_path }) => {
|
|
31
33
|
const requestId = makeRequestId();
|
|
32
|
-
log('info', '
|
|
34
|
+
log('info', 'provar_project_inspect', { requestId, project_path });
|
|
33
35
|
try {
|
|
34
36
|
assertPathAllowed(project_path, config.allowedPaths);
|
|
35
37
|
const resolved = path.resolve(project_path);
|
|
@@ -45,8 +47,8 @@ export function registerProjectInspect(server, config) {
|
|
|
45
47
|
}
|
|
46
48
|
catch (err) {
|
|
47
49
|
const error = err;
|
|
48
|
-
const errResult = makeError(error instanceof PathPolicyError ? error.code :
|
|
49
|
-
log('error', '
|
|
50
|
+
const errResult = makeError(error instanceof PathPolicyError ? error.code : error.code ?? 'INSPECT_ERROR', error.message, requestId, false);
|
|
51
|
+
log('error', 'provar_project_inspect failed', { requestId, error: error.message });
|
|
50
52
|
return { isError: true, content: [{ type: 'text', text: JSON.stringify(errResult) }] };
|
|
51
53
|
}
|
|
52
54
|
});
|
|
@@ -216,7 +218,9 @@ function validateSecretsFile(projectPath, testProject) {
|
|
|
216
218
|
if (match?.[1])
|
|
217
219
|
secretsRelPath = match[1].trim();
|
|
218
220
|
}
|
|
219
|
-
catch {
|
|
221
|
+
catch {
|
|
222
|
+
/* use default */
|
|
223
|
+
}
|
|
220
224
|
}
|
|
221
225
|
const notFound = {
|
|
222
226
|
secrets_file: secretsRelPath,
|
|
@@ -386,10 +390,13 @@ function categoriseConnection(result, className, name, urls) {
|
|
|
386
390
|
// ── SF environment (org type) ─────────────────────────────────────────
|
|
387
391
|
const envMatch = primaryUrl.match(/(?:^|;)environment=([^;]+)/);
|
|
388
392
|
const envValue = envMatch?.[1]?.toUpperCase();
|
|
389
|
-
const sfEnvironment = envValue === 'SANDBOX'
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
+
const sfEnvironment = envValue === 'SANDBOX'
|
|
394
|
+
? 'sandbox'
|
|
395
|
+
: envValue === 'PROD_DEV'
|
|
396
|
+
? 'production-developer'
|
|
397
|
+
: envValue
|
|
398
|
+
? 'other'
|
|
399
|
+
: null;
|
|
393
400
|
result.salesforce.push({
|
|
394
401
|
name,
|
|
395
402
|
sub_type: subType,
|
|
@@ -483,11 +490,15 @@ function buildProjectTestCaseIdMap(projectPath) {
|
|
|
483
490
|
idMap.set(m[1], rel);
|
|
484
491
|
}
|
|
485
492
|
}
|
|
486
|
-
catch {
|
|
493
|
+
catch {
|
|
494
|
+
/* skip */
|
|
495
|
+
}
|
|
487
496
|
}
|
|
488
497
|
}
|
|
489
498
|
}
|
|
490
|
-
catch {
|
|
499
|
+
catch {
|
|
500
|
+
/* skip */
|
|
501
|
+
}
|
|
491
502
|
}
|
|
492
503
|
walk(testsDir);
|
|
493
504
|
return idMap;
|
|
@@ -551,7 +562,9 @@ function buildPlanCoverage(projectPath, allTestCasePaths) {
|
|
|
551
562
|
referencedPaths.add(resolvedPath);
|
|
552
563
|
}
|
|
553
564
|
}
|
|
554
|
-
catch {
|
|
565
|
+
catch {
|
|
566
|
+
/* skip */
|
|
567
|
+
}
|
|
555
568
|
return true;
|
|
556
569
|
}
|
|
557
570
|
return true;
|
|
@@ -584,7 +597,9 @@ function detectProvarHome(projectPath, provardxFiles, antFiles) {
|
|
|
584
597
|
return { provarHome: props['provarHome'], provarHomeSource: `provardx-properties.json (${rel})` };
|
|
585
598
|
}
|
|
586
599
|
}
|
|
587
|
-
catch {
|
|
600
|
+
catch {
|
|
601
|
+
/* skip */
|
|
602
|
+
}
|
|
588
603
|
}
|
|
589
604
|
// 3. ANT build.xml — <property name="provarHome" value="..." />
|
|
590
605
|
for (const rel of antFiles) {
|
|
@@ -597,7 +612,9 @@ function detectProvarHome(projectPath, provardxFiles, antFiles) {
|
|
|
597
612
|
if (match?.[1])
|
|
598
613
|
return { provarHome: match[1], provarHomeSource: `ANT build file (${rel})` };
|
|
599
614
|
}
|
|
600
|
-
catch {
|
|
615
|
+
catch {
|
|
616
|
+
/* skip */
|
|
617
|
+
}
|
|
601
618
|
}
|
|
602
619
|
return { provarHome: null, provarHomeSource: null };
|
|
603
620
|
}
|
|
@@ -615,7 +632,9 @@ function getTopLevelTestSuites(projectPath) {
|
|
|
615
632
|
suites.push(`${candidate}/${entry.name}`);
|
|
616
633
|
}
|
|
617
634
|
}
|
|
618
|
-
catch {
|
|
635
|
+
catch {
|
|
636
|
+
/* skip */
|
|
637
|
+
}
|
|
619
638
|
break;
|
|
620
639
|
}
|
|
621
640
|
return suites;
|
|
@@ -643,7 +662,9 @@ function countFilesRecursive(dir, filter) {
|
|
|
643
662
|
}
|
|
644
663
|
}
|
|
645
664
|
}
|
|
646
|
-
catch {
|
|
665
|
+
catch {
|
|
666
|
+
/* skip */
|
|
667
|
+
}
|
|
647
668
|
return count;
|
|
648
669
|
}
|
|
649
670
|
/**
|