Class: AgenticHandler
Defined in: src/ai/agentic-handler.ts:141
Autonomous test operation handler with checkpoint-based resumability.
Remarks​
Orchestrates LLM calls, capability lookups, and checkpoint management for
AI-driven test generation. All methods return AiResponse<T> envelopes —
never throw on LLM errors.
Intent​
Execute autonomous SAP UI5 test operations
Capability​
ai-agentic-handler
Sap Module​
All
Example​
const handler = new AgenticHandler(llm, buildPageContext, capabilities);
const result = await handler.generateTest('Create a PO for vendor V001', page);
if (result.status === 'success') {
for (const step of result.data.steps) {
await handler.interpretStep(step, page);
}
}
Constructors​
Constructor​
new AgenticHandler(
llm,contextBuilder,capabilityRegistry,recipeRegistry?):AgenticHandler
Defined in: src/ai/agentic-handler.ts:157
Constructs an AgenticHandler.
Parameters​
llm​
LLM provider service for sending prompts.
contextBuilder​
(page, config) => Promise<AiResponse<PageContext>>
Function to build page context (same as buildPageContext).
capabilityRegistry​
Registry of available Praman capabilities.
recipeRegistry?​
RecipeRegistry = ...
Optional registry of reusable test recipes (defaults to a new RecipeRegistry).
Returns​
AgenticHandler
Example​
const handler = new AgenticHandler(llm, buildPageContext, capabilities);
Methods​
generateTest()​
generateTest(
scenario,page):Promise<AiResponse<AiGeneratedTest>>
Defined in: src/ai/agentic-handler.ts:194
Generate a test for a natural language scenario.
Parameters​
scenario​
string
Natural language description of the test scenario.
page​
DiscoveryPage
Playwright page (or structural equivalent).
Returns​
Promise<AiResponse<AiGeneratedTest>>
AiResponse<AiGeneratedTest> with steps and generated TypeScript code.
Remarks​
Returns AiResponse<AiGeneratedTest> — both natural language steps AND runnable TypeScript code.
Each step is executed separately via interpretStep(step: string): Promise<AiResponse<void>>
which maps step text to Praman fixture calls using the CapabilityRegistry.
This two-phase design (generate → execute) enables checkpoint/resume (AgenticCheckpoint): if step 3 fails, re-execute from step 3 without re-generating the full step list.
Intent​
Translate business scenario to executable Praman test steps and code
Example​
const result = await handler.generateTest(
'Create a purchase order for vendor V001, material M1000, quantity 10',
page,
);
if (result.status === 'success') {
logger.info('Steps:', result.data.steps);
logger.info('Code:', result.data.code);
}
interpretStep()​
interpretStep(
step,page):Promise<AiResponse<void>>
Defined in: src/ai/agentic-handler.ts:303
Execute a single natural language step by mapping it to Praman fixture calls.
Parameters​
step​
string
Natural language step description.
page​
DiscoveryPage
Playwright page (or structural equivalent).
Returns​
Promise<AiResponse<void>>
AiResponse<void> indicating success or failure.
Remarks​
Maps step text to registered capabilities in CapabilityRegistry.
Used with generateTest() for two-phase generate → execute workflow.
On failure, the AgenticCheckpoint captures progress for resume.
Intent​
Execute a single natural language step
Example​
const result = await handler.interpretStep('Fill Vendor field with 100001', page);
if (result.status === 'error') {
console.error('Step failed:', result.error.message);
}
resumeFromCheckpoint()​
resumeFromCheckpoint(
checkpointId):AgenticCheckpoint|undefined
Defined in: src/ai/agentic-handler.ts:478
Resume from a previously saved checkpoint.
Parameters​
checkpointId​
string
Session ID of the checkpoint to retrieve.
Returns​
AgenticCheckpoint | undefined
The checkpoint if found, or undefined.
Example​
const checkpoint = handler.resumeFromCheckpoint('sess-001');
if (checkpoint) {
logger.info('Resuming from step:', checkpoint.currentStep);
}
saveCheckpoint()​
saveCheckpoint(
checkpoint):void
Defined in: src/ai/agentic-handler.ts:460
Serialize current execution checkpoint for resumability.
Parameters​
checkpoint​
Checkpoint state to save.
Returns​
void
Remarks​
Stores the checkpoint in an internal Map keyed by checkpoint.sessionId.
Retrieve via resumeFromCheckpoint(sessionId).
Example​
handler.saveCheckpoint({
sessionId: 'sess-001',
currentStep: 2,
completedSteps: ['navigate', 'fillVendor'],
remainingSteps: ['fillMaterial', 'save'],
state: {},
timestamp: new Date().toISOString(),
});
suggestActions()​
suggestActions(
pageContext):Promise<AiResponse<string[]>>
Defined in: src/ai/agentic-handler.ts:399
Suggest next actions given the current page state.
Parameters​
pageContext​
Current page context snapshot.
Returns​
Promise<AiResponse<string[]>>
AiResponse<string[]> containing action suggestions.
Remarks​
Returns AI-recommended operations based on discovered controls and the
current page context. Returns AiResponse<string[]> with a list of
human-readable action suggestions.
Example​
const suggestions = await handler.suggestActions(pageContext);
if (suggestions.status === 'success') {
logger.info('Next actions:', suggestions.data);
}