@provartesting/provardx-cli 1.5.0-dev.1 → 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.
Files changed (129) hide show
  1. package/README.md +163 -13
  2. package/bin/mcp-start.js +74 -0
  3. package/lib/commands/provar/auth/clear.d.ts +7 -0
  4. package/lib/commands/provar/auth/clear.js +36 -0
  5. package/lib/commands/provar/auth/clear.js.map +1 -0
  6. package/lib/commands/provar/auth/login.d.ts +10 -0
  7. package/lib/commands/provar/auth/login.js +90 -0
  8. package/lib/commands/provar/auth/login.js.map +1 -0
  9. package/lib/commands/provar/auth/rotate.d.ts +7 -0
  10. package/lib/commands/provar/auth/rotate.js +42 -0
  11. package/lib/commands/provar/auth/rotate.js.map +1 -0
  12. package/lib/commands/provar/auth/status.d.ts +7 -0
  13. package/lib/commands/provar/auth/status.js +107 -0
  14. package/lib/commands/provar/auth/status.js.map +1 -0
  15. package/lib/commands/provar/mcp/start.d.ts +2 -0
  16. package/lib/commands/provar/mcp/start.js +14 -1
  17. package/lib/commands/provar/mcp/start.js.map +1 -1
  18. package/lib/mcp/docs/NITROX_CATALOG_SOURCE.json +6 -0
  19. package/lib/mcp/docs/NITROX_COMPONENT_CATALOG.md +2001 -0
  20. package/lib/mcp/docs/PROVAR_TEST_STEP_REFERENCE.md +1430 -0
  21. package/lib/mcp/docs/PROVAR_TOOL_GUIDE.md +175 -0
  22. package/lib/mcp/licensing/algasClient.js +14 -5
  23. package/lib/mcp/licensing/algasClient.js.map +1 -1
  24. package/lib/mcp/licensing/ideDetection.d.ts +0 -12
  25. package/lib/mcp/licensing/ideDetection.js +1 -73
  26. package/lib/mcp/licensing/ideDetection.js.map +1 -1
  27. package/lib/mcp/licensing/licenseCache.js +7 -1
  28. package/lib/mcp/licensing/licenseCache.js.map +1 -1
  29. package/lib/mcp/licensing/licenseValidator.d.ts +3 -3
  30. package/lib/mcp/licensing/licenseValidator.js +11 -4
  31. package/lib/mcp/licensing/licenseValidator.js.map +1 -1
  32. package/lib/mcp/prompts/guidePrompts.d.ts +4 -0
  33. package/lib/mcp/prompts/guidePrompts.js +324 -0
  34. package/lib/mcp/prompts/guidePrompts.js.map +1 -0
  35. package/lib/mcp/prompts/index.d.ts +2 -0
  36. package/lib/mcp/prompts/index.js +23 -0
  37. package/lib/mcp/prompts/index.js.map +1 -0
  38. package/lib/mcp/prompts/loopPrompts.d.ts +6 -0
  39. package/lib/mcp/prompts/loopPrompts.js +435 -0
  40. package/lib/mcp/prompts/loopPrompts.js.map +1 -0
  41. package/lib/mcp/prompts/migrationPrompts.d.ts +4 -0
  42. package/lib/mcp/prompts/migrationPrompts.js +207 -0
  43. package/lib/mcp/prompts/migrationPrompts.js.map +1 -0
  44. package/lib/mcp/rules/provar_best_practices_rules.json +256 -544
  45. package/lib/mcp/security/pathPolicy.d.ts +5 -0
  46. package/lib/mcp/security/pathPolicy.js +58 -3
  47. package/lib/mcp/security/pathPolicy.js.map +1 -1
  48. package/lib/mcp/server.d.ts +17 -0
  49. package/lib/mcp/server.js +151 -6
  50. package/lib/mcp/server.js.map +1 -1
  51. package/lib/mcp/tools/antTools.d.ts +15 -0
  52. package/lib/mcp/tools/antTools.js +347 -170
  53. package/lib/mcp/tools/antTools.js.map +1 -1
  54. package/lib/mcp/tools/automationTools.d.ts +18 -8
  55. package/lib/mcp/tools/automationTools.js +332 -176
  56. package/lib/mcp/tools/automationTools.js.map +1 -1
  57. package/lib/mcp/tools/bestPracticesEngine.js +161 -23
  58. package/lib/mcp/tools/bestPracticesEngine.js.map +1 -1
  59. package/lib/mcp/tools/connectionTools.d.ts +4 -0
  60. package/lib/mcp/tools/connectionTools.js +172 -0
  61. package/lib/mcp/tools/connectionTools.js.map +1 -0
  62. package/lib/mcp/tools/defectTools.d.ts +1 -1
  63. package/lib/mcp/tools/defectTools.js +56 -50
  64. package/lib/mcp/tools/defectTools.js.map +1 -1
  65. package/lib/mcp/tools/hierarchyValidate.d.ts +1 -1
  66. package/lib/mcp/tools/hierarchyValidate.js +127 -42
  67. package/lib/mcp/tools/hierarchyValidate.js.map +1 -1
  68. package/lib/mcp/tools/nitroXTools.d.ts +23 -0
  69. package/lib/mcp/tools/nitroXTools.js +823 -0
  70. package/lib/mcp/tools/nitroXTools.js.map +1 -0
  71. package/lib/mcp/tools/pageObjectGenerate.js +132 -57
  72. package/lib/mcp/tools/pageObjectGenerate.js.map +1 -1
  73. package/lib/mcp/tools/pageObjectValidate.js +136 -46
  74. package/lib/mcp/tools/pageObjectValidate.js.map +1 -1
  75. package/lib/mcp/tools/projectInspect.js +51 -30
  76. package/lib/mcp/tools/projectInspect.js.map +1 -1
  77. package/lib/mcp/tools/projectValidateFromPath.js +70 -49
  78. package/lib/mcp/tools/projectValidateFromPath.js.map +1 -1
  79. package/lib/mcp/tools/propertiesTools.d.ts +2 -0
  80. package/lib/mcp/tools/propertiesTools.js +332 -78
  81. package/lib/mcp/tools/propertiesTools.js.map +1 -1
  82. package/lib/mcp/tools/qualityHubApiTools.d.ts +3 -0
  83. package/lib/mcp/tools/qualityHubApiTools.js +138 -0
  84. package/lib/mcp/tools/qualityHubApiTools.js.map +1 -0
  85. package/lib/mcp/tools/qualityHubTools.js +219 -70
  86. package/lib/mcp/tools/qualityHubTools.js.map +1 -1
  87. package/lib/mcp/tools/rcaTools.d.ts +3 -2
  88. package/lib/mcp/tools/rcaTools.js +189 -56
  89. package/lib/mcp/tools/rcaTools.js.map +1 -1
  90. package/lib/mcp/tools/sfSpawn.d.ts +25 -3
  91. package/lib/mcp/tools/sfSpawn.js +154 -6
  92. package/lib/mcp/tools/sfSpawn.js.map +1 -1
  93. package/lib/mcp/tools/testCaseGenerate.js +226 -78
  94. package/lib/mcp/tools/testCaseGenerate.js.map +1 -1
  95. package/lib/mcp/tools/testCaseStepTools.d.ts +4 -0
  96. package/lib/mcp/tools/testCaseStepTools.js +226 -0
  97. package/lib/mcp/tools/testCaseStepTools.js.map +1 -0
  98. package/lib/mcp/tools/testCaseValidate.d.ts +11 -0
  99. package/lib/mcp/tools/testCaseValidate.js +307 -46
  100. package/lib/mcp/tools/testCaseValidate.js.map +1 -1
  101. package/lib/mcp/tools/testPlanTools.d.ts +1 -0
  102. package/lib/mcp/tools/testPlanTools.js +299 -59
  103. package/lib/mcp/tools/testPlanTools.js.map +1 -1
  104. package/lib/mcp/tools/testPlanValidate.js +56 -18
  105. package/lib/mcp/tools/testPlanValidate.js.map +1 -1
  106. package/lib/mcp/tools/testSuiteValidate.js +37 -11
  107. package/lib/mcp/tools/testSuiteValidate.js.map +1 -1
  108. package/lib/mcp/update/updateChecker.d.ts +14 -0
  109. package/lib/mcp/update/updateChecker.js +228 -0
  110. package/lib/mcp/update/updateChecker.js.map +1 -0
  111. package/lib/services/auth/credentials.d.ts +21 -0
  112. package/lib/services/auth/credentials.js +75 -0
  113. package/lib/services/auth/credentials.js.map +1 -0
  114. package/lib/services/auth/loginFlow.d.ts +68 -0
  115. package/lib/services/auth/loginFlow.js +216 -0
  116. package/lib/services/auth/loginFlow.js.map +1 -0
  117. package/lib/services/projectValidation.d.ts +5 -2
  118. package/lib/services/projectValidation.js +83 -31
  119. package/lib/services/projectValidation.js.map +1 -1
  120. package/lib/services/qualityHub/client.d.ts +161 -0
  121. package/lib/services/qualityHub/client.js +226 -0
  122. package/lib/services/qualityHub/client.js.map +1 -0
  123. package/messages/sf.provar.auth.clear.md +16 -0
  124. package/messages/sf.provar.auth.login.md +31 -0
  125. package/messages/sf.provar.auth.rotate.md +23 -0
  126. package/messages/sf.provar.auth.status.md +16 -0
  127. package/messages/sf.provar.mcp.start.md +83 -48
  128. package/oclif.manifest.json +299 -2
  129. 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.tool('provar.pageobject.validate', 'Validate a Provar Java Page Object against naming conventions, locator best practices, and structural requirements. Returns quality score (0–100) and list of issues.', {
17
- content: z.string().optional().describe('Java source code to validate directly'),
18
- file_path: z.string().optional().describe('Path to .java Page Object file'),
19
- expected_class_name: z
20
- .string()
21
- .optional()
22
- .describe('Expected class name for PO_006 check; inferred from file_path when omitted'),
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', 'provar.pageobject.validate', { requestId, has_content: !!content, file_path });
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', 'provar.pageobject.validate failed', { requestId, error: error.message });
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', 'id', 'css', 'name', 'className', 'tagName',
63
- 'linkText', 'partialLinkText', 'visualforce', 'label',
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', 'ButtonType', 'LinkType', 'ChoiceListType',
67
- 'RadioType', 'FileType', 'DateType', 'RichTextType', 'BooleanType',
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', 'assert', 'boolean', 'break', 'byte', 'case', 'catch', 'char', 'class',
73
- 'const', 'continue', 'default', 'do', 'double', 'else', 'enum', 'extends', 'final',
74
- 'finally', 'float', 'for', 'goto', 'if', 'implements', 'import', 'instanceof', 'int',
75
- 'interface', 'long', 'native', 'new', 'package', 'private', 'protected', 'public',
76
- 'return', 'short', 'static', 'strictfp', 'super', 'switch', 'synchronized', 'this',
77
- 'throw', 'throws', 'transient', 'try', 'void', 'volatile', 'while',
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', severity: 'ERROR',
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', severity: 'ERROR',
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', severity: 'ERROR',
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', severity: 'WARNING',
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', severity: 'WARNING',
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', severity: 'INFO',
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', severity: 'ERROR',
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', severity: 'WARNING',
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', severity: 'ERROR',
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', severity: 'ERROR',
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', severity: 'WARNING',
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', severity: 'WARNING',
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', severity: 'ERROR',
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', severity: 'WARNING',
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', severity: 'ERROR',
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', severity: 'ERROR',
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', severity: 'ERROR',
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', severity: 'ERROR',
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', severity: 'WARNING',
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', severity: 'ERROR',
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', severity: 'ERROR',
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', severity: 'WARNING',
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', severity: 'WARNING',
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', severity: 'WARNING',
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', severity: 'WARNING',
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', severity: 'INFO',
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', severity: 'INFO',
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.tool('provar.project.inspect', [
16
- 'Inspect a Provar project folder and return a structured inventory.',
17
- 'Returns: provardx-properties.json config files (for ProvarDX CLI runs),',
18
- 'ANT build files (build.xml etc in ANT/ dirs, for CLI/pipeline runs),',
19
- 'source page object directories with Java file counts (src/pageobjects compiled bin/ dirs excluded),',
20
- '.testcase files found recursively under tests/,',
21
- 'count of custom test step files in src/customapis/,',
22
- 'count of data source files (CSV/XLSX/JSON) in data/ and templates/ dirs,',
23
- 'test plan coverage showing which test cases are covered vs uncovered,',
24
- 'and connection + environment overview parsed from the .testproject file',
25
- '(Salesforce, UI Testing, Web Services, Quality Hub, Database, and other connection types).',
26
- ].join(' '), {
27
- project_path: z
28
- .string()
29
- .describe('Absolute or relative path to the Provar project root directory'),
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', 'provar.project.inspect', { requestId, project_path });
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 : (error.code ?? 'INSPECT_ERROR'), error.message, requestId, false);
49
- log('error', 'provar.project.inspect failed', { requestId, error: error.message });
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 { /* use default */ }
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' ? 'sandbox' :
390
- envValue === 'PROD_DEV' ? 'production-developer' :
391
- envValue ? 'other' :
392
- null;
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 { /* skip */ }
493
+ catch {
494
+ /* skip */
495
+ }
487
496
  }
488
497
  }
489
498
  }
490
- catch { /* skip */ }
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 { /* skip */ }
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 { /* skip */ }
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 { /* skip */ }
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 { /* skip */ }
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 { /* skip */ }
665
+ catch {
666
+ /* skip */
667
+ }
647
668
  return count;
648
669
  }
649
670
  /**