Praman 1.3: Playwright 1.60, TypeScript 7, ARIA Grounding, Screencast Highlights, and ESLint 10
Praman 1.3.0 is now available on npm. This release brings Playwright 1.60 support with 8 new feature flags, TypeScript 7.x compatibility, AI grounding via full-page ARIA snapshots, a screencast control highlighting fixture, the ESLint 10 toolchain upgrade, and an expanded docs verification pipeline with 8 automated checks.
What changed since v1.2.0
Twenty-five commits landed between v1.2.0 and v1.3.0, covering Playwright 1.60 compatibility, TypeScript 7 validation, AI grounding improvements, screencast tooling, ESLint 10 migration, and a wave of dependency updates. Here is everything that matters.
Playwright 1.60 — 8 New Feature Flags
Praman now ships with Playwright 1.60 as its peer dependency (up from 1.59). The compat layer adds 8 new feature flags gated behind version detection so you can adopt 1.60 APIs at your own pace:
| Feature flag | API gated | What it enables |
|---|---|---|
hasTestAbort | test.abort() | Programmatic test abort from within a test body |
hasGetByRoleDescription | getByRole({ description }) | Filter ARIA roles by aria-description attribute |
hasPageAriaSnapshot | page.ariaSnapshot() | Full-page accessibility tree capture for AI grounding |
hasAriaSnapshotBoxes | ariaSnapshot({ boxes }) | Bounding-box coordinates in accessibility snapshots |
hasTracingHAR | Tracing HAR capture | HAR network archive alongside trace recordings |
hasLocatorDrop | locator.drop() | Native drag-and-drop target for file upload and DnD scenarios |
hasLocatorHighlightStyle | locator.highlight({ style }) | Custom highlight styling for visual debugging |
hasBrowserContextEvent | browserContext.on('event') | New browser context event subscriptions |
All eight flags are auto-detected — no configuration required. Existing tests on Playwright 1.57-1.59 continue to work unchanged.
Browser engine updates: Chromium 136 to 148, Firefox 139 to 150, WebKit 18.4 to 26.4.
Removed APIs (zero impact): Playwright 1.60 removed Locator.ariaRef(), exposeBinding handle option, connect/connectOverCDP logger option, and videosPath/videoSize. None were used by Praman — no breaking changes.
TypeScript 7.x and 6.x Support
Praman source and published types are now compiled with TypeScript 6.0.3. The CI matrix validates against both TS 6.x and TS 7.x on every push.
What this means for you:
- TypeScript 7.x — Praman types work out of the box with full inference.
- TypeScript 6.x — nothing changes from v1.2.0, full support continues.
- TypeScript 5.5+ — all Praman APIs remain compatible.
- The
strict: truetsconfig is enforced throughout — all generics, narrowing, and inference behave correctly under TS 7 semantics.
AI Grounding with ARIA Snapshots
Praman's AI context builder now captures the full-page ARIA accessibility snapshot and includes it in the PageContext envelope sent to LLM agents. This gives AI test generators a structural map of the page — control roles, names, states, and hierarchy — alongside the existing UI5 control tree.
export default defineConfig({
use: {
pramanConfig: {
includeAriaSnapshot: true, // page.ariaSnapshot() in AI context
},
},
});
The PageContext.ariaSnapshot field is populated automatically during bulk discovery when the flag is enabled. Requires Playwright 1.60+ (hasPageAriaSnapshot compat flag).
This is a significant improvement for agent-driven test generation. LLM agents can now reason about page structure using standardized ARIA roles and relationships rather than relying solely on the UI5 control tree, producing more resilient selectors and more accurate assertions.
Screencast Control Highlighting
New screencast.highlightControls() fixture that draws a visible overlay on UI5 controls as they are interacted with during screencast recording. Every ui5.press(), ui5.fill(), and proxy method call highlights the target control with a configurable border style.
test('demo with highlights', async ({ screencast, ui5 }) => {
// Enable highlighting — controls flash on interaction
screencast.highlightControls(true);
// Custom highlight style
screencast.highlightControls(true, {
border: '3px solid red',
backgroundColor: 'rgba(255, 0, 0, 0.1)',
});
await ui5.press({ id: 'myButton' }); // button highlighted during press
});
The highlight controller is page-keyed — each page in a multi-tab test gets its own highlight state. Highlighting is a no-op on Playwright versions below 1.60.
This makes screencast recordings dramatically easier to follow. When reviewing a test video, you can see exactly which control is being acted on at each step, even in dense SAP Fiori UIs with dozens of visible controls.
OData Trace Reporter — onError Hook
The OData trace reporter now implements the onError(error, workerInfo) Playwright reporter hook, capturing worker-level errors (crashes, timeouts, unhandled exceptions) alongside OData trace data. Previously, worker errors were silently dropped from OData trace reports.
This closes a gap in observability: if a worker crashes mid-test, the OData trace now records the failure context instead of producing an incomplete trace with no explanation.
ESLint 10 Ecosystem
The linting toolchain has been upgraded from ESLint 9.x to ESLint 10.x:
| Package | From | To |
|---|---|---|
eslint | 9.39.2 | 10.4.0 |
@eslint/js | 9.39.3 | 10.0.1 |
eslint-plugin-n | 17.24.0 | 18.0.1 |
eslint-plugin-security | 3.0.1 | 4.0.0 |
eslint-plugin-promise | 7.2.1 | 7.3.0 |
The @microsoft/eslint-plugin-sdl plugin (peerDep on eslint ^9) works correctly at runtime with ESLint 10 — resolved via npm overrides until Microsoft publishes an update. Zero config changes needed for existing setups.
Docs Verification Pipeline — 8 Checks
The documentation accuracy pipeline now runs 8 automated checks on every PR, up from 6 in v1.2:
- TypeScript snippet type-checking
- API reference accuracy
- Config default validation
- Import path verification
- AI-assisted review
- SAP UI5 API verification
- Code example execution
- Cross-reference link validation
This means every code example in the docs is compiled, every config default is verified against source, and every cross-reference link is validated — automatically, on every pull request.
Dependency Updates
Runtime:
zod4.3.6 to 4.4.3dotenv16.x to 17.4.2
LLM SDKs & Telemetry:
@anthropic-ai/sdk0.82.0 to 0.98.0openaiSDK updated- OpenTelemetry suite updated
CI Actions:
actions/github-script7.0.1 to 9.0.0actions/setup-node6.3.0 to 6.4.0actions/upload-artifact4.6.2 to 7.0.1googleapis/release-please-action4.4.0 to 5.0.0github/codeql-action4.35.1 to 4.35.3
Dev tooling:
ts-morph24.0.0 to 28.0.0cspell9.7.0 to 10.0.0commitlint20 to 21,lint-staged16 to 17postcss8.5.8 to 8.5.15,protobufjs7.5.4 to 7.6.1
Security: protobufjs, postcss, @xmldom/xmldom bumped to resolve advisories.
Other Improvements
- Claude Code Plugin docs: New documentation for Claude Code and Cowork plugin integration.
- Plugin install instructions: Fixed to match official Claude Code documentation format.
- Capabilities registry:
screencast.highlightControlsand ARIA grounding capabilities registered incapabilities.yaml.
Upgrading from v1.2
npm install playwright-praman@latest
Breaking changes in v1.3: None. All fixtures, matchers, proxies, and authentication strategies remain source-compatible. No test code changes are required.
If you are on Playwright 1.57-1.59, the 8 new feature flags are simply inactive — your tests continue to run unchanged. Upgrade to Playwright 1.60 when ready to unlock the new APIs.
What's next
The roadmap for v1.4 focuses on:
- OPA5 migration agent (ADR-030): An automated agent that reads existing OPA5 test files and generates equivalent Praman tests, including control mapping and assertion translation.
- BTP Work Zone multi-tenant improvements to the
btpWorkZonefixture. - Playwright MCP integration: First-class support for
@playwright/mcpsession hand-off to Praman's AI agents.
Follow the project on GitHub or subscribe to the npm package for release notifications.
Praman is open-source under the Apache-2.0 license. Docs · npm · GitHub · Discord
