@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.
- package/lib/mcp/docs/PROVAR_TEST_STEP_REFERENCE.md +256 -78
- package/lib/mcp/prompts/loopPrompts.js +4 -3
- package/lib/mcp/prompts/loopPrompts.js.map +1 -1
- package/lib/mcp/rules/provar_best_practices_rules.json +59 -0
- package/lib/mcp/server.js +2 -1
- package/lib/mcp/server.js.map +1 -1
- package/lib/mcp/tools/antTools.d.ts +20 -0
- package/lib/mcp/tools/antTools.js +45 -3
- package/lib/mcp/tools/antTools.js.map +1 -1
- package/lib/mcp/tools/automationTools.js +44 -15
- package/lib/mcp/tools/automationTools.js.map +1 -1
- package/lib/mcp/tools/bestPracticesEngine.js +300 -9
- package/lib/mcp/tools/bestPracticesEngine.js.map +1 -1
- package/lib/mcp/tools/orgDescribeTools.d.ts +57 -0
- package/lib/mcp/tools/orgDescribeTools.js +329 -0
- package/lib/mcp/tools/orgDescribeTools.js.map +1 -0
- package/lib/mcp/tools/propertiesTools.d.ts +12 -0
- package/lib/mcp/tools/propertiesTools.js +113 -1
- package/lib/mcp/tools/propertiesTools.js.map +1 -1
- package/lib/mcp/tools/rcaTools.d.ts +17 -0
- package/lib/mcp/tools/rcaTools.js +51 -2
- package/lib/mcp/tools/rcaTools.js.map +1 -1
- package/lib/mcp/tools/testCaseGenerate.d.ts +1 -0
- package/lib/mcp/tools/testCaseGenerate.js +275 -12
- package/lib/mcp/tools/testCaseGenerate.js.map +1 -1
- package/lib/mcp/tools/testCaseValidate.d.ts +14 -1
- package/lib/mcp/tools/testCaseValidate.js +67 -21
- package/lib/mcp/tools/testCaseValidate.js.map +1 -1
- package/lib/mcp/tools/uiActionApiIds.d.ts +23 -0
- package/lib/mcp/tools/uiActionApiIds.js +46 -0
- package/lib/mcp/tools/uiActionApiIds.js.map +1 -0
- package/lib/mcp/utils/testCasePlanMode.d.ts +41 -0
- package/lib/mcp/utils/testCasePlanMode.js +208 -0
- package/lib/mcp/utils/testCasePlanMode.js.map +1 -0
- package/lib/mcp/utils/warningCodes.d.ts +10 -0
- package/lib/mcp/utils/warningCodes.js +19 -0
- package/lib/mcp/utils/warningCodes.js.map +1 -0
- package/oclif.manifest.json +1 -1
- 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
|
-
|
|
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
|
-
|
|
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
|
|
330
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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}"
|
|
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
|
|
385
|
-
|
|
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
|
}
|