Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add efeumutaslan/SAP-SKILLS --skill sap-fiori-testinggit clone --depth 1 https://github.com/efeumutaslan/SAP-SKILLSWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/efeumutaslan/sap-skills/sap-fiori-testing)<a href="https://agentmods.dev/skills/efeumutaslan/sap-skills/sap-fiori-testing"><img src="https://agentmods.dev/badge/skills/efeumutaslan/sap-skills/sap-fiori-testing/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/efeumutaslan/sap-skills/sap-fiori-testing"><img src="https://agentmods.dev/badge/skills/efeumutaslan/sap-skills/sap-fiori-testing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00093 | $0.04274 |
| Opus 5.5 | $0.00037 | $0.01710 |
| Sonnet 5.5 | $0.00019 | $0.00855 |
| Haiku 4.5 | $0.00009 | $0.00427 |
Grade A, and why
sap-fiori-testing scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 538 lines — stays where its author put it; the contents beside it link to each section on GitHub.
SAP Fiori Testing, Accessibility & Modern UI
Related Skills
sap-testing-quality— Cross-cutting SAP testing strategysap-devops-cicd— UI test automation in pipelinessap-build-apps— Alternative low-code UI approach
Quick Start
Choose your test framework:
| Framework | Level | Speed | Best For |
|---|---|---|---|
| QUnit | Unit | Fast | Controller logic, formatters |
| OPA5 | Integration | Medium | UI interaction flows, navigation |
| wdi5 | E2E | Slow | Full app testing, cross-app |
| UIVeri5 | Visual/E2E | Slow | Visual regression, screenshots |
Quick wdi5 setup:
npm init wdi5@latest
# Follow prompts: select UI5 app, choose test runner
# Generates: wdio.conf.js + test structure
Core Concepts
UI5 Test Pyramid
/\
/ \ E2E (wdi5/UIVeri5)
/ \ - Full app in browser
/------\ - Real backend or mock server
/ \
/ OPA5 \ Integration
/ Tests \ - UI interaction + navigation
/--------------\ - Mock server for data
/ \
/ QUnit Unit Tests \ Unit
/ \ - Pure logic, no DOM
/____________________\
wdi5 Architecture
Test Script ──► wdi5 Bridge ──► UI5 Control API
│ │ │
WebdriverIO Injects JS sap.ui.test.*
(Selenium/ into browser control selectors
Playwright)
OPA5 Key Concepts
| Concept | Role | Example |
|---|---|---|
| Page Object | Encapsulates page interactions | onTheMainPage.iClickCreate() |
| Journey | Test scenario (sequence of actions) | opaTest("Create order", ...) |
| Arrangement | Setup state | Given.iStartMyApp() |
| Action | User interaction | When.onTheList.iSelectItem("001") |
| Assertion | Verify outcome | Then.onTheDetail.iSeeTitle("Order 001") |
Common Patterns
Pattern 1: wdi5 Test with UI5 Selectors
// test/e2e/specs/order.test.js
const { wdi5 } = require('wdio-ui5-service');
describe('Order Management', () => {
before(async () => {
await browser.url('#/Orders');
await browser.asControl({
selector: { controlType: 'sap.m.Page', viewName: 'orders.List' }
});
});
it('should display order list', async () => {
const table = await browser.asControl({
selector: {
controlType: 'sap.m.Table',
viewName: 'orders.List',
id: 'orderTable'
}
});
const items = await table.getItems();
expect(items.length).toBeGreaterThan(0);
});
it('should create new order', async () => {
// Click Create button
const createBtn = await browser.asControl({
selector: {
controlType: 'sap.m.Button',
viewName: 'orders.List',
properties: { text: 'Create' }
}
});
await createBtn.press();
// Fill form
const customerInput = await browser.asControl({
selector: {
controlType: 'sap.m.Input',
viewName: 'orders.Create',
id: 'customerInput'
}
});
await customerInput.setValue('CUST001');
const amountInput = await browser.asControl({
selector: {
controlType: 'sap.m.Input',
viewName: 'orders.Create',
id: 'amountInput'
}
});
await amountInput.setValue('1500.00');
// Save
const saveBtn = await browser.asControl({
selector: {
controlType: 'sap.m.Button',
viewName: 'orders.Create',
properties: { type: 'Emphasized' }
}
});
await saveBtn.press();
// Verify success message
const msgStrip = await browser.asControl({
selector: {
controlType: 'sap.m.MessageStrip',
properties: { type: 'Success' }
}
});
const text = await msgStrip.getText();
expect(text).toContain('created successfully');
});
});
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 538 lines · 93 tokens per session scan A 4d1dba8a0f15
sap-fiori-testing is a skill published in the GitHub repository efeumutaslan/SAP-SKILLS (6 stars, last pushed 6mo ago), licensed MIT. It adds 93 tokens to every session and 4,274 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
analyze-and-plan
Standalone Phase 1 of SAP UI testing. Discovers the configured test folder and target system, downloads one complete ABAP source snapshot, then READS that source and captures the full picture in three reference artifacts — flow.md (functional flow), units.md (per-unit input/output inventory), and findings.md (the…
build-scripts
Standalone Phase 6 of SAP UI testing. Rediscovers the configured test folder, program, approved cases, and primary system from disk; validates upstream inputs; then writes one tests/ /test-scripts/TC-XXX.spec.ts per case using @sap-testing/runtime. Use when the user asks to write, generate, or convert Playwright…
explore-ui
Standalone Phase 2 of SAP UI testing. Opens the target transaction in a real browser (SAP WebGUI) and explores it live to produce tests/ /test-cases/screens.md — the authoritative map of every on-screen control, its accessible name/label as Playwright will see it, and its initial state. This is about how the UI…
prepare-data
Standalone Phase 5 of SAP UI testing. Rediscovers the configured test folder, program, approved cases, and target system from the request and upstream artifacts; then resolves TC-XXX.data.md requirements into per-system data.json caches. Works in a new chat without prior conversation context. Use when the user asks to…
run-scripts
Standalone Phase 7 of SAP UI testing. Rediscovers the configured test folder, program/specs, test cases, prepared data, and target system from disk; then runs Playwright via SAP Testing tools, generates .docx evidence, and diagnoses test script failures. Use when the user asks to execute tests, run TC-XXX, generate…
sap-testing
Entry point for the SAP UI test-automation environment. Explains project layout, the configured test folder, available tools, phase workflows, and bounded agent delegation. Use when the user asks about SAP UI testing, Playwright for SAP, writing tests for any ABAP report/transaction/process, generating test evidence…