Skip to content

test(qa): refresh the approvals checklist's entry paths and cover the two new nav entries - #7349

Merged
os-zhuang merged 1 commit into
mainfrom
claude/issue-7331-approvals-browser-verify
Aug 10, 2026
Merged

test(qa): refresh the approvals checklist's entry paths and cover the two new nav entries#7349
os-zhuang merged 1 commit into
mainfrom
claude/issue-7331-approvals-browser-verify

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Fixes #7331

The card had two halves: browser-verify the #7213 entry convergence, and refresh the approvals checklist. The verification half produced no product-code change — it is reported on the issue and in the findings below. This PR is the checklist half only.

The verification, in one line

Booted examples/app-showcase against a packages/console/dist built by pnpm objectui:build at the pinned objectui SHA 8aad9fd50b16 (dist stamp verified equal to .objectui-sha; the served index.html requests the freshly built assets/index-Bn6RZIXn.js), signed in as a non-admin business user, and drove all ten checklist items in the issue body. Nine passed. The tenth — the record deep link — is routing-correct and dead-ends for an unrelated record-visibility reason, filed separately.

The headline check passed. #7231's unit pin states in its own docblock that it does not assert main.tsx performs the side-effect import — "the one remaining way the key could be missing at runtime". It does survive bundling: the built entry chunk carries the registration at module scope, immediately before the app bootstrap.

W({ref:`approvals:inbox`,label:`Approvals Inbox`,source:`@object-ui/console`,component:…})

and the account app's Approvals entry renders the full inbox — tabs, list, drawer, decision actions — for a session whose GET /api/v1/meta/app returns showcase_app and account and not setup.

What changes here

Entry paths refreshedrevision bumped, history appended on each:

  • approvals.per-group-signoff, approvals.inbox-metadata-actions, approvals.viewer-gating-submitter-side all reached the inbox at the bare /system/approvals deep link. That route deliberately still works, so nothing was red — but the items were exercising the deep link instead of the path a user takes. They now open the account app's Approvals nav entry (the component route) and say why the other route is not the subject here.
  • approvals.notification-deep-link keeps /system/approvals?request= as its subject — that is what already-delivered notifications and emails carry — and gains a route-parity clause: the same link must open the drawer on both routes, and a component-route-only deep link is spelled out as a FAIL.

Three new items, none of which had any coverage:

id priority what it pins
approvals.account-app-entry P0 the registration survives bundling (oracle: build, greps the built chunk, not source); a non-admin reaches the full inbox; a decision executes under the component mount; ?request= parity; the record link keeps the current app segment; zh 待我审批 / 待审批
approvals.setup-nav-entry P2 Approvals Inbox leads the Setup group, above the raw sys_approval_request grid
approvals.pending-count-surfaces P2 the bell popover's unclamped total · N notifications + M pending approvals while the button badge clamps at 9+; M agreeing with Home's card; Home's card landing in an app the user can open

The bundling clause is written as an oracle-build clause on purpose: a source-only grep is explicitly declared not to satisfy it, since that is exactly the assertion the existing unit pin already makes and the one that cannot see the bundle.

Findings filed, not patched

Per the card's standing discipline — searched first, filed unassigned, no pm:queue:

Verification of this change

node scripts/check-platform-checklist.mjs reports exactly the one pre-existing coverage.json · qa problem described in #7347 — the three new items and the four edited ones validate clean. node scripts/check-nul-bytes.mjs OK; node scripts/check-doc-authoring.mjs clean.

No changeset: this touches docs/qa/ only and releases nothing, so the PR carries skip-changeset.


Generated by Claude Code

… two new nav entries (#7331)

Browser-verified the #7213 entry convergence end to end against a console
dist built at the pinned objectui SHA, then brought the checklist in line
with what a real user now does.

Entry paths refreshed (revision bumps + history entries):
- approvals.per-group-signoff, approvals.inbox-metadata-actions and
  approvals.viewer-gating-submitter-side reached the inbox through the bare
  /system/approvals deep-link route. That route deliberately still works, so
  nothing was red — but the items were exercising the deep link rather than
  the path a user takes. They now open the account app's Approvals nav entry
  (the component route), and say why the other route is not the subject.
- approvals.notification-deep-link gains a route-parity clause: the same
  ?request= link must open the drawer on BOTH /system/approvals (what already
  delivered notifications and emails carry) and the component route. A
  component-route-only deep link is called out as a FAIL.

Three new items, all previously uncovered:
- approvals.account-app-entry (P0) — the headline gap. Its first clause
  asserts the registration survives BUNDLING, because #7231's unit pin stubs
  the page at its module boundary and states in its own docblock that it does
  not assert main.tsx performs the side-effect import. Also pins non-admin
  reachability, decision execution under the component mount, ?request=
  parity, the record link keeping the current app segment, and zh wording.
- approvals.setup-nav-entry (P2) — Approvals Inbox leads the Setup group,
  above the raw sys_approval_request grid.
- approvals.pending-count-surfaces (P2) — the bell popover's unclamped
  `total · N notifications + M pending approvals` breakdown, M agreeing with
  Home's card, and Home's card landing in an app the user can open.

Findings from the run are filed, not patched here: #7344 (no permission set
grants sys_inbox_message, so the Account app's Notifications entry 403s for
every non-admin), #7345 (an approver can be unable to open the record under
approval), #7347 (check:platform-checklist is red on main on an unrelated
pre-existing coverage gap). objectui#4074 was confirmed in the browser.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L9U1G2piXmYrhYQX96XUyv
@vercel

vercel Bot commented Aug 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Aug 10, 2026 7:42am

Request Review

@os-zhuang os-zhuang added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Aug 10, 2026 — with Claude
@os-zhuang
os-zhuang marked this pull request as ready for review August 10, 2026 07:53
@os-zhuang
os-zhuang added this pull request to the merge queue Aug 10, 2026
Merged via the queue into main with commit d5588b1 Aug 10, 2026
24 checks passed
@os-zhuang
os-zhuang deleted the claude/issue-7331-approvals-browser-verify branch August 10, 2026 08:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/m skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[approvals][qa] Browser-verify the #7213 entry convergence end to end, and refresh the approvals checklist's entry paths

2 participants