Agent-First SAP UI5 Test Automation Plugin for Playwright
⭐ If Praman saves you time, star the repo — it helps others find it.
Praman extends Playwright with deep SAP UI5 awareness — querying controls through the UI5 runtime registry, not fragile DOM selectors, so tests survive upgrades and theme changes. Describe your business process; AI agents deliver production-ready test scripts.
| Stakeholder | Value |
|---|---|
| SAP test engineers | Write reliable E2E tests for any S/4HANA or Fiori app in minutes — no DOM hunting, no fragile selectors |
| QA teams | Replace manual SAP test scripting with AI-generated, self-healing Playwright tests purpose-built for UI5 |
| AI coding agents (Claude Code, Copilot, Cursor, Jules) | Generate production-ready SAP tests from a business process description, no source code or specs needed |
| Program leads & delivery managers | Ship SAP go-lives with deployment evidence — not manual sign-off and hope |
npm install playwright-praman
npx playwright-praman initinit scaffolds config, installs Chromium, and sets up AI agent definitions for your IDE.
cp .env.example .env
# Add SAP_CLOUD_BASE_URL, SAP_CLOUD_USERNAME, SAP_CLOUD_PASSWORDDescribe your business process. Praman's plan → generate → heal pipeline does the rest.
| Agent | What it does |
|---|---|
| Planner | Explores your live SAP system and produces a test plan |
| Generator | Converts the plan into typed Playwright + Praman code |
| Healer | Runs the test, fixes failures, repeats until green |
| Interface | Transport | Install | Best For |
|---|---|---|---|
| Playwright MCP | WebSocket (JSON-RPC) | @playwright/mcp (separate) |
Interactive exploration, VS Code / Copilot |
| Playwright CLI | stdin/stdout | Built into Playwright 1.59+ | CI/CD, token-efficient, any terminal agent |
Agent files with a -cli suffix use Playwright CLI; files without use Playwright MCP.
→ Agent & IDE Setup · MCP vs CLI · CLI Agents Guide
import { test, expect } from 'playwright-praman';
test('create purchase order', async ({ page, ui5, ui5Navigation }) => {
await ui5Navigation.navigateToTile('Purchase Orders');
await ui5.waitForUI5();
const createBtn = await ui5.control({
controlType: 'sap.m.Button',
properties: { text: 'Create' },
});
await createBtn.press();
await ui5.waitForUI5();
});Fixtures available: ui5, ui5Navigation, sapAuth, fe, ui5.table, ui5.dialog,
ui5.odata, intent, pramanAI, testData, controlTree, shellFooter, flpLocks.
→ Fixture Reference · Selector Reference · Examples
- Test any SAP UI5 control — 199 control types covered (
sap.m,sap.ui.table,sap.ui.comp,sap.uxap,sap.f,sap.ui.mdc) - Write tests with full IntelliSense — typed control proxies, no DOM digging, no guessing selectors
- Never write
waitForTimeout()again — UI5 stability sync handles all timing automatically - Authenticate with any SAP system — BTP SAML, Basic Auth, Office 365, Client Certificate, Custom IDP, Manual
- Verify your backend — mock, intercept, and assert OData V2/V4 requests with tracing reports
- Test Fiori Elements apps without boilerplate — List Report, Object Page, and Overview Page helpers included
- Assert SAP state natively — 10 UI5-specific matchers extend Playwright's
expect() - Express tests in business language — Vocabulary & Intent API maps SAP field names to selectors automatically
- Run anywhere — Windows, macOS, Linux · Node.js 22+ · TypeScript 5.x & 6.x
| Topic | Link |
|---|---|
| Full documentation | praman.dev |
| Getting started | Getting Started |
| Configuration | Configuration |
| Authentication | Authentication |
| Agent & IDE setup | Agent Setup |
| Fixtures reference | Fixtures |
| Discovery & interaction strategies | Strategies |
| Vocabulary system | Vocabulary |
| Intent API | Intents |
| OData tracing | OData Tracing |
| Error codes | Errors |
| Release notes | Release Notes |
| API reference | API Docs |
| LLM-friendly docs | llms.txt |
Do I need SAP source code? No — Praman uses the public UI5 runtime API (sap.ui.getCore()).
Does it work with existing Playwright tests? Yes — Praman extends Playwright. Mix ui5 fixtures
with native page.click() in the same file.
Which SAP systems are supported? S/4HANA (cloud and on-premise), BTP, Fiori Launchpad, SAPUI5, and OpenUI5 — both Fiori Elements and freestyle apps.
→ Full FAQ
- 3 production dependencies (
commander,pino,zod— all MIT) - npm provenance attestation on every release
- SHA-pinned GitHub Actions · CycloneDX SBOM per release
If Praman saves you time, please ⭐ star the repo.