@provartesting/provardx-cli 1.5.0-beta.1 → 1.5.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +137 -13
  2. package/lib/commands/provar/auth/clear.d.ts +7 -0
  3. package/lib/commands/provar/auth/clear.js +36 -0
  4. package/lib/commands/provar/auth/clear.js.map +1 -0
  5. package/lib/commands/provar/auth/login.d.ts +10 -0
  6. package/lib/commands/provar/auth/login.js +90 -0
  7. package/lib/commands/provar/auth/login.js.map +1 -0
  8. package/lib/commands/provar/auth/rotate.d.ts +7 -0
  9. package/lib/commands/provar/auth/rotate.js +42 -0
  10. package/lib/commands/provar/auth/rotate.js.map +1 -0
  11. package/lib/commands/provar/auth/status.d.ts +7 -0
  12. package/lib/commands/provar/auth/status.js +107 -0
  13. package/lib/commands/provar/auth/status.js.map +1 -0
  14. package/lib/mcp/docs/PROVAR_TEST_STEP_REFERENCE.md +1430 -0
  15. package/lib/mcp/licensing/licenseValidator.d.ts +3 -3
  16. package/lib/mcp/licensing/licenseValidator.js +4 -4
  17. package/lib/mcp/prompts/index.d.ts +2 -0
  18. package/lib/mcp/prompts/index.js +19 -0
  19. package/lib/mcp/prompts/index.js.map +1 -0
  20. package/lib/mcp/prompts/loopPrompts.d.ts +6 -0
  21. package/lib/mcp/prompts/loopPrompts.js +435 -0
  22. package/lib/mcp/prompts/loopPrompts.js.map +1 -0
  23. package/lib/mcp/prompts/migrationPrompts.d.ts +4 -0
  24. package/lib/mcp/prompts/migrationPrompts.js +207 -0
  25. package/lib/mcp/prompts/migrationPrompts.js.map +1 -0
  26. package/lib/mcp/rules/provar_best_practices_rules.json +256 -544
  27. package/lib/mcp/server.js +45 -1
  28. package/lib/mcp/server.js.map +1 -1
  29. package/lib/mcp/tools/antTools.d.ts +15 -0
  30. package/lib/mcp/tools/antTools.js +204 -50
  31. package/lib/mcp/tools/antTools.js.map +1 -1
  32. package/lib/mcp/tools/automationTools.d.ts +36 -3
  33. package/lib/mcp/tools/automationTools.js +335 -42
  34. package/lib/mcp/tools/automationTools.js.map +1 -1
  35. package/lib/mcp/tools/bestPracticesEngine.js +161 -23
  36. package/lib/mcp/tools/bestPracticesEngine.js.map +1 -1
  37. package/lib/mcp/tools/connectionTools.d.ts +4 -0
  38. package/lib/mcp/tools/connectionTools.js +168 -0
  39. package/lib/mcp/tools/connectionTools.js.map +1 -0
  40. package/lib/mcp/tools/nitroXTools.d.ts +22 -0
  41. package/lib/mcp/tools/nitroXTools.js +750 -0
  42. package/lib/mcp/tools/nitroXTools.js.map +1 -0
  43. package/lib/mcp/tools/pageObjectGenerate.js +103 -35
  44. package/lib/mcp/tools/pageObjectGenerate.js.map +1 -1
  45. package/lib/mcp/tools/propertiesTools.d.ts +2 -0
  46. package/lib/mcp/tools/propertiesTools.js +277 -39
  47. package/lib/mcp/tools/propertiesTools.js.map +1 -1
  48. package/lib/mcp/tools/qualityHubApiTools.d.ts +3 -0
  49. package/lib/mcp/tools/qualityHubApiTools.js +134 -0
  50. package/lib/mcp/tools/qualityHubApiTools.js.map +1 -0
  51. package/lib/mcp/tools/qualityHubTools.js +127 -19
  52. package/lib/mcp/tools/qualityHubTools.js.map +1 -1
  53. package/lib/mcp/tools/rcaTools.d.ts +3 -2
  54. package/lib/mcp/tools/rcaTools.js +145 -20
  55. package/lib/mcp/tools/rcaTools.js.map +1 -1
  56. package/lib/mcp/tools/testCaseGenerate.js +88 -59
  57. package/lib/mcp/tools/testCaseGenerate.js.map +1 -1
  58. package/lib/mcp/tools/testCaseStepTools.d.ts +4 -0
  59. package/lib/mcp/tools/testCaseStepTools.js +221 -0
  60. package/lib/mcp/tools/testCaseStepTools.js.map +1 -0
  61. package/lib/mcp/tools/testCaseValidate.d.ts +11 -0
  62. package/lib/mcp/tools/testCaseValidate.js +146 -19
  63. package/lib/mcp/tools/testCaseValidate.js.map +1 -1
  64. package/lib/services/auth/credentials.d.ts +21 -0
  65. package/lib/services/auth/credentials.js +75 -0
  66. package/lib/services/auth/credentials.js.map +1 -0
  67. package/lib/services/auth/loginFlow.d.ts +68 -0
  68. package/lib/services/auth/loginFlow.js +216 -0
  69. package/lib/services/auth/loginFlow.js.map +1 -0
  70. package/lib/services/qualityHub/client.d.ts +161 -0
  71. package/lib/services/qualityHub/client.js +226 -0
  72. package/lib/services/qualityHub/client.js.map +1 -0
  73. package/messages/sf.provar.auth.clear.md +16 -0
  74. package/messages/sf.provar.auth.login.md +31 -0
  75. package/messages/sf.provar.auth.rotate.md +23 -0
  76. package/messages/sf.provar.auth.status.md +16 -0
  77. package/oclif.manifest.json +214 -1
  78. package/package.json +8 -4
@@ -10,6 +10,7 @@ import os from 'node:os';
10
10
  import path from 'node:path';
11
11
  import { z } from 'zod';
12
12
  import { XMLParser } from 'fast-xml-parser';
13
+ import { assertPathAllowed, PathPolicyError } from '../security/pathPolicy.js';
13
14
  import { makeError, makeRequestId } from '../schemas/common.js';
14
15
  import { log } from '../logging/logger.js';
15
16
  const RCA_RULES = [
@@ -37,6 +38,36 @@ const RCA_RULES = [
37
38
  summary: 'Test assertion failed',
38
39
  recommendation: 'Verify expected value is correct for current org state',
39
40
  },
41
+ {
42
+ category: 'SALESFORCE_VALIDATION',
43
+ pattern: /Required fields are missing:\s*\[/i,
44
+ summary: 'Salesforce required-field validation failed',
45
+ recommendation: 'Ensure all required fields have values; check field-level security for the running user',
46
+ },
47
+ {
48
+ category: 'SALESFORCE_PICKLIST',
49
+ pattern: /bad value for restricted picklist field/i,
50
+ summary: 'Invalid picklist value used',
51
+ recommendation: 'Query valid picklist values (run metadata download or Apex describe); check for trailing spaces or case differences',
52
+ },
53
+ {
54
+ category: 'SALESFORCE_REFERENCE',
55
+ pattern: /INVALID_CROSS_REFERENCE_KEY/i,
56
+ summary: 'Referenced record ID does not exist or is inaccessible',
57
+ recommendation: 'Verify the referenced record exists and the running user has access to it',
58
+ },
59
+ {
60
+ category: 'SALESFORCE_ACCESS',
61
+ pattern: /INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY/i,
62
+ summary: 'Running user lacks permission on a referenced record',
63
+ recommendation: 'Grant the running user appropriate object and record-level permissions',
64
+ },
65
+ {
66
+ category: 'SALESFORCE_TRIGGER',
67
+ pattern: /FIELD_CUSTOM_VALIDATION_EXCEPTION/i,
68
+ summary: 'A Salesforce validation rule or trigger blocked the DML operation',
69
+ recommendation: 'Review validation rules and triggers on the target object; ensure test data satisfies all business rules',
70
+ },
40
71
  {
41
72
  category: 'CREDENTIAL_FAILURE',
42
73
  pattern: /InvalidPasswordException|AuthenticationException|INVALID_LOGIN/i,
@@ -143,6 +174,30 @@ function numericChildDirs(dir) {
143
174
  return [];
144
175
  }
145
176
  }
177
+ /**
178
+ * Find Provar Increment-mode sibling directories next to resultsBase.
179
+ * Provar creates Results, Results(1), Results(2), … as siblings in the same
180
+ * parent directory — NOT as numeric children of Results. Returns the numeric
181
+ * suffixes of all matching siblings (e.g. [1, 2, 18]).
182
+ */
183
+ function incrementSiblingDirs(resultsBase) {
184
+ const parent = path.dirname(resultsBase);
185
+ const base = path.basename(resultsBase);
186
+ if (!fs.existsSync(parent))
187
+ return [];
188
+ try {
189
+ const safeName = base.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
190
+ const pattern = new RegExp(`^${safeName}\\((\\d+)\\)$`);
191
+ return fs
192
+ .readdirSync(parent, { withFileTypes: true })
193
+ .filter((e) => e.isDirectory() && pattern.test(e.name))
194
+ .map((e) => parseInt(pattern.exec(e.name)[1], 10))
195
+ .filter((n) => n > 0);
196
+ }
197
+ catch {
198
+ return [];
199
+ }
200
+ }
146
201
  /**
147
202
  * Expand ${env.VAR} placeholders in a string using process.env.
148
203
  */
@@ -240,8 +295,20 @@ function resolveResultsLocation(project_path, results_path, run_index) {
240
295
  };
241
296
  }
242
297
  // Increment resolution
298
+ // Provar's primary Increment pattern: Results, Results(1), Results(2)… as siblings.
299
+ // Legacy fallback: purely-numeric children (Results/1/, Results/2/…).
300
+ const siblings = incrementSiblingDirs(resultsBase);
243
301
  const numericDirs = numericChildDirs(resultsBase);
244
- if (disposition === 'Increment' || numericDirs.length > 0) {
302
+ if (disposition === 'Increment' || siblings.length > 0 || numericDirs.length > 0) {
303
+ if (siblings.length > 0) {
304
+ const targetIndex = run_index ?? Math.max(...siblings);
305
+ return {
306
+ results_dir: path.join(path.dirname(resultsBase), `${path.basename(resultsBase)}(${targetIndex})`),
307
+ run_index: targetIndex,
308
+ disposition,
309
+ resolution_source,
310
+ };
311
+ }
245
312
  if (numericDirs.length > 0) {
246
313
  const targetIndex = run_index ?? Math.max(...numericDirs);
247
314
  return {
@@ -251,7 +318,7 @@ function resolveResultsLocation(project_path, results_path, run_index) {
251
318
  resolution_source,
252
319
  };
253
320
  }
254
- // Disposition is Increment but no numeric subdirs yet — fall through to base
321
+ // Disposition is Increment but no numbered dirs yet — fall through to base
255
322
  }
256
323
  return {
257
324
  results_dir: resultsBase,
@@ -268,17 +335,17 @@ export function registerTestRunLocate(server) {
268
335
  'paths to per-test HTML reports, and any validation JSON files.',
269
336
  'Supports explicit results_path override or auto-detection from sf config, provardx properties file, or ANT build.xml.',
270
337
  ].join(' '), {
271
- project_path: z
272
- .string()
273
- .describe('Absolute path to the Provar project root'),
338
+ project_path: z.string().describe('Absolute path to the Provar project root'),
274
339
  results_path: z
275
340
  .string()
276
341
  .optional()
277
342
  .describe('Explicit override for the results base directory; if provided, skip auto-detection'),
278
343
  run_index: z
279
344
  .number()
345
+ .int()
346
+ .positive()
280
347
  .optional()
281
- .describe('Which Increment run to target (default: latest)'),
348
+ .describe('Which Increment run to target (default: latest); must be a positive integer'),
282
349
  }, (input) => {
283
350
  const requestId = makeRequestId();
284
351
  log('info', 'provar.testrun.report.locate', { requestId });
@@ -423,7 +490,8 @@ function collectValidationReports(projectPath) {
423
490
  if (!fs.existsSync(validationDir))
424
491
  return [];
425
492
  try {
426
- return fs.readdirSync(validationDir)
493
+ return fs
494
+ .readdirSync(validationDir)
427
495
  .filter((e) => e.endsWith('.json'))
428
496
  .map((e) => path.join(validationDir, e));
429
497
  }
@@ -456,9 +524,14 @@ function buildPriorFailureSet(resultsDir, resolvedRunIndex) {
456
524
  }
457
525
  function buildFailureReports(testcases, htmlFiles, screenshotDir, priorFailed) {
458
526
  const errorClassPatterns = [
459
- 'NoSuchElementException', 'TimeoutException', 'AssertionException',
460
- 'SessionNotCreatedException', 'WebDriverException', 'ClassNotFoundException',
461
- 'LicenseException', 'InvalidPasswordException',
527
+ 'NoSuchElementException',
528
+ 'TimeoutException',
529
+ 'AssertionException',
530
+ 'SessionNotCreatedException',
531
+ 'WebDriverException',
532
+ 'ClassNotFoundException',
533
+ 'LicenseException',
534
+ 'InvalidPasswordException',
462
535
  ];
463
536
  const reports = [];
464
537
  for (const tc of testcases) {
@@ -493,32 +566,55 @@ function buildFailureReports(testcases, htmlFiles, screenshotDir, priorFailed) {
493
566
  return reports;
494
567
  }
495
568
  // ── provar.testrun.rca tool ───────────────────────────────────────────────────
496
- export function registerTestRunRca(server) {
569
+ export function registerTestRunRca(server, config) {
497
570
  server.tool('provar.testrun.rca', [
498
571
  'Parse a completed Provar test run and produce a structured Root Cause Analysis (RCA) report.',
499
572
  'Resolves the results directory, parses JUnit.xml, classifies each failure by category,',
500
573
  'and produces recommendations. Use locate_only=true to skip parsing and just resolve artifact locations.',
574
+ 'Use mode="failures" to get a lightweight array of failed test cases',
575
+ '([{ testItemId, title, errorMessage }]) without the full RCA classification — useful when you',
576
+ 'need failure names quickly without loading the HTML report.',
501
577
  ].join(' '), {
502
- project_path: z
503
- .string()
504
- .describe('Absolute path to the Provar project root'),
578
+ project_path: z.string().describe('Absolute path to the Provar project root'),
505
579
  results_path: z
506
580
  .string()
507
581
  .optional()
508
- .describe('Explicit override for the results base directory'),
582
+ .describe('Explicit override for the results base directory; must be within --allowed-paths if provided'),
509
583
  run_index: z
510
584
  .number()
585
+ .int()
586
+ .positive()
511
587
  .optional()
512
- .describe('Which Increment run to target (default: latest)'),
588
+ .describe('Which Increment run to target (default: latest); must be a positive integer'),
513
589
  locate_only: z
514
590
  .boolean()
515
591
  .optional()
516
592
  .default(false)
517
593
  .describe('If true, skip parsing and return just artifact locations'),
594
+ mode: z
595
+ .enum(['rca', 'failures'])
596
+ .optional()
597
+ .default('rca')
598
+ .describe('"rca" (default): full root-cause analysis with classification and recommendations. ' +
599
+ '"failures": lightweight array of failed test cases [{ testItemId, title, errorMessage }].'),
518
600
  }, (input) => {
519
601
  const requestId = makeRequestId();
520
- log('info', 'provar.testrun.rca', { requestId, locate_only: input.locate_only });
602
+ log('info', 'provar.testrun.rca', { requestId, locate_only: input.locate_only, mode: input.mode });
521
603
  try {
604
+ // ── Path policy ──────────────────────────────────────────────────────
605
+ const pathsToCheck = [path.resolve(input.project_path)];
606
+ if (input.results_path)
607
+ pathsToCheck.push(input.results_path);
608
+ for (const p of pathsToCheck) {
609
+ try {
610
+ assertPathAllowed(p, config.allowedPaths);
611
+ }
612
+ catch (pErr) {
613
+ const e = pErr;
614
+ const err = makeError(e instanceof PathPolicyError ? e.code : 'PATH_NOT_ALLOWED', e.message, requestId);
615
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(err) }] };
616
+ }
617
+ }
522
618
  // ── Resolve location ─────────────────────────────────────────────────
523
619
  const resolved = resolveResultsLocation(input.project_path, input.results_path, input.run_index);
524
620
  if ('error' in resolved) {
@@ -549,11 +645,40 @@ export function registerTestRunRca(server) {
549
645
  };
550
646
  // ── locate_only shortcut ─────────────────────────────────────────────
551
647
  if (input.locate_only) {
552
- const result = { ...locateResult, rca_skipped: true, failures: [], infrastructure_issues: [], recommendations: [] };
648
+ const result = {
649
+ ...locateResult,
650
+ rca_skipped: true,
651
+ failures: [],
652
+ infrastructure_issues: [],
653
+ recommendations: [],
654
+ };
553
655
  return {
554
656
  content: [{ type: 'text', text: JSON.stringify(result) }],
555
657
  };
556
658
  }
659
+ // ── mode=failures: lightweight failure list ──────────────────────────
660
+ if (input.mode === 'failures') {
661
+ if (!junit_xml) {
662
+ const result = {
663
+ requestId,
664
+ results_dir,
665
+ failures: [],
666
+ details: { warning: 'JUnit.xml not found in results directory — no failure data available' },
667
+ };
668
+ return { content: [{ type: 'text', text: JSON.stringify(result) }] };
669
+ }
670
+ const xmlContent = fs.readFileSync(junit_xml, 'utf-8');
671
+ const parsed = parseJUnit(xmlContent);
672
+ const failures = parsed.testcases
673
+ .filter((tc) => tc.failureText !== null && !tc.isSkipped)
674
+ .map((tc) => ({
675
+ testItemId: tc.name,
676
+ title: tc.name,
677
+ errorMessage: (tc.failureText ?? '').slice(0, 500),
678
+ }));
679
+ const result = { requestId, results_dir, failures };
680
+ return { content: [{ type: 'text', text: JSON.stringify(result) }] };
681
+ }
557
682
  // ── Check JUnit.xml exists ───────────────────────────────────────────
558
683
  if (!junit_xml) {
559
684
  const result = {
@@ -613,8 +738,8 @@ export function registerTestRunRca(server) {
613
738
  });
614
739
  }
615
740
  // ── Registration entry point ──────────────────────────────────────────────────
616
- export function registerAllRcaTools(server) {
741
+ export function registerAllRcaTools(server, config) {
617
742
  registerTestRunLocate(server);
618
- registerTestRunRca(server);
743
+ registerTestRunRca(server, config);
619
744
  }
620
745
  //# sourceMappingURL=rcaTools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rcaTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/rcaTools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rcaTools.js","sourceRoot":"","sources":["../../../src/mcp/tools/rcaTools.ts"],"names":[],"mappings":"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"}
@@ -77,6 +77,9 @@ const StepSchema = z.object({
77
77
  const TOOL_DESCRIPTION = [
78
78
  'Generate a Provar XML test case skeleton with proper UUID v4 guids, sequential testItemId values, and <steps> structure.',
79
79
  'Returns XML content. Writes to disk only when dry_run=false.',
80
+ 'URI-aware generation: use target_uri to control the XML nesting structure.',
81
+ ' - sf:ui:target (or omit target_uri) → flat Salesforce XML structure (existing behaviour).',
82
+ ' - ui:pageobject:target?pageId=pageobjects.PageClass → wraps all steps in a UiWithScreen element targeting that non-SF page object.',
80
83
  'API IDs: shorthand forms (e.g. UiConnect, ApexSoqlQuery) are automatically expanded to fully-qualified IDs required by the Provar runtime.',
81
84
  'Step arguments: attributes are emitted as <arguments><argument id="..."><value .../></argument></arguments> — the only format the Provar runtime processes.',
82
85
  'Shorthand XML attributes on <apiCall> are silently ignored at runtime; always supply arguments via the attributes map.',
@@ -86,41 +89,42 @@ const TOOL_DESCRIPTION = [
86
89
  'ApexReadObject requires field names in attributes; omitting them produces MALFORMED_QUERY. Prefer ApexSoqlQuery.',
87
90
  'AssertValues on SOQL results: index paths like "ResultList[0].Field" are not supported.',
88
91
  'Use ForEach to iterate the result list, or SetValues to extract a field into a variable first.',
89
- 'Validation: the response always includes a validation field with is_valid, validity_score, quality_score, and any structural issues check this before attempting to run the test case.',
92
+ 'Validation: when validate_after_edit=true (default) the response includes a validation field and returns TESTCASE_INVALID if the generated XML fails structural checks.',
93
+ 'Grounding: call provar.qualityhub.examples.retrieve before generating to get corpus examples for the scenario — correct XML structure for the step types you need.',
90
94
  ].join(' ');
91
95
  export function registerTestCaseGenerate(server, config) {
92
96
  server.tool('provar.testcase.generate', TOOL_DESCRIPTION, {
93
97
  test_case_name: z.string().describe('Test case name (human-readable label)'),
94
- test_case_id: z
95
- .string()
96
- .optional()
97
- .describe('Explicit test case id; auto-generated UUID v4 if omitted'),
98
+ test_case_id: z.string().optional().describe('Explicit test case id; auto-generated UUID v4 if omitted'),
98
99
  steps: z.array(StepSchema).default([]).describe('Ordered list of test steps'),
99
- output_path: z
100
+ target_uri: z
100
101
  .string()
101
102
  .optional()
102
- .describe('Suggested file path for the .xml file (returned in response)'),
103
+ .describe('Page object URI that determines the XML nesting structure. ' +
104
+ 'Omit or use "sf:ui:target" for Salesforce targets (flat structure). ' +
105
+ 'Use "ui:pageobject:target?pageId=pageobjects.PageClass" for non-SF page objects — ' +
106
+ 'steps are wrapped in a UiWithScreen element targeting that class.'),
107
+ output_path: z.string().optional().describe('Suggested file path for the .xml file (returned in response)'),
103
108
  overwrite: z.boolean().default(false).describe('Overwrite if output_path file already exists'),
104
- dry_run: z
109
+ dry_run: z.boolean().default(true).describe('true = return XML only (default); false = write to output_path'),
110
+ validate_after_edit: z
105
111
  .boolean()
106
112
  .default(true)
107
- .describe('true = return XML only (default); false = write to output_path'),
108
- idempotency_key: z
109
- .string()
110
- .optional()
111
- .describe('Caller-provided key echoed back for deduplication tracking'),
113
+ .describe('Run structural validation after generation (default: true). ' +
114
+ 'Returns TESTCASE_INVALID error if the generated XML fails validation. ' +
115
+ 'Set false to skip validation and omit the validation field from the response.'),
116
+ idempotency_key: z.string().optional().describe('Caller-provided key echoed back for deduplication tracking'),
112
117
  }, (input) => {
113
118
  const requestId = makeRequestId();
114
119
  log('info', 'provar.testcase.generate', {
115
120
  requestId,
116
121
  test_case_name: input.test_case_name,
117
122
  dry_run: input.dry_run,
123
+ target_uri: input.target_uri,
118
124
  });
119
125
  try {
120
126
  const xmlContent = buildTestCaseXml(input);
121
- const filePath = input.output_path
122
- ? path.resolve(input.output_path)
123
- : undefined;
127
+ const filePath = input.output_path ? path.resolve(input.output_path) : undefined;
124
128
  let written = false;
125
129
  if (filePath && !input.dry_run) {
126
130
  assertPathAllowed(filePath, config.allowedPaths);
@@ -134,16 +138,8 @@ export function registerTestCaseGenerate(server, config) {
134
138
  log('info', 'provar.testcase.generate: wrote file', { requestId, filePath });
135
139
  }
136
140
  const warnings = buildStepWarnings(input.steps);
137
- const validationFull = validateTestCase(xmlContent, input.test_case_name);
138
- const validationSlim = {
139
- is_valid: validationFull.is_valid,
140
- validity_score: validationFull.validity_score,
141
- quality_score: validationFull.quality_score,
142
- error_count: validationFull.error_count,
143
- warning_count: validationFull.warning_count,
144
- issues: validationFull.issues,
145
- };
146
- const result = {
141
+ const runValidation = input.validate_after_edit !== false;
142
+ const baseResult = {
147
143
  requestId,
148
144
  xml_content: xmlContent,
149
145
  file_path: filePath,
@@ -151,71 +147,104 @@ export function registerTestCaseGenerate(server, config) {
151
147
  dry_run: input.dry_run,
152
148
  step_count: input.steps.length,
153
149
  idempotency_key: input.idempotency_key,
154
- validation: validationSlim,
155
150
  ...(warnings.length > 0 ? { warnings } : {}),
156
151
  };
152
+ if (runValidation) {
153
+ const validationFull = validateTestCase(xmlContent, input.test_case_name);
154
+ const validationSlim = {
155
+ is_valid: validationFull.is_valid,
156
+ validity_score: validationFull.validity_score,
157
+ quality_score: validationFull.quality_score,
158
+ error_count: validationFull.error_count,
159
+ warning_count: validationFull.warning_count,
160
+ issues: validationFull.issues,
161
+ };
162
+ if (!validationFull.is_valid) {
163
+ const errResult = makeError('TESTCASE_INVALID', `Generated test case failed structural validation (${validationFull.error_count} error(s)). See details.validation.`, requestId, false, { validation: validationSlim });
164
+ log('warn', 'provar.testcase.generate: TESTCASE_INVALID', { requestId });
165
+ return { isError: true, content: [{ type: 'text', text: JSON.stringify(errResult) }] };
166
+ }
167
+ const result = { ...baseResult, validation: validationSlim };
168
+ return {
169
+ content: [{ type: 'text', text: JSON.stringify(result) }],
170
+ structuredContent: result,
171
+ };
172
+ }
157
173
  return {
158
- content: [{ type: 'text', text: JSON.stringify(result) }],
159
- structuredContent: result,
174
+ content: [{ type: 'text', text: JSON.stringify(baseResult) }],
175
+ structuredContent: baseResult,
160
176
  };
161
177
  }
162
178
  catch (err) {
163
179
  const error = err;
164
- const errResult = makeError(error instanceof PathPolicyError ? error.code : (error.code ?? 'GENERATE_ERROR'), error.message, requestId, false);
180
+ const errResult = makeError(error instanceof PathPolicyError ? error.code : error.code ?? 'GENERATE_ERROR', error.message, requestId, false);
165
181
  log('error', 'provar.testcase.generate failed', { requestId, error: error.message });
166
182
  return { isError: true, content: [{ type: 'text', text: JSON.stringify(errResult) }] };
167
183
  }
168
184
  });
169
185
  }
170
186
  // ── XML builder ───────────────────────────────────────────────────────────────
171
- function buildArgumentsXml(attributes) {
187
+ function buildArgumentsXml(attributes, baseIndent = ' ') {
172
188
  const entries = Object.entries(attributes);
173
189
  if (entries.length === 0)
174
190
  return '';
175
191
  const argLines = entries
176
- .map(([k, v]) => ` <argument id="${escapeXmlAttr(k)}">\n` +
177
- ` <value class="value" valueClass="String">${escapeXmlContent(v)}</value>\n` +
178
- ' </argument>')
192
+ .map(([k, v]) => `${baseIndent}<argument id="${escapeXmlAttr(k)}">\n` +
193
+ `${baseIndent} <value class="value" valueClass="string">${escapeXmlContent(v)}</value>\n` +
194
+ `${baseIndent}</argument>`)
179
195
  .join('\n');
180
- return `\n <arguments>\n${argLines}\n </arguments>\n `;
196
+ return `\n${baseIndent}<arguments>\n${argLines}\n${baseIndent}</arguments>\n${baseIndent.slice(0, -2)}`;
197
+ }
198
+ function buildFlatStepXml(step, testItemId, indent) {
199
+ const guid = randomUUID();
200
+ const resolvedApiId = resolveApiId(step.api_id);
201
+ const argumentsXml = buildArgumentsXml(step.attributes, indent + ' ');
202
+ if (argumentsXml) {
203
+ return (`${indent}<apiCall guid="${guid}" apiId="${escapeXmlAttr(resolvedApiId)}"` +
204
+ ` name="${escapeXmlAttr(step.name)}" testItemId="${testItemId}">${argumentsXml}</apiCall>`);
205
+ }
206
+ return (`${indent}<apiCall guid="${guid}" apiId="${escapeXmlAttr(resolvedApiId)}"` +
207
+ ` name="${escapeXmlAttr(step.name)}" testItemId="${testItemId}"/>`);
181
208
  }
182
209
  function buildTestCaseXml(input) {
183
210
  const testCaseId = input.test_case_id ?? randomUUID();
184
211
  const testCaseGuid = randomUUID();
185
212
  const registryId = randomUUID();
186
- const stepLines = input.steps
187
- .map((step, i) => {
188
- const guid = randomUUID();
189
- const testItemId = i + 1;
190
- const resolvedApiId = resolveApiId(step.api_id);
191
- const argumentsXml = buildArgumentsXml(step.attributes);
192
- if (argumentsXml) {
193
- return (` <apiCall guid="${guid}" apiId="${escapeXmlAttr(resolvedApiId)}"` +
194
- ` name="${escapeXmlAttr(step.name)}" testItemId="${testItemId}">${argumentsXml}</apiCall>`);
195
- }
196
- return (` <apiCall guid="${guid}" apiId="${escapeXmlAttr(resolvedApiId)}"` +
197
- ` name="${escapeXmlAttr(step.name)}" testItemId="${testItemId}"/>`);
198
- })
199
- .join('\n');
213
+ let stepLines;
214
+ const isNonSf = !!input.target_uri && input.target_uri.startsWith('ui:');
215
+ if (isNonSf && input.target_uri) {
216
+ stepLines = buildUiWithScreenXml(input.steps, input.target_uri);
217
+ }
218
+ else {
219
+ const lines = input.steps.map((step, i) => buildFlatStepXml(step, i + 1, ' ')).join('\n');
220
+ stepLines = lines || ' <!-- TODO: Add test steps here -->';
221
+ }
200
222
  return ('<?xml version="1.0" encoding="UTF-8"?>\n' +
201
223
  `<testCase id="${testCaseId}" guid="${testCaseGuid}" registryId="${registryId}"` +
202
224
  ` name="${escapeXmlAttr(input.test_case_name)}">\n` +
203
225
  ' <steps>\n' +
204
- (stepLines || ' <!-- TODO: Add test steps here -->') +
226
+ stepLines +
205
227
  '\n </steps>\n' +
206
228
  '</testCase>\n');
207
229
  }
230
+ function buildUiWithScreenXml(steps, targetUri) {
231
+ const wrapperGuid = randomUUID();
232
+ const wrapperApiId = resolveApiId('UiWithScreen');
233
+ // Inner steps use testItemIds starting at 3; the substeps clause itself occupies testItemId=2
234
+ const innerLines = steps.map((step, i) => buildFlatStepXml(step, i + 3, ' ')).join('\n');
235
+ const stepsContent = innerLines ? `\n${innerLines}\n ` : '';
236
+ const clausesXml = '\n <clauses>\n' +
237
+ ' <clause name="substeps" testItemId="2">\n' +
238
+ ` <steps>${stepsContent}</steps>\n` +
239
+ ' </clause>\n' +
240
+ ' </clauses>\n ';
241
+ return (` <apiCall guid="${wrapperGuid}" apiId="${wrapperApiId}"` +
242
+ ` name="With page" testItemId="1">${buildArgumentsXml({ target: targetUri }).trimEnd()}${clausesXml}</apiCall>`);
243
+ }
208
244
  function escapeXmlAttr(value) {
209
- return value
210
- .replace(/&/g, '&amp;')
211
- .replace(/"/g, '&quot;')
212
- .replace(/</g, '&lt;')
213
- .replace(/>/g, '&gt;');
245
+ return value.replace(/&/g, '&amp;').replace(/"/g, '&quot;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
214
246
  }
215
247
  function escapeXmlContent(value) {
216
- return value
217
- .replace(/&/g, '&amp;')
218
- .replace(/</g, '&lt;')
219
- .replace(/>/g, '&gt;');
248
+ return value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
220
249
  }
221
250
  //# sourceMappingURL=testCaseGenerate.js.map