Skip to content

Keep the NotificationList ports as scope exceptions; e2e waits for the port's view again - #278

Merged
oblomov-dev merged 2 commits into
mainfrom
claude/gracious-johnson-zibfy3
Oct 26, 2026
Merged

oblomov-dev merged 2 commits into
mainfrom
claude/gracious-johnson-zibfy3

Conversation

@oblomov-dev

@oblomov-dev oblomov-dev commented Oct 26, 2026 •

Copy link
Copy Markdown
Member

Two independent fixes, one commit each.

1. Keep the five NotificationList ports as scope exceptions after OpenUI5 1.153 (35aa335)

OpenUI5 1.153 marks the whole NotificationList family @deprecated (NotificationList, NotificationListBase, NotificationListGroup, NotificationListItem, replaced by the UI5 Web Components notifications). The weekly generate-result run of 2026-10-26 refreshed ui5/properties.json from OpenUI5 main and failed the hard scope gate on five ports:

App Sample
076 sap.m.sample.NotificationListItem
077 sap.m.sample.NotificationListGroup
291 sap.m.sample.NotificationListGroupBindings
444 sap.m.sample.MaxNumberOfNotificationsReached
520 sap.m.sample.NotificationListGroupLazyLoading

Maintainer decision: keep them, the same KEEP shape as UploadSet (app 121).

  • ui5/scope-exceptions.json: five entries pinned to { scope: deprecated, since: 1.34, deprecated: 1.153 }.
  • ui5/properties.json: refreshed from OpenUI5 main with the linter's generate-metadata.mjs, the step generate-result runs. It has to land in the same change: against the old snapshot the samples still read as in scope, and the gate would reject the new entries as stale.
  • README.md, api.md, STATUS.md, src/z2ui5_cl_smpc_app_000.clas.abap: regenerated. The overview rows of the five ports now carry the deprecation note.
  • docs/history.md: journal entry.

ui5/universe.json is not refreshed here: the sap.m api.json grunt build was not run. For these five samples that makes no difference, because the deprecation reaches scopeOf through the properties.json fallback.

2. e2e: wait for the port's view, not for the framework's shell; read the 702 config as JSONC (6084fe0)

e2e-nightly has been red since 2026-10-14 on the overview app alone (the control never appeared — tried 0 overflow popover(s)). e2e-pr at the pin passes it; e2e-nightly builds abap2UI5 main.

  • Cause: abap2UI5#2913 adds a z2ui5.core.RootSlot element to the shell view. The smoke's boot wait, [data-sap-ui] count > 3, had been exactly one more than the shell's three elements. With four, it is met before the first roundtrip answers.
  • Effect: Every port without an interaction module passed boot and render on an empty page. The overview has the largest response, arrives last, and clicked into nothing.
  • Fix: lib-e2e.mjs appRendered waits for a second rendered sap.ui.core.mvc.View, the port's own, or for the error overlay. The smoke uses it, and so do the eight interaction modules that repeated the count after a reload (022, 167, 235, 301, 302, 303, 557, 585).

A second breakage at abap2UI5 main: abap2UI5#2950 (today) puts a comment into .github/abaplint/abap_702.jsonc. e2e-build.mjs read that file with JSON.parse and died before the downport. The JSONC reader of check-app-rules.mjs now lives in scripts/lib/jsonc.mjs, and both scripts use it.

The e2e-debugging guide and the journal record both lessons.

Verification

Run locally:

  • npm run gates: exit 0.
  • npx abaplint ./abaplint.jsonc: 0 issues.
  • npm run check:overview: 0 failing.
  • npm test: 64/64.
  • Against abap2UI5 main (cab1966), overview-only build: the overview fails before the fix and passes after it.

e2e_pr answers all for a harness change and skips by design. The full-corpus run against abap2UI5 main is a manual e2e-nightly dispatch on this branch. Because the old boot wait was hollow against main, that run may surface ports that broke after 2026-10-14 and were hidden by it.

This also unblocks the pin bump #275, whose only failure was the overview.

🤖 Generated with Claude Code

https://claude.ai/code/session_017L77ar9bP7ABaNmoZiesNJ

…5 1.153

OpenUI5 1.153 deprecates the whole NotificationList family, and the weekly
generate-result run failed the hard scope gate on apps 076, 077, 291, 444
and 520. Maintainer decision: keep them, like UploadSet (app 121).

- ui5/scope-exceptions.json: five KEEP entries pinned to
  { deprecated, since 1.34, deprecated 1.153 }
- ui5/properties.json: refreshed from OpenUI5 main by the linter's
  generate-metadata.mjs (the exceptions would read as stale against the
  old snapshot)
- README, api.md, STATUS.md and the overview app regenerated; the five
  rows now carry the deprecation note
- docs/history.md: journal entry

npm run gates, abaplint, check:overview and npm test pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017L77ar9bP7ABaNmoZiesNJ
…e 702 config as JSONC

e2e-nightly has been red since 2026-10-14 on the overview app alone ("the
control never appeared — tried 0 overflow popover(s)"), while e2e-pr at
the pin passed it. The nightly builds abap2UI5 main.

abap2UI5#2913 creates the root control at run time through a new
z2ui5.core.RootSlot element in the shell view. The smoke's boot wait,
[data-sap-ui] count > 3, was one more than the shell's three elements;
with four it was met before the first roundtrip answered. Every port
without an interaction module passed boot and render on an empty page,
and the overview - the largest response, so the last to arrive - clicked
into nothing.

- lib-e2e.mjs appRendered: waits for a second rendered
  sap.ui.core.mvc.View (the port's own) or the error overlay; used by the
  smoke and by the eight interaction modules that repeated the count
  after a reload (022, 167, 235, 301, 302, 303, 557, 585)

abap2UI5#2950 (today) put a comment into .github/abaplint/abap_702.jsonc,
which e2e-build read with JSON.parse - the next nightly would have died
before the downport.

- lib/jsonc.mjs: the JSONC reader of check-app-rules.mjs, now shared;
  e2e-build reads the 702 config through it

Reproduced and verified locally against abap2UI5 main (cab1966): the
overview fails before and passes after. e2e-debugging guide and journal
record both; npm test 64/64 (the demo-apps fixture copies lib-e2e.mjs).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017L77ar9bP7ABaNmoZiesNJ
@oblomov-dev oblomov-dev changed the title Keep the five NotificationList ports as scope exceptions after OpenUI5 1.153 Keep the NotificationList ports as scope exceptions; e2e waits for the port's view again Oct 26, 2026
@oblomov-dev
oblomov-dev merged commit 99b1de0 into main Oct 26, 2026
26 checks passed
@oblomov-dev
oblomov-dev deleted the claude/gracious-johnson-zibfy3 branch October 26, 2026 13:27
oblomov-dev added a commit that referenced this pull request Oct 26, 2026
#278 moved parseJsonc out of scripts/check-app-rules.mjs into
lib/jsonc.mjs, but the file is a copy of abap2UI5's
.github/shared/check-app-rules.mjs, and abap2UI5's shared-file gate
now fails on the difference. The source already has its own inline
parseJsonc, so the copy goes back to it verbatim; lib/jsonc.mjs stays
for e2e-build.mjs.


Claude-Session: https://claude.ai/code/session_01VTHUii3vvZF41gabs3JqHc

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants