Lesson 4 of 7
The limits for SAP: a balanced view
10 min
Listen to this lesson
This course discusses ACCELQ by name. Matt Angerer, who runs The Sign-Off Table, works at ACCELQ. Disclosure
Lesson 3 showed the pattern on a small public app. Now scale it to Contoso: hundreds of tests across Fiori, WebGUI, SAP GUI for Windows and APIs, run in CMQ client 100 against real configuration, reviewed by key users, and maintained through every feature pack and transport for years. Some limits are technical, some are about evidence and governance, and some are simply about who pays for the work. The table below is deliberately balanced: for each limit it says what Claude Code and Playwright genuinely do well.
| Area | What works well | Where it breaks for SAP | If you stay code-first |
|---|---|---|---|
| SAP GUI for Windows | Claude Code can explain recorded GUI scripts and draft SAP GUI Scripting code | Playwright drives browsers only. GUI for Windows needs SAP GUI Scripting, a second stack with its own enablement and runtime | Build and own a GUI Scripting framework (sap-tau-201), or keep those tests manual |
| WebGUI and Fiori quirks | Role locators, auto-waiting, frame locators | WebGUI HTML is generated per screen; launchpad setups can embed apps in iframes; UI5 has generated IDs and asynchronous rendering | Page objects with UI5-aware waits, frameLocator, a stable-ID agreement |
| Nondeterministic output | Fast drafts and varied ideas | The same prompt produces different code; output isn't repeatable evidence until frozen and reviewed | Commit reviewed code and run only that; never regenerate at run time |
| Ownership across releases | Quick repairs when something breaks | SAP feature packs, UI5, browsers, Playwright and models all change; someone owns every line | Named owners and a maintenance budget per release event |
| Skills burden | Lowers the barrier to writing code | Key users can't review TypeScript; reviews need engineers | Pair engineers with key users; readable names and reports |
| Data and environments | Drafts data plans and setup scripts | Tests depend on CMQ data, client refreshes and number ranges | Create data through published APIs; configuration per environment |
| Credentials and privacy | Reads secrets from environment variables | Prompts, file contents and tool output go to the model provider; local transcripts and traces hold data | Commercial terms, masked data, secret stores, deny rules |
| Prompt injection | Permission prompts, deny rules, hooks, sandboxing | The agent reads untrusted pages, logs and defect text that can carry instructions | Least privilege, isolated environments, human approval |
| Test management and audit | Writes results and drafts reports | No built-in test plan, requirement traceability, approval workflow, audit trail or business-readable evidence | Integrate with SAP Cloud ALM and build reporting yourself |
| 3–5-year cost | Low entry cost | Cost moves into engineering hours: frameworks, upkeep, evidence assembly, a second GUI stack | Model it honestly (lesson 5) |
Ten limits, each with what works and what you would have to build.
Reach: which SAP UI can Playwright drive?
SAP GUI for HTML is produced by the integrated Internet Transaction Server, which SAP describes as dynamically emulating dialog screens in the browser by mapping screen elements to HTML pages. So it is browser-reachable, but its HTML is generated, not designed for testing. Fiori apps are UI5 control trees with generated IDs and asynchronous loading, as sap-tau-202 explains. And in some launchpad setups the app sits inside an iframe: SAP's troubleshooting guide for SAP GUI for HTML and Web Dynpro tiles discusses frame errors and iframe communication in the launchpad and SAP Build Work Zone. Playwright's page-level actions target the main frame, so those tests need frameLocator.
Ownership across SAP releases
Code-first suites are maintained by whoever wrote them, and SAP keeps moving. SAP S/4HANA Private Edition follows the on-premise cycle: a new base release every two years, feature pack stacks roughly every six months in between, and seven years of mainstream maintenance per release. Public Edition upgrades twice a year, in February and August, with the test system upgraded first and about three weeks before development and production. On top of that come UI5 versions, browser updates, Playwright releases, Claude Code and model updates, and Contoso's own transports every sprint.
Data, credentials and prompt injection
Know where data goes. Claude Code runs locally but sends prompts, model outputs and whatever it reads into context to the model provider. Anthropic's data usage page says commercial accounts (Team, Enterprise, API) aren't used for training unless the customer opts in, with 30-day standard retention and zero data retention available to qualified Enterprise accounts. Consumer accounts have their own settings. Locally, session transcripts sit in plain text under ~/.claude/projects/ for 30 days by default. Playwright traces include network request and response bodies, and saved storage-state files contain session cookies. Any of these can hold Contoso customer data or a CMQ session.
Prompt injection is the other half. OWASP lists it as LLM01 in its 2025 Top 10 for LLM applications, including indirect injection through web pages and files the model reads. A test agent reads exactly that kind of content: app pages, logs, defect comments, even text in test data. Anthropic's security page lists safeguards and still warns that no system is completely immune, and Playwright MCP's README states plainly that the server is not a security boundary. Mitigate with least privilege, an isolated container or VM, no production access and human approval for anything with side effects.
What would you do?
To save time, an engineer proposes putting the CMQ test user's password in CLAUDE.md so Claude Code can log in to Fiori apps while exploring. Nadia, the security and GRC lead, is asked to approve. What should she decide?
- Playwright reaches browser UIs only; SAP GUI for Windows needs SAP GUI Scripting.
- WebGUI, iframes in the launchpad and UI5 generated IDs and async rendering all need deliberate handling.
- AI output varies run to run; only reviewed, committed code is repeatable evidence.
- Data, credentials and prompt injection need controls outside the prompt: commercial terms, masking, least privilege, isolation.
- Test management, traceability and audit trails are things a code-first stack must build for itself.
Check your understanding · not graded
Lesson check
1. How often does SAP S/4HANA Cloud Public Edition receive its major upgrades?
2. What does Playwright MCP's README say about the server's role in security?
3. A Fiori app opens inside an iframe in Contoso's launchpad. What does a Playwright test need?
4. Which item is a gap a code-first Claude Code and Playwright stack must build for itself?