@provartesting/provardx-cli 1.5.1 → 1.5.2-beta.3

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 (39) hide show
  1. package/lib/mcp/docs/PROVAR_TEST_STEP_REFERENCE.md +256 -78
  2. package/lib/mcp/prompts/loopPrompts.js +4 -3
  3. package/lib/mcp/prompts/loopPrompts.js.map +1 -1
  4. package/lib/mcp/rules/provar_best_practices_rules.json +59 -0
  5. package/lib/mcp/server.js +2 -1
  6. package/lib/mcp/server.js.map +1 -1
  7. package/lib/mcp/tools/antTools.d.ts +20 -0
  8. package/lib/mcp/tools/antTools.js +45 -3
  9. package/lib/mcp/tools/antTools.js.map +1 -1
  10. package/lib/mcp/tools/automationTools.js +44 -15
  11. package/lib/mcp/tools/automationTools.js.map +1 -1
  12. package/lib/mcp/tools/bestPracticesEngine.js +300 -9
  13. package/lib/mcp/tools/bestPracticesEngine.js.map +1 -1
  14. package/lib/mcp/tools/orgDescribeTools.d.ts +57 -0
  15. package/lib/mcp/tools/orgDescribeTools.js +329 -0
  16. package/lib/mcp/tools/orgDescribeTools.js.map +1 -0
  17. package/lib/mcp/tools/propertiesTools.d.ts +12 -0
  18. package/lib/mcp/tools/propertiesTools.js +113 -1
  19. package/lib/mcp/tools/propertiesTools.js.map +1 -1
  20. package/lib/mcp/tools/rcaTools.d.ts +17 -0
  21. package/lib/mcp/tools/rcaTools.js +51 -2
  22. package/lib/mcp/tools/rcaTools.js.map +1 -1
  23. package/lib/mcp/tools/testCaseGenerate.d.ts +1 -0
  24. package/lib/mcp/tools/testCaseGenerate.js +275 -12
  25. package/lib/mcp/tools/testCaseGenerate.js.map +1 -1
  26. package/lib/mcp/tools/testCaseValidate.d.ts +14 -1
  27. package/lib/mcp/tools/testCaseValidate.js +67 -21
  28. package/lib/mcp/tools/testCaseValidate.js.map +1 -1
  29. package/lib/mcp/tools/uiActionApiIds.d.ts +23 -0
  30. package/lib/mcp/tools/uiActionApiIds.js +46 -0
  31. package/lib/mcp/tools/uiActionApiIds.js.map +1 -0
  32. package/lib/mcp/utils/testCasePlanMode.d.ts +41 -0
  33. package/lib/mcp/utils/testCasePlanMode.js +208 -0
  34. package/lib/mcp/utils/testCasePlanMode.js.map +1 -0
  35. package/lib/mcp/utils/warningCodes.d.ts +10 -0
  36. package/lib/mcp/utils/warningCodes.js +19 -0
  37. package/lib/mcp/utils/warningCodes.js.map +1 -0
  38. package/oclif.manifest.json +1 -1
  39. package/package.json +2 -1
@@ -14,6 +14,44 @@ import { assertPathAllowed, PathPolicyError } from '../security/pathPolicy.js';
14
14
  import { makeError, makeRequestId } from '../schemas/common.js';
15
15
  import { log } from '../logging/logger.js';
16
16
  import { desc } from './descHelper.js';
17
+ /**
18
+ * Classify a failure message into a structured error category for retry decisions.
19
+ *
20
+ * Categories are coarse-grained and intended to drive automated retry policy
21
+ * downstream (e.g. retry INFRASTRUCTURE/TIMEOUT, never retry ASSERTION/LOCATOR).
22
+ *
23
+ * Returns `undefined` when no pattern matches — callers should leave the field unset.
24
+ */
25
+ export function classifyErrorCategory(errorText) {
26
+ // INFRASTRUCTURE — transient network / socket / browser-process failures.
27
+ if (/Connection reset|Failed to read client socket message|socket hang up|ECONNRESET/i.test(errorText)) {
28
+ return 'INFRASTRUCTURE';
29
+ }
30
+ // LOCATOR — page object selector no longer matches the rendered DOM.
31
+ if (/NoSuchElementException/i.test(errorText))
32
+ return 'LOCATOR';
33
+ // TIMEOUT — element or operation did not complete in time.
34
+ if (/TimeoutException/i.test(errorText))
35
+ return 'TIMEOUT';
36
+ // ASSERTION — explicit assertion failure raised by the test or framework.
37
+ if (/AssertionException/i.test(errorText))
38
+ return 'ASSERTION';
39
+ // OTHER — known exception class but not fitting the four primary buckets.
40
+ if (/SessionNotCreatedException|WebDriverException|ClassNotFoundException|LicenseException|InvalidPasswordException/i.test(errorText)) {
41
+ return 'OTHER';
42
+ }
43
+ return undefined;
44
+ }
45
+ /**
46
+ * A failure is retryable only when the underlying cause is transient.
47
+ * INFRASTRUCTURE (network blips) and TIMEOUT (slow page) can succeed on retry;
48
+ * ASSERTION / LOCATOR / OTHER are deterministic and should not be retried.
49
+ */
50
+ export function isRetryable(category) {
51
+ if (category === undefined)
52
+ return undefined;
53
+ return category === 'INFRASTRUCTURE' || category === 'TIMEOUT';
54
+ }
17
55
  const RCA_RULES = [
18
56
  {
19
57
  category: 'DRIVER_VERSION_MISMATCH',
@@ -556,7 +594,9 @@ function buildFailureReports(testcases, htmlFiles, screenshotDir, priorFailed) {
556
594
  const poMatch = /Page Object:\s*([\w.]+)/i.exec(failureText);
557
595
  const opMatch = /operation:\s*(\w+)/i.exec(failureText);
558
596
  const matchingHtml = htmlFiles.find((f) => path.basename(f) === `${tc.name}.html`);
559
- reports.push({
597
+ const error_category = classifyErrorCategory(failureText);
598
+ const retryable = isRetryable(error_category);
599
+ const report = {
560
600
  test_case: tc.name,
561
601
  error_class,
562
602
  error_message: failureText.slice(0, 500),
@@ -568,7 +608,12 @@ function buildFailureReports(testcases, htmlFiles, screenshotDir, priorFailed) {
568
608
  report_html: matchingHtml ?? null,
569
609
  screenshot_dir: screenshotDir,
570
610
  pre_existing: priorFailed.has(tc.name),
571
- });
611
+ };
612
+ if (error_category !== undefined)
613
+ report.error_category = error_category;
614
+ if (retryable !== undefined)
615
+ report.retryable = retryable;
616
+ reports.push(report);
572
617
  }
573
618
  return reports;
574
619
  }
@@ -583,6 +628,10 @@ export function registerTestRunRca(server, config) {
583
628
  'Use mode="failures" to get a lightweight array of failed test cases',
584
629
  '([{ testItemId, title, errorMessage }]) without the full RCA classification — useful when you',
585
630
  'need failure names quickly without loading the HTML report.',
631
+ 'In mode="rca" (default), each entry in failures[] additionally includes optional error_category',
632
+ '(INFRASTRUCTURE|ASSERTION|LOCATOR|TIMEOUT|OTHER) and retryable (boolean) fields when the failure',
633
+ 'text matches a known pattern — INFRASTRUCTURE/TIMEOUT are flagged retryable, others are not.',
634
+ 'These fields are NOT included in mode="failures" output.',
586
635
  ].join(' '), 'Parse a Provar test run JUnit.xml and produce an RCA report with failure classification.'),
587
636
  inputSchema: {
588
637
  project_path: z
@@ -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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"}
@@ -1,3 +1,4 @@
1
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import type { ServerConfig } from '../server.js';
3
3
  export declare function registerTestCaseGenerate(server: McpServer, config: ServerConfig): void;
4
+ export declare function inferSalesforceValueClass(key: string, val: string, fieldTypeHint?: 'date' | 'datetime' | 'boolean' | 'decimal' | 'string'): 'date' | 'datetime' | 'boolean' | 'decimal' | 'string';
@@ -14,6 +14,7 @@ import { makeError, makeRequestId } from '../schemas/common.js';
14
14
  import { log } from '../logging/logger.js';
15
15
  import { validateTestCase } from './testCaseValidate.js';
16
16
  import { desc } from './descHelper.js';
17
+ import { UI_ACTION_API_IDS, UI_SCREEN_CONTAINER_API_IDS, UI_LOCATOR_BEARING_API_IDS } from './uiActionApiIds.js';
17
18
  // ── Shorthand → fully-qualified API ID map ────────────────────────────────────
18
19
  // Provar runtime requires fully-qualified IDs. Shorthand forms are accepted here
19
20
  // and expanded automatically before writing XML.
@@ -22,8 +23,11 @@ const SHORTHAND_TO_FQID = {
22
23
  UiDoAction: 'com.provar.plugins.forcedotcom.core.ui.UiDoAction',
23
24
  UiWithScreen: 'com.provar.plugins.forcedotcom.core.ui.UiWithScreen',
24
25
  UiAssert: 'com.provar.plugins.forcedotcom.core.ui.UiAssert',
26
+ UiRead: 'com.provar.plugins.forcedotcom.core.ui.UiRead',
27
+ UiFill: 'com.provar.plugins.forcedotcom.core.ui.UiFill',
25
28
  UiNavigate: 'com.provar.plugins.forcedotcom.core.ui.UiNavigate',
26
29
  UiWithRow: 'com.provar.plugins.forcedotcom.core.ui.UiWithRow',
30
+ UiHandleAlert: 'com.provar.plugins.forcedotcom.core.ui.UiHandleAlert',
27
31
  UiScrollToElement: 'com.provar.plugins.forcedotcom.core.ui.UiScrollToElement',
28
32
  ApexConnect: 'com.provar.plugins.forcedotcom.core.testapis.ApexConnect',
29
33
  ApexSoqlQuery: 'com.provar.plugins.forcedotcom.core.testapis.ApexSoqlQuery',
@@ -37,10 +41,58 @@ const SHORTHAND_TO_FQID = {
37
41
  Sleep: 'com.provar.plugins.bundled.apis.control.Sleep',
38
42
  ForEach: 'com.provar.plugins.bundled.apis.control.ForEach',
39
43
  CaseCall: 'com.provar.plugins.bundled.apis.control.CaseCall',
44
+ // NitroX MS variants (Microsoft Dynamics 365 + Power Platform — Provar 3.0.7+)
45
+ MSDynamics365Connect: 'com.provar.plugins.forcedotcom.core.ui.NitroXConnect:ms-dynamics365',
46
+ MSDataverseConnect: 'com.provar.plugins.forcedotcom.core.ui.NitroXConnect:ms-dataverse',
47
+ MSPowerAppConnect: 'com.provar.plugins.forcedotcom.core.ui.NitroXConnect:ms-powerapp',
48
+ MSPowerPageConnect: 'com.provar.plugins.forcedotcom.core.ui.NitroXConnect:ms-powerpage',
40
49
  };
50
+ const NITROX_MS_SHORTHANDS = new Set([
51
+ 'MSDynamics365Connect',
52
+ 'MSDataverseConnect',
53
+ 'MSPowerAppConnect',
54
+ 'MSPowerPageConnect',
55
+ ]);
41
56
  function resolveApiId(apiId) {
42
57
  return SHORTHAND_TO_FQID[apiId] ?? apiId;
43
58
  }
59
+ // ── PDX-495 + PDX-497: UI-action grouping under UiWithScreen substeps clause ─
60
+ // The set of fully-qualified API IDs that authors expect to be nested inside a
61
+ // preceding UiWithScreen's <clauses><clause name="substeps"><steps>…</steps></clause>
62
+ // block. When the generator receives a flat list with these IDs trailing a
63
+ // UiWithScreen, the auto-grouping pass moves them inside the substeps clause so
64
+ // the Provar IDE renders the test case correctly. SetValues, ApexConnect, and
65
+ // other non-UI apiCalls stay at the root.
66
+ //
67
+ // PDX-497: API set imported from the shared `uiActionApiIds.ts` module so the
68
+ // generator and validator can never drift. The single-namespace alignment
69
+ // (`com.provar.plugins.forcedotcom.core.ui.*`) matches what `resolveApiId`
70
+ // produces from every shorthand AND what the validator enforces — the older
71
+ // `com.provar.plugins.ui.*` defensive entries in this file's local set were
72
+ // dead code (no test coverage, no production path emits them).
73
+ const FORCEDOTCOM_UI_WITH_SCREEN = 'com.provar.plugins.forcedotcom.core.ui.UiWithScreen';
74
+ function isUiAction(apiId) {
75
+ return UI_ACTION_API_IDS.has(resolveApiId(apiId));
76
+ }
77
+ function isUiWithScreen(apiId) {
78
+ return resolveApiId(apiId) === FORCEDOTCOM_UI_WITH_SCREEN;
79
+ }
80
+ /**
81
+ * PDX-497: a UI action step whose own container clause satisfies the
82
+ * UI-NEST-STRUCT-001 rule for its descendants (UiWithScreen, UiWithRow).
83
+ * Mirrors the validator's `UI_SCREEN_CONTAINERS` set.
84
+ */
85
+ function isScreenContainer(apiId) {
86
+ return UI_SCREEN_CONTAINER_API_IDS.has(resolveApiId(apiId));
87
+ }
88
+ // PDX-497: UiWithRow plays a dual role. As a UI action (in UI_ACTION_API_IDS)
89
+ // it must be nested under a UiWithScreen ancestor via a substeps clause — same
90
+ // rule QH's UI-NEST-STRUCT-001 enforces. As a screen container (in
91
+ // UI_SCREEN_CONTAINER_API_IDS) it owns its OWN substeps clause that satisfies
92
+ // the rule for its descendants. The auto-grouping algorithm in `collectGroup`
93
+ // (below) handles both roles, and `buildTestCaseXml` synthesizes a root
94
+ // UiWithScreen when the payload contains screen containers but no UiWithScreen
95
+ // — without that wrapper, a root-level UiWithRow would itself fail the rule.
44
96
  // ── Per-step runtime warnings ─────────────────────────────────────────────────
45
97
  function buildStepWarnings(steps) {
46
98
  const warnings = [];
@@ -55,6 +107,13 @@ function buildStepWarnings(steps) {
55
107
  'To assert SOQL results use either: (a) a ForEach loop over the result list with AssertValues inside, ' +
56
108
  'or (b) a SetValues step to extract a specific field into a named variable, then assert that variable.');
57
109
  }
110
+ const nitroxMsFqids = new Set(Array.from(NITROX_MS_SHORTHANDS, (s) => SHORTHAND_TO_FQID[s]).filter((id) => Boolean(id)));
111
+ if (resolvedIds.some((id) => nitroxMsFqids.has(id))) {
112
+ warnings.push('NitroX MS connect (Dynamics 365 / Dataverse / Power Apps / Power Pages): ' +
113
+ 'variant-specific args (appName, powerAppName, environment, powerPageName) must either be supplied as ' +
114
+ 'literals/variables in attributes OR declared as <generatedParameters> for data-driven tests. ' +
115
+ 'Empty args with no parameter declaration cause runtime null binding.');
116
+ }
58
117
  // D7: Cleanup steps placed after a potential failure point are skipped when stopOnError=false.
59
118
  if (resolvedIds.includes(SHORTHAND_TO_FQID['ApexDeleteObject'] ?? '')) {
60
119
  warnings.push('ApexDeleteObject detected (likely cleanup): with stopOnError=false Provar skips all steps after ' +
@@ -70,9 +129,11 @@ const StepSchema = z.object({
70
129
  api_id: z
71
130
  .string()
72
131
  .describe('Provar step API ID. Shorthand forms are accepted and auto-expanded to fully-qualified IDs: ' +
73
- 'UiConnect, UiDoAction, UiWithScreen, UiAssert, UiNavigate, UiWithRow, ' +
132
+ 'UiConnect, UiDoAction, UiWithScreen, UiAssert, UiRead, UiFill, UiNavigate, UiWithRow, UiHandleAlert, ' +
74
133
  'ApexConnect, ApexSoqlQuery, ApexCreateObject, ApexReadObject, ApexUpdateObject, ApexDeleteObject, ' +
75
- 'SetValues, AssertValues, StepGroup, Sleep, ForEach, CaseCall. ' +
134
+ 'SetValues, AssertValues, StepGroup, Sleep, ForEach, CaseCall, ' +
135
+ 'MSDynamics365Connect, MSDataverseConnect, MSPowerAppConnect, MSPowerPageConnect ' +
136
+ '(NitroXConnect:ms-* family for Microsoft Dynamics 365 + Power Platform — Provar 3.0.7+). ' +
76
137
  'Or pass the fully-qualified ID directly (com.provar.plugins.*).'),
77
138
  name: z.string().describe('Human-readable step name'),
78
139
  attributes: z
@@ -89,7 +150,7 @@ const StepSchema = z.object({
89
150
  '(3) AssertValues: pass assertion arguments as flat key/value pairs; emitted as flat <argument> elements, NOT wrapped in valueList/namedValues. ' +
90
151
  '(4) target argument (UiWithScreen / UiWithRow): pass the sf:ui:target or ui:pageobject:target URI; ' +
91
152
  ' emitted as class="uiTarget" uri="...". ' +
92
- '(5) locator argument (UiDoAction / UiAssert): pass the locator URI; emitted as class="uiLocator" uri="...". ' +
153
+ '(5) locator argument (UiDoAction / UiAssert / UiRead / UiFill): pass the locator URI; emitted as class="uiLocator" uri="...". ' +
93
154
  'All other string values use class="value" valueClass="string".'),
94
155
  });
95
156
  const TOOL_DESCRIPTION = [
@@ -109,6 +170,9 @@ const TOOL_DESCRIPTION = [
109
170
  ' - sf:ui:target (or omit target_uri) → flat Salesforce XML structure (existing behaviour).',
110
171
  ' - ui:pageobject:target?pageId=pageobjects.PageClass → wraps all steps in a UiWithScreen element targeting that non-SF page object.',
111
172
  'API IDs: shorthand forms (e.g. UiConnect, ApexSoqlQuery) are automatically expanded to fully-qualified IDs required by the Provar runtime.',
173
+ 'Microsoft Dynamics / Power Platform: MSDynamics365Connect, MSDataverseConnect, MSPowerAppConnect, MSPowerPageConnect ' +
174
+ 'expand to NitroXConnect:ms-* variants. Variant-specific args (appName, powerAppName, environment, powerPageName) ' +
175
+ 'may be passed as literals OR declared via <generatedParameters> for data-driven tests.',
112
176
  'Step arguments: attributes are emitted as <arguments><argument id="..."><value .../></argument></arguments> — the only format the Provar runtime processes.',
113
177
  'Shorthand XML attributes on <apiCall> are silently ignored at runtime; always supply arguments via the attributes map.',
114
178
  'ApexSoqlQuery argument IDs: soqlQuery (the SOQL SELECT statement), resultListName (binds result list to a variable), apexConnectionName (named connection), resultScope (optional).',
@@ -124,7 +188,12 @@ const TOOL_DESCRIPTION = [
124
188
  'If AssertValues uses namedValues-shaped content, validation reports warning ASSERT-001.',
125
189
  'Variable references: pass values as "{VarName}" (braces); emitted as class="variable" <path element="VarName"/>.',
126
190
  'target argument (UiWithScreen/UiWithRow): pass the URI value; emitted as class="uiTarget" uri="...".',
127
- 'locator argument (UiDoAction/UiAssert): pass the URI value; emitted as class="uiLocator" uri="...".',
191
+ 'locator argument (UiDoAction/UiAssert/UiRead/UiFill): pass the URI value; emitted as class="uiLocator" uri="...".',
192
+ 'valueClass auto-detection: argument values are typed automatically before XML emission. ' +
193
+ 'ISO-8601 date "YYYY-MM-DD" → valueClass="date"; ISO-8601 datetime "YYYY-MM-DDTHH:MM:SS" (optional fractional seconds + timezone) → "datetime"; ' +
194
+ '"true"/"false" → "boolean"; numeric string (e.g. "42", "-5", "3.14") → "decimal"; otherwise "string". ' +
195
+ 'Pass dates / booleans / numbers in those formats — Provar runtime silently discards date fields emitted as valueClass="string". ' +
196
+ 'Note: numbers always emit valueClass="decimal" per the canonical Provar reference (there is no separate "integer" valueClass).',
128
197
  'Edit page objects: action=Edit targets require a compiled page object for the SF object. ' +
129
198
  'If none exists in the project page-objects directory, the locator binding will fail at runtime. ' +
130
199
  'For objects without a compiled Edit page object, use inline edit instead: sfIleActivate to activate the field, ' +
@@ -191,6 +260,19 @@ export function registerTestCaseGenerate(server, config) {
191
260
  .string()
192
261
  .optional()
193
262
  .describe(desc('Caller-provided key echoed back for deduplication tracking', 'string, optional; deduplication key echoed in response')),
263
+ grouping_mode: z
264
+ .enum(['auto', 'flat', 'single-screen'])
265
+ .default('auto')
266
+ .describe(desc('Controls how UI action steps (UiDoAction, UiAssert, UiRead, UiFill, UiNavigate, UiWithRow, UiHandleAlert) ' +
267
+ 'are nested under UiWithScreen wrappers. ' +
268
+ '"auto" (default): when the flat steps[] payload contains a UiWithScreen followed by UI action siblings, ' +
269
+ 'those siblings are auto-grouped inside the UiWithScreen\'s <clause name="substeps"><steps> block ' +
270
+ '(the structure Provar IDE expects). Non-UI steps (SetValues, ApexConnect, …) stay at the root. ' +
271
+ 'UiWithRow plays a dual role: when it follows a UiWithScreen it is pulled in as a child container; ' +
272
+ 'when it appears at root without a preceding UiWithScreen it stays at root as its own container. ' +
273
+ '"flat": legacy behaviour — emit every step as a root sibling, no nesting. ' +
274
+ '"single-screen": wrap all steps in a single synthetic UiWithScreen (matches target_uri=ui:pageobject:target semantics). ' +
275
+ 'If target_uri is "ui:pageobject:target?…" the single-screen wrap takes precedence regardless of this flag.', 'enum, optional; default "auto" (group UI actions under UiWithScreen substeps)')),
194
276
  },
195
277
  }, (input) => {
196
278
  const requestId = makeRequestId();
@@ -281,6 +363,41 @@ export function registerTestCaseGenerate(server, config) {
281
363
  });
282
364
  }
283
365
  // ── XML builder ───────────────────────────────────────────────────────────────
366
+ // PDX-493 (H3): infer the Salesforce `valueClass` attribute that should be emitted on a
367
+ // `<value class="value" valueClass="..."/>` element from an argument's key + string value.
368
+ //
369
+ // Detection order:
370
+ // 1. Explicit `fieldTypeHint` (from `field_type_hints` param or `provar_org_describe` cache — wired
371
+ // in PDX-492 H2b) wins if provided.
372
+ // 2. ISO-8601 datetime → 'datetime' (e.g. "2026-05-19T10:30:00", with optional fractional seconds
373
+ // and optional timezone). The regex is end-anchored so trailing garbage (e.g.
374
+ // "2026-05-19T10:30:00not-a-zone") is rejected as plain 'string'.
375
+ // 3. ISO-8601 date → 'date' (e.g. "2026-05-19").
376
+ // 4. Literal 'true' / 'false' → 'boolean'.
377
+ // 5. Numeric string (integer or decimal, optional leading '-') → 'decimal'.
378
+ // Per `docs/PROVAR_TEST_STEP_REFERENCE.md` (lines 1338, 1428) the canonical Provar
379
+ // valueClass for numbers is `decimal` — there is no `integer` valueClass in the
380
+ // reference grammar, so both `42` and `3.14` emit as `valueClass="decimal"`.
381
+ // 6. Else → 'string'.
382
+ //
383
+ // The `key` argument is reserved for future heuristics (e.g. SF naming conventions like *__c)
384
+ // but is intentionally not consulted today — explicit hints + value-shape regexes are the
385
+ // safer signal until org-describe is wired.
386
+ export function inferSalesforceValueClass(
387
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
388
+ key, val, fieldTypeHint) {
389
+ if (fieldTypeHint)
390
+ return fieldTypeHint;
391
+ if (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:?\d{2})?$/.test(val))
392
+ return 'datetime';
393
+ if (/^\d{4}-\d{2}-\d{2}$/.test(val))
394
+ return 'date';
395
+ if (val === 'true' || val === 'false')
396
+ return 'boolean';
397
+ if (/^-?\d+(\.\d+)?$/.test(val))
398
+ return 'decimal';
399
+ return 'string';
400
+ }
284
401
  // F1/F3: build class="compound" for strings that mix literal text with {VarName} tokens.
285
402
  function buildCompoundValue(val, indent) {
286
403
  const i = `${indent} `;
@@ -323,15 +440,21 @@ function buildArgumentValue(key, val, indent, inNamedValues = false, apiId = '')
323
440
  }
324
441
  if (!inNamedValues) {
325
442
  // D2: 'target' argument → class="uiTarget" (only for UiWithScreen / UiWithRow).
326
- if (key === 'target' && (apiId.includes('UiWithScreen') || apiId.includes('UiWithRow'))) {
443
+ // PDX-497: dispatched via the shared canonical set rather than substring matching.
444
+ if (key === 'target' && UI_SCREEN_CONTAINER_API_IDS.has(apiId)) {
327
445
  return `${indent}<value class="uiTarget" uri="${escapeXmlAttr(val)}"/>`;
328
446
  }
329
- // D2: 'locator' argument → class="uiLocator" (only for UiDoAction / UiAssert).
330
- if (key === 'locator' && (apiId.includes('UiDoAction') || apiId.includes('UiAssert'))) {
447
+ // D2: 'locator' argument → class="uiLocator" (only for UI APIs that bear a locator).
448
+ // PDX-497: covers UiDoAction, UiAssert, UiRead, UiFill via the shared canonical set.
449
+ if (key === 'locator' && UI_LOCATOR_BEARING_API_IDS.has(apiId)) {
331
450
  return `${indent}<value class="uiLocator" uri="${escapeXmlAttr(val)}"/>`;
332
451
  }
333
452
  }
334
- return `${indent}<value class="value" valueClass="string">${escapeXmlContent(val)}</value>`;
453
+ // PDX-493 (H3): infer valueClass for date / datetime / boolean / decimal / string. The
454
+ // `fieldTypeHint` parameter on `inferSalesforceValueClass` is intentionally not threaded
455
+ // through here yet — it lands in PDX-492 (H2b) along with the `field_type_hints` tool input.
456
+ const inferred = inferSalesforceValueClass(key, val);
457
+ return `${indent}<value class="value" valueClass="${inferred}">${escapeXmlContent(val)}</value>`;
335
458
  }
336
459
  function buildArgumentsXml(attributes, baseIndent = ' ', apiId = '') {
337
460
  const entries = Object.entries(attributes);
@@ -370,6 +493,18 @@ function buildSetValuesXml(attributes, baseIndent) {
370
493
  `${baseIndent.slice(0, -2)}`);
371
494
  }
372
495
  function buildFlatStepXml(step, testItemId, indent) {
496
+ return buildStepXmlWithChildren(step, testItemId, indent, '', undefined);
497
+ }
498
+ // PDX-495: build a single <apiCall> element, optionally with a <clauses>
499
+ // <clause name="substeps"><steps>…</steps></clause></clauses> block containing
500
+ // already-rendered child XML. This is what lets a UiWithScreen wrap its UI
501
+ // action siblings without breaking the existing flat emission path.
502
+ //
503
+ // `childrenXml` is the already-rendered, already-indented inner XML for the
504
+ // substeps clause (joined newline-separated, no leading/trailing whitespace).
505
+ // `substepsTestItemId` is the testItemId for the <clause name="substeps"> slot;
506
+ // omit (undefined) to skip the clauses block entirely (legacy flat behaviour).
507
+ function buildStepXmlWithChildren(step, testItemId, indent, childrenXml, substepsTestItemId) {
373
508
  const guid = randomUUID();
374
509
  const resolvedApiId = resolveApiId(step.api_id);
375
510
  const baseIndent = indent + ' ';
@@ -377,22 +512,150 @@ function buildFlatStepXml(step, testItemId, indent) {
377
512
  const argumentsXml = resolvedApiId.includes('SetValues')
378
513
  ? buildSetValuesXml(step.attributes, baseIndent)
379
514
  : buildArgumentsXml(step.attributes, baseIndent, resolvedApiId);
380
- if (argumentsXml) {
515
+ const hasClauses = substepsTestItemId !== undefined;
516
+ const open = `${indent}<apiCall guid="${guid}" apiId="${escapeXmlAttr(resolvedApiId)}" name="${escapeXmlAttr(step.name)}" testItemId="${testItemId}">`;
517
+ const close = `${indent}</apiCall>`;
518
+ if (!hasClauses && !argumentsXml) {
381
519
  return (`${indent}<apiCall guid="${guid}" apiId="${escapeXmlAttr(resolvedApiId)}"` +
382
- ` name="${escapeXmlAttr(step.name)}" testItemId="${testItemId}">${argumentsXml}</apiCall>`);
520
+ ` name="${escapeXmlAttr(step.name)}" testItemId="${testItemId}"/>`);
521
+ }
522
+ if (!hasClauses) {
523
+ // Legacy flat shape: keep the inline form so existing string assertions in
524
+ // call sites and tests (e.g. literal `</apiCall>` placement) still match.
525
+ return `${open}${argumentsXml}</apiCall>`;
526
+ }
527
+ // PDX-495 grouped shape: arguments + clauses block with substeps.
528
+ const clauseIndent = baseIndent;
529
+ const innerStepsIndent = baseIndent + ' ';
530
+ const stepsBlock = childrenXml
531
+ ? `${innerStepsIndent}<steps>\n${childrenXml}\n${innerStepsIndent}</steps>`
532
+ : `${innerStepsIndent}<steps/>`;
533
+ const clausesBlock = `${baseIndent}<clauses>\n` +
534
+ `${clauseIndent}<clause name="substeps" testItemId="${substepsTestItemId}">\n` +
535
+ `${stepsBlock}\n` +
536
+ `${clauseIndent}</clause>\n` +
537
+ `${baseIndent}</clauses>`;
538
+ // argumentsXml when present already includes a leading "\n" and a trailing
539
+ // newline + parent-indent so the </apiCall> appears on its own line — match
540
+ // that shape for the grouped emission too.
541
+ if (argumentsXml) {
542
+ return `${open}${argumentsXml.replace(/\n[ \t]*$/, '')}\n${clausesBlock}\n${close}`;
383
543
  }
384
- return (`${indent}<apiCall guid="${guid}" apiId="${escapeXmlAttr(resolvedApiId)}"` +
385
- ` name="${escapeXmlAttr(step.name)}" testItemId="${testItemId}"/>`);
544
+ return `${open}\n${clausesBlock}\n${close}`;
545
+ }
546
+ function groupStepsAuto(steps) {
547
+ const cursor = { i: 0 };
548
+ return collectGroup(steps, cursor, /* stopOnUiWithScreen */ false);
549
+ }
550
+ /**
551
+ * Walk a contiguous run of steps starting at `cursor.i`. Stops at end of list,
552
+ * or — when `stopOnUiWithScreen` is true — at the next UiWithScreen (which
553
+ * belongs to the caller).
554
+ *
555
+ * For each step:
556
+ * - UiWithScreen → consume one node, then recursively absorb a child run of
557
+ * UI-action siblings (with `stopOnUiWithScreen=true`).
558
+ * - UiWithRow → consume one node, then recursively absorb a child run of
559
+ * UI-action siblings (UiWithRow is itself a UI action that can also host
560
+ * substeps — same recursive behaviour as UiWithScreen for its children).
561
+ * - Any other UI action → consume one node, no children.
562
+ * - Non-UI step → consume one node, no children. When called from a child
563
+ * run this breaks the run (handled by the parent loop's `isUiAction` gate).
564
+ */
565
+ function collectGroup(steps, cursor, stopOnUiWithScreen) {
566
+ const result = [];
567
+ while (cursor.i < steps.length) {
568
+ const step = steps[cursor.i];
569
+ if (stopOnUiWithScreen && isUiWithScreen(step.api_id))
570
+ break;
571
+ // Inside a parent's child run, a non-UI step ends the run; the parent's
572
+ // caller will see it next.
573
+ if (stopOnUiWithScreen && !isUiAction(step.api_id))
574
+ break;
575
+ cursor.i++;
576
+ const node = { ...step, children: [] };
577
+ result.push(node);
578
+ if (isScreenContainer(step.api_id)) {
579
+ // UiWithScreen always absorbs; UiWithRow absorbs when it is a child of
580
+ // a UiWithScreen (root-level UiWithRow is rewritten into a synthetic
581
+ // UiWithScreen by `buildTestCaseXml` before this walker runs). The child
582
+ // run itself stops at the next UiWithScreen so a later UiWithScreen is
583
+ // not pulled in as a grandchild.
584
+ node.children = collectGroup(steps, cursor, /* stopOnUiWithScreen */ true);
585
+ }
586
+ }
587
+ return result;
588
+ }
589
+ // PDX-495 + PDX-497: emit a list of grouped step nodes as XML. Assigns
590
+ // testItemIds depth-first: each node consumes one ID; if it has children it
591
+ // ALSO consumes one more ID for the <clause name="substeps"> slot, then its
592
+ // children consume their own IDs in order (recursing into grandchildren when
593
+ // a child node is itself a container, e.g. UiWithRow inside UiWithScreen).
594
+ // Mirrors the numbering convention used by Provar IDE (verified against the
595
+ // Contact_Lead1.testcase reference shape — see PDX-495).
596
+ function emitGroupedSteps(nodes, indent, startId) {
597
+ const lines = [];
598
+ let id = startId;
599
+ for (const node of nodes) {
600
+ const myId = id++;
601
+ if (node.children.length === 0) {
602
+ lines.push(buildFlatStepXml(node, myId, indent));
603
+ continue;
604
+ }
605
+ const substepsId = id++;
606
+ const childIndent = indent + ' '; // matches buildUiWithScreenXml inner step indent
607
+ // PDX-497: recurse — children may themselves be containers (e.g. UiWithRow
608
+ // inside UiWithScreen). The recursive call assigns child + grandchild IDs
609
+ // and returns the XML for the full subtree.
610
+ const { xml: childrenXml, nextId } = emitGroupedSteps(node.children, childIndent, id);
611
+ id = nextId;
612
+ lines.push(buildStepXmlWithChildren(node, myId, indent, childrenXml, substepsId));
613
+ }
614
+ return { xml: lines.join('\n'), nextId: id };
386
615
  }
387
616
  function buildTestCaseXml(input) {
388
617
  const testCaseGuid = randomUUID();
389
618
  const registryId = randomUUID();
619
+ const groupingMode = input.grouping_mode ?? 'auto';
390
620
  let stepLines;
391
621
  const isNonSf = !!input.target_uri && input.target_uri.startsWith('ui:');
392
622
  if (isNonSf && input.target_uri) {
623
+ // target_uri=ui:pageobject:target?… always wraps all steps in a single
624
+ // synthetic UiWithScreen — this predates PDX-495 and takes precedence
625
+ // regardless of grouping_mode (matches "single-screen" semantics).
393
626
  stepLines = buildUiWithScreenXml(input.steps, input.target_uri);
394
627
  }
628
+ else if (groupingMode === 'single-screen' && input.steps.length > 0) {
629
+ // Explicit single-screen request without a non-SF target_uri: wrap with the
630
+ // caller-supplied target_uri when provided (e.g. `sf:ui:target?object=Lead&action=New`),
631
+ // falling back to the bare `sf:ui:target` default so the synthetic wrapper
632
+ // is well-formed even when target_uri is omitted.
633
+ stepLines = buildUiWithScreenXml(input.steps, input.target_uri ?? 'sf:ui:target');
634
+ }
635
+ else if (groupingMode === 'auto' && input.steps.some((s) => isScreenContainer(s.api_id))) {
636
+ // PDX-495 + PDX-497 auto-grouping: nest UI actions inside their preceding
637
+ // screen container (UiWithScreen). When the payload contains a screen
638
+ // container but no UiWithScreen at root (e.g. starts with UiWithRow), QH's
639
+ // UI-NEST-STRUCT-001 still requires UiWithRow itself to descend from a
640
+ // UiWithScreen via a substeps clause. Synthesize a root UiWithScreen so the
641
+ // round-trip generate -> validate stays clean. Mirrors the single-screen
642
+ // path's synthetic wrapper (target_uri ?? 'sf:ui:target').
643
+ const stepsForGrouping = input.steps.some((s) => isUiWithScreen(s.api_id))
644
+ ? input.steps
645
+ : [
646
+ {
647
+ api_id: 'UiWithScreen',
648
+ name: 'With page',
649
+ attributes: { target: input.target_uri ?? 'sf:ui:target' },
650
+ },
651
+ ...input.steps,
652
+ ];
653
+ const tree = groupStepsAuto(stepsForGrouping);
654
+ stepLines = emitGroupedSteps(tree, ' ', 1).xml;
655
+ }
395
656
  else {
657
+ // Legacy flat behaviour: every step is a root sibling. Preserved by
658
+ // grouping_mode="flat" and by payloads with no UiWithScreen present.
396
659
  const lines = input.steps.map((step, i) => buildFlatStepXml(step, i + 1, ' ')).join('\n');
397
660
  stepLines = lines || ' <!-- TODO: Add test steps here -->';
398
661
  }