Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ jobs:
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: abap2UI5/abap2UI5
ref: 5d7e91f904bf37b282e8e1c0ecb2b3eeae4c5842 # main; app/webapp as at b812079
ref: 1bbb9d47e9dce37015f2aa15f405689465f5b909 # main; carries the box-details fix (72c86cc)
path: deps/abap2UI5
sparse-checkout: app/webapp
persist-credentials: false
Expand Down
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

## Unreleased

- **The UI5 SPA is conformant (ui5 profile).** CI's frontend job pins
abap2UI5 main `1bbb9d4`, which carries the fix of `portable.box-details`
(abap2UI5 `72c86cc`); `test/frontend.test.mjs` no longer accepts that
deviation, so a frontend that loses the fix fails the test. 77 pass,
0 fail, 4 skip (RESULTS.md).
- **Adaptive Cards: app text is never Markdown.** A `TextBlock` or `Fact`
whose text has Markdown syntax is a `RichTextBlock` `TextRun` now: a
model value or toast like `[verify your account](https://evil.example)`
Expand Down
17 changes: 9 additions & 8 deletions conformance/RESULTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ perform.

| Frontend | Version | Profile | Pass | Fail | Warn | Skip | Verdict |
|---|---|---|---:|---:|---:|---:|---|
| UI5 SPA (`ui5`) | abap2UI5 1.146.0 `b812079` `app/webapp` (identical at main `5d7e91f`, which CI pins), OpenUI5 1.144.0 (npm), Chromium 141 | ui5 | 76 | 1 | 0 | 4 | one MUST deviation: `portable.box-details` |
| UI5 SPA (`ui5`) | abap2UI5 main `1bbb9d4` `app/webapp` (which CI pins), OpenUI5 1.153.0 (npm), Chromium 141 | ui5 | 77 | 0 | 0 | 4 | conformant (ui5) - `portable.box-details` fixed in abap2UI5 `72c86cc` |
| agent client (`agent`) | abap2UI5/mcp-server `lib/appclient.mjs` @ `a4d9f07` (main, PR #44; vendored) | semantic | 61 | 0 | 0 | 20 | conformant (semantic) - the five MUST deviations of `ea4e9fa` fixed |
| Adaptive Cards renderer (`adaptive-cards`) | [`renderers/adaptive-cards/`](../renderers/adaptive-cards/README.md) of this repository (prototype), Adaptive Cards 1.5 | portable | 66 | 0 | 0 | 15 | every check it can be driven through holds |
| terminal renderer (`terminal`) | [`renderers/terminal/`](../renderers/terminal/README.md) of this repository, driven with keys through its state machine | portable | 72 | 0 | 0 | 9 | every check it can be driven through holds, the router checks included |
Expand All @@ -135,17 +135,18 @@ perform.

The UI5 SPA run is stable (two consecutive runs, identical results) and
takes about two minutes; `test/frontend.test.mjs` pins the UI5, the agent,
the Adaptive Cards and the terminal result check by check. The UI5 pin accepts
`portable.box-details` passing: the fix of the UI5 frontend is under way
(open question 7, decided: expanded), and a local run against an abap2UI5
checkout that carries it (2026-10-03, abap2UI5 `ed8115b` on top of `833b5b8` "Show message box
details on UI5 1.120 and later", on its working branch, not on main yet)
passed it - every MUST held, 77 pass, 4 skip.
the Adaptive Cards and the terminal result check by check. Until 2026-10-10
CI pinned abap2UI5 `5d7e91f` (`app/webapp` as at `b812079`, 1.146.0), where
the UI5 SPA failed `portable.box-details` (finding 1 below; 76 pass, 1 fail,
4 skip, with OpenUI5 1.144.0 and 1.153.0 alike). abap2UI5 fixed it on main in
`72c86cc` (open question 7, decided: expanded); CI pins a main that carries
the fix, and the pin is gone - every MUST holds, 77 pass, 4 skip.

### Findings - the UI5 SPA

1. **Message box details are not shown on OpenUI5 >= 1.120** -
`portable.box-details`, MUST; *the frontend is wrong.* A
`portable.box-details`, MUST; *the frontend is wrong* (fixed in abap2UI5
`72c86cc`, after 1.146.0). A
`MESSAGE_BOX` with `details` shows the text and an empty details area.
Evidence (OpenUI5 1.144.0): the box's VBox holds `Text` (visible),
`Link "View Details"` (hidden), `MessageStrip "Details could not be
Expand Down
134 changes: 48 additions & 86 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,11 @@
],
"devDependencies": {
"@abap2ui5/node-runtime": "1.146.0",
"@abaplint/cli": "2.120.60",
"@abaplint/cli": "2.120.73",
"@abaplint/transpiler-cli": "2.13.93",
"@openui5/sap.m": "1.144.0",
"@openui5/sap.m": "1.153.0",
"ajv": "8.20.0",
"express": "5.2.1",
"playwright-core": "1.56.1"
"express": "5.3.0",
"playwright-core": "1.64.0"
}
}
5 changes: 3 additions & 2 deletions spec/open-questions.md
Original file line number Diff line number Diff line change
Expand Up @@ -214,8 +214,9 @@ structure *is* the message; behind a link it is easily never seen.
fills the details text only when its "View Details" link is pressed - 1.120
does, 1.71 set it at creation) the UI5 frontend shows **no** details at
all: `expandBoxDetails` makes the still-empty `FormattedText` visible and
hides the link that would have filled it. The UI5 frontend is being fixed
(abap2UI5 `app/webapp/core/actions/ControlCall.js`); filed in
hides the link that would have filled it. Fixed on abap2UI5's main in
`72c86cc` (`app/webapp/core/actions/ControlCall.js`, after 1.146.0), which
CI's frontend job runs; filed in
[../conformance/RESULTS.md](../conformance/RESULTS.md#frontend-suite).

**Alternatives considered.**
Expand Down
10 changes: 5 additions & 5 deletions test/frontend.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -220,11 +220,11 @@ test("the terminal renderer: every portable-profile check it can be driven throu
});

const skipBrowser = process.env.PROTOCOL_SKIP_BROWSER ? "PROTOCOL_SKIP_BROWSER is set" : false;
// The UI5 SPA's one deviation (RESULTS.md): message box details stay empty on
// OpenUI5 >= 1.120. The fix is under way in abap2UI5 (open question 7, decided
// in revision 0.3: expanded), so a checkout that carries it passes the check -
// the pin accepts both; every other failure fails the test.
const UI5_KNOWN_FAILS = ["portable.box-details"];
// The UI5 SPA's known deviations (RESULTS.md) - none since CI's abap2UI5
// commit carries the fix of portable.box-details (abap2UI5 72c86cc: message
// box details on OpenUI5 >= 1.120). A deviation found later goes here with
// the place of its fix; every other failure fails the test.
const UI5_KNOWN_FAILS = [];

test("the UI5 SPA in Chromium: every MUST but the recorded deviation holds", { skip: skipBrowser, timeout: 900_000 }, async (t) => {
if (!locateWebapp()) {
Expand Down
Loading