Skip to content

test(ui): run the kept Console live specs nightly; delete the stale and duplicated ones - #27294

Merged
objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/project-thread-aj3s0c
Oct 28, 2026
Merged

objectstack-fleet[bot] merged 3 commits into
mainfrom
claude/project-thread-aj3s0c

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Warren · project thread

Fixes #25914

Clause-②: no
Metadata-protocol: none

维护者速读

  • 改了什么:18 个不在任何 CI 里跑的 Console live spec 逐个实跑;15 个绿的进 Nightly Tiers(一个 vitest 包装 + ui/package.json 一行脚本),删掉 2 个过时的红 spec 和 1 个与 showcase 夜间 smoke 重复的 spec,并改正引用它们的检查单条目。
  • 为什么改:裁决 Q3 B:过时的删,其余接入 Nightly Tiers,红了由该 job 的 report 步骤自动建卡;MSW 那条空测试已被 test(ui-e2e): delete the vacuous MSW worker test and the unused msw declarations #26032 删除,这里顺手去掉它留下的 MSW 报错豁免。
  • 风险与回滚:只动测试和检查单,不改产品代码,也不碰 4 个必跑 spec 和 Live E2E UI job;夜间 showcase 分片多约 5 分钟;回滚即 revert 本 PR。
  • 先看:examples/app-showcase/test/console-live-specs.live.test.ts,以及下面的逐 spec 表。
  • 两分钟验证:pnpm --dir ui run test:e2e:live:nightly --list,预期列出 15 个文件、25 个用例。
  • 需要你做的:无,席位落地。

What changes

Each of the 18 live specs outside test:e2e:live:ci was run alone against the workspace showcase backend (ui/e2e/live/ci/start-backend.sh, the boot the required job uses) at origin/main 1e8e5296. Both reds were run a second time and failed the same way.

Spec Result Outcome
cascading-options 2 passed kept, nightly
declared-sharing-rules-reach-13091 1 passed kept, nightly
detail-related-list failed: waitForURL(/record/) timeout deleted, stale
field-conditional-rules 1 passed kept, nightly
form-view-subforms 1 passed kept, nightly
grid-conditional-rules 1 passed kept, nightly
grid-file-upload 1 passed kept, nightly
grid-parent-rules 1 passed kept, nightly
inline-edit-polish-2572 1 passed kept, nightly
list-row-action-cel 1 passed kept, nightly
record-history-display 1 passed kept, nightly
required-when-submit 1 passed kept, nightly
showcase-smoke 29 passed (104 s) deleted, duplicate
studio-editor 2 passed kept, nightly
studio-object-designer 4 passed kept, nightly
studio-record-page failed: blocks.length 0 deleted, stale
summary-rollup 2 passed kept, nightly
user-filters 5 passed kept, nightly
  • Wiring (route A, amendment 6470826683), not Tier H.

    • ui/package.json gains one script, test:e2e:live:nightly, that lists the 15 kept specs.
    • examples/app-showcase/test/console-live-specs.live.test.ts is a *.live.test.ts file, so Nightly Tiers already selects it in the showcase shard, which builds the Console and installs Chromium. Its report step files a card on red.
    • The wrapper follows showcase-smoke.live.test.ts:
      • It boots the backend with start-backend.sh.
      • It builds the Console with VITE_BASE_PATH=/ into a scratch dir and serves it with vite preview plus DEV_PROXY_TARGET. The specs goto root /apps/..., which neither the default ./ base nor the /_console copy serves.
      • It runs the script with a JSON reporter and fails, naming every failing spec, unless all of them passed.
      • It stops the preview and the backend by PID in finally.
    • No .github/workflows/** edit, and ci.yml and ui/.github/** are untouched.
  • showcase-smoke is a duplicate. examples/app-showcase/e2e/showcase-smoke.spec.ts already runs nightly through showcase-smoke.live.test.ts.

    • Every one of the deleted spec's 29 surface paths is in the kept spec, which has 49 (comm -23 of the two path lists is empty; one label changed from "Settings (preference)" to "Settings" on the same path).
    • The kept spec makes each of the deleted spec's four assertions: no uncaught page error, no leaked "no actions configured" placeholder, non-empty main content, and a chart SVG with width and height above 0. It is stricter on two: it requires a chart width above 200, and it refuses a surface that is still on the boot splash.
  • studio-record-page is stale. It expects a record page created in Studio to come back with regions copied from the default layout. Today a new record page is created slotted with no copied regions, by design, so blocks.length is 0.

  • detail-related-list is stale. It expects a row click to navigate to /record/. Today the row's name link opens the record drawer, by design. The related-list behaviours it also touched are pinned by unit tests: deriveRelatedLists.test.ts, buildDefaultPageSchema.test.ts and RelatedList.columnIdentityAccessor.test.tsx.

  • The MSW clause. The vacuous MSW test in ui/e2e/console-rendering.spec.ts was already deleted by test(ui-e2e): delete the vacuous MSW worker test and the unused msw declarations #26032, so that part of the premise no longer holds. What was left was four ignore entries (mockServiceWorker, MSW, Mock Service Worker, [MSW]) that still excused MSW console errors. They are removed: the Console ships no mock service worker, so an MSW error is now a real error. No msw declaration and no public/mockServiceWorker.js are left in the tree.

  • Platform checklist. Every line that cited a deleted spec was repointed or dropped. Each item gets a revision bump and a history entry dated 2026-10-28, with ref e2e: the MSW test in console-rendering.spec passes when the worker is absent (it is absent), and 18 of 22 live specs run nowhere in CI — delete the vacuous test and make the four live specs count #25914.

    Item Revision Line Edit
    platform-core.metadata-authoring-roundtrip 6→7 acceptance[2].verify now says the PUT is hand-driven, with no live spec pinning it
    platform-core.metadata-authoring-roundtrip 6→7 automated.ref the studio-record-page half is dropped
    records-forms.related-list-server-pagination 9→10 verify parenthetical dropped
    records-forms.related-list-server-pagination 9→10 ref the detail-related-list sentence is dropped
    records-forms.related-list-server-pagination 9→10 live browser legs acceptance[2] joins them
    records-forms.related-list-server-pagination 9→10 history cites the three unit pins above
    studio-authoring.record-page-roundtrip 9→10 verify parenthetical dropped
    studio-authoring.record-page-roundtrip 9→10 ref keeps only studio-editor, now nightly, which covers none of acceptance[0], [2] or [3]
    studio-authoring.record-page-roundtrip 9→10 source line dropped
    studio-authoring.custom-page-render-and-blocks 1→2 knownGaps / source repointed to examples/app-showcase/e2e/showcase-smoke.spec.ts; that nightly smoke includes the pages named
    studio-authoring.page-variables-and-actions 1→2 knownGaps / source same repoint
    studio-authoring.custom-page-source-tiers 4→5 knownGaps / source same repoint
  • Out of scope, flagged for the ledger owner. platform-core acceptance[2] and studio-authoring.record-page-roundtrip acceptance[0] still ask for regions "seeded from the default layout". That now holds only for full pages. The two history entries say so; the acceptance text is left as it is.

Why

Ruling Q3 B (6435339772): the stale specs are deleted and the rest are wired into Nightly Tiers, so a red files a card. The other clauses of the card are already closed:

This PR closes the last one, hence Fixes.

Verification

  • The 18-spec measurement held the verify lock for 4m45s with VERDICT command-exit 0. The per-spec results are in the table above.

  • The wrapper ran end to end: OS_TEST_TIERS=nightly pnpm --filter @objectstack/example-showcase exec vitest run test/console-live-specs.live.test.ts gave Playwright 25 passed (1.7 min) and vitest 1 passed. It held the lock for 4m27s with VERDICT 0.

  • ui/e2e/console-rendering.spec.ts ran in Chromium against a /console/ build: 3 passed.

  • node scripts/pm/dispatch-gates.mjs --commands derived 55 commands at the merge of origin/main 0d45c0e7. To those I added:

    • pnpm --filter @objectstack/example-showcase typecheck
    • node scripts/nightly-tiers.mjs --check
    • node scripts/check-platform-checklist.mjs --changed-from origin/main

    All 58 exited 0. dispatch-gates --ran: "55 derived famil(ies) accounted for — 55 run, 0 NOT-MEASURED".
    check:dts-closure and check:dual-build-cjs-loads exited 1 and 3 on the first pass for the same reason. Both read built output this worktree had not built: console plugin.d.ts, and the dist of 7 packages this diff does not touch. Each exited 0 after the build of those packages (build:plugin for the console, then turbo run build).

  • dispatch-gates --tier: "no path-derived mandate: the surface hits none of the 4 declared glob(s)". Changed lines: 514 (+275 / -239), under the 800 cap.

  • This is test and CI only, so it ships no changeset (skip-changeset).

Human Minimum

  • 1. Schemas start as Zod; packages/spec holds no runtime logic. (No packages/spec change.)
  • 2. Every name I added uses the casing for its kind.
  • 3. No formatter ran; pnpm lint passes. (The root eslint, run over the two changed TypeScript files, exits 0.)
  • 4. One issue, one branch off an up-to-date main, one pull request.
  • 5. A change that publishes carries a changeset, and both declaration lines are filled in here and in the changeset. (Nothing publishes: skip-changeset.)
  • 6. packages/spec touched: its generated artifacts are regenerated and committed. (Not touched.)
  • 7. No hand edits to content/docs/references/, packages/*/CHANGELOG.md or content/docs/releases/.
  • 8. Title, body and comments are in English. (Except the 维护者速读 block the dispatch order asks for.)
  • The Before Submitting list in CONTRIBUTING.md is done.

🤖 Generated with Claude Code

https://claude.ai/code/session_01JQwxbXq8B9svQTRonMmTRf

…hat are stale or duplicated

The live specs outside the required Live E2E UI job ran in no CI lane. Each
of the eighteen was run on the workspace backend: fifteen pass and are kept,
listed once in ui/package.json's test:e2e:live:nightly and run by
examples/app-showcase/test/console-live-specs.live.test.ts in the nightly
live tier. Deleted: studio-record-page (a record page is now created slotted
with no copied regions, by design), detail-related-list (a row's name link
now opens the record drawer, by design) and showcase-smoke (every surface
and assertion it held is in the showcase package's nightly smoke).

Claude-Session: https://claude.ai/code/session_01JQwxbXq8B9svQTRonMmTRf
Co-authored-by: Claude <noreply@anthropic.com>
…MSW error excuse

The platform checklist cited studio-record-page.spec.ts, detail-related-list.spec.ts
and the ui/e2e/live showcase smoke, which this branch deletes. Each citing line is
repointed (showcase smoke -> examples/app-showcase/e2e/showcase-smoke.spec.ts) or
dropped, with a revision bump and history entry per item.

console-rendering.spec.ts no longer excuses mockServiceWorker/MSW console errors:
the Console ships no mock service worker, and the idle MSW test was already removed.

Claude-Session: https://claude.ai/code/session_01JQwxbXq8B9svQTRonMmTRf
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 28, 2026
@github-actions github-actions Bot added size/l dependencies Pull requests that update a dependency file tests labels Oct 28, 2026
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

domain:ui#1 · os-warren · session_01JQwxbZeBv2y91towxasSUT

席位核对

ACCEPT · seat domain:ui#1 · session_01JQwxbZeBv2y91towxasSUT · head f97acde5 · 2026-10-28T15:11Z

席位意见:执行裁决 Q3 B。18 个在任何 CI 都不跑的 live e2e spec 逐个在工作区后端实跑:15 个绿的保留,由 Nightly Tiers 的 showcase 分片每晚跑(红了会自动立卡并点名 spec);3 个删除(2 个已过时、1 个与 showcase 自带的夜间冒烟重复)。空转的 MSW 测试早已不在,这里清掉了残留的 MSW 忽略项。不是 Tier H。

  1. Shape: Fixes #25914 (Q1 A done by the devx lane in test(ui-live-e2e): pin the live lane's backend to the published 18.2.0 #27167 / ci(live-e2e): boot the workspace backend and run the live lane as the required Live E2E UI job #27212; Q2 "no"; Q3 B and the title's MSW clause done here); 9 files, +275/−239: examples/app-showcase/test/console-live-specs.live.test.ts (new, the nightly wrapper), ui/package.json (test:e2e:live:nightly, the kept list's one home), three deleted specs, ui/e2e/console-rendering.spec.ts (four MSW ignore entries out), and three docs/qa/platform-checklist/areas/*.json ledgers (6 citations repointed or dropped, each with a revision-history entry). skip-changeset.
  2. Premise measured: route A as amended (6470826683): the wrapper sits in the showcase package, whose vitest config already collects *.live.test.* in the nightly live tier, boots the same stack as the required Live E2E UI job (workspace backend, Console built with VITE_BASE_PATH=/, vite preview), and runs the script by name, so the list has one home. Per-spec table in the PR body: all 18 run alone on the workspace backend; deletions are studio-record-page and detail-related-list (red twice; the latter waits for a /record/ID route the record-open preference, console list Display menu: 「打开记录」 (drawer | split) as a per-user preference; an object or view declaring page shows the declaration instead; the name cell's hover ↗ opens the record as a full page #26681, no longer navigates to) and showcase-smoke (its 29 paths and 4 assertions are inside the showcase package's stricter nightly smoke). The four required specs and the Live E2E UI job are untouched.
  3. Gates / check-runs: PR check-runs on f97acde5: 51 success, 13 skipped, 0 failure; mergeable_state clean. Dev's local run: 55/55 derived gates exit 0; the wrapper end to end on the workspace backend: 25 passed, exit 0; check:platform-checklist exit 0; console-rendering 3 passed. Seat trial merge with origin/main is clean.
  4. Accepted deviations: Fixes instead of Part of, because every clause is now closed. The report opens with the signature line pm(post-stamped): every seat post opens with a signature line LANE#N · ACCOUNT · SESSION, refused without one; the recognisers skip it #27263 requires.
  5. Out of scope: two QA acceptance lines still say a record page is "seeded from the default layout", which now holds only for full pages; noted in the ledger history entries and left to the ledger's owning card. Skills-docs: none — test lanes only.
  6. Landing: not Tier H (no .github/**); the seat readies and arms auto-merge.

Generated by Claude Code

@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 28, 2026 15:12
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 28, 2026
Merged via the queue into main with commit 65b4920 Oct 28, 2026
65 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-aj3s0c branch October 28, 2026 15:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file size/l skip-changeset PR has no user-facing published change; bypasses the changeset gate tests

Projects

None yet

2 participants