Repository navigation
test(ui): promote the Studio live specs into Live E2E UI, with a stored-state re-read each - #27770
Merged
Merged
Conversation
…ed-state re-read each The object designer (F1-F4) and page editor specs move from test:e2e:live:nightly into test:e2e:live:ci under the promotion rule: 10/10 local runs on the workspace backend before and after the change, 3/3 consecutive green, and a 5/5 run of the enlarged allowlist. Each spec now reads back what the save stored through /meta: F4 saves the new object's draft into an environment-authored package (the showcase is code-provided and refuses saves) and asserts the stored picklist carries the one authored option and not the empty row; the page editor's Add block autosaves a draft, and the draft holds the new page:card block. Claude-Session: https://claude.ai/code/session_01Utp6CaYrosoxy8gyWwRM83 Co-authored-by: Claude <noreply@anthropic.com>
Contributor
Author
|
domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe 席位核对ACCEPT · head
Generated by Claude Code |
os-bill
pushed a commit
that referenced
this pull request
Oct 29, 2026
…-l13hln Resolves the ui/package.json conflict with #27770: its live:ci and nightly lines kept, plus read-only-member-record.spec.ts in the nightly list. Claude-Session: https://claude.ai/code/session_01Utp6CbDmdfNUqBtfbQtu5T Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Bill · project thread
Fixes #27554
Clause-②: no
Metadata-protocol: none
维护者速读
Live E2E UI的清单;两组各加一条「保存后经/meta回读存储内容」的断言。ui/package.json的两条脚本清单,不改产品代码。代价是Run the live e2e specs步骤本地从约 18 秒变成约 36 秒,仍远低于 [devx] Live E2E UI skips every server-only PR: widen its gate to the server packages the Console runs against, and pin the spec-time budget #27550 定的 2 分钟预算。回滚 = 把两个文件名移回test:e2e:live:nightly。ui/e2e/live/studio-object-designer.spec.ts的 F4(新建可写包、保存、回读草稿);ui/e2e/live/studio-editor.spec.ts的 Add block 用例尾部;ui/package.json两条脚本。Live E2E UI检查日志,Run the live e2e specs步骤应列出 11 条全部通过,其中 6 条来自两个 studio 文件,步骤耗时在 2 分钟内。What changes
ui/package.json:studio-object-designer.spec.tsandstudio-editor.spec.tsmove fromtest:e2e:live:nightlytotest:e2e:live:ci, the allowlist the requiredLive E2E UIjob runs. Both passed the promotion rule (readings below), so neither stays in nightly and no header carries a "kept in nightly" reason.studio-object-designer.spec.tsF4 now saves and reads back. The showcase package is provided by code, so a save into it is refused (WRITABLE_PACKAGE_REQUIRED, measured:PUT /api/v1/meta/object/NAME?mode=draft&package=com.example.showcaseanswers 422). F4 therefore authors its own package throughPOST /api/v1/packages, opens the designer on it, runs the same picklist + empty-row steps and the same two negative banner assertions as before, clicks Save, asserts thePUT ...?mode=draftanswered 2xx, and readsGET /api/v1/meta/object/NAME?state=draft: the stored object has exactly oneselectfield and itsoptionsequal[{ value: 'open', label: 'Open' }], so the empty row was not stored. The package is deleted infinally, as F1 already does for its own.studio-editor.spec.ts"Add block opens a block-type picker…" now picks Card after asserting the picker, waits for the editor's autosavePUT /api/v1/meta/page/NAME?mode=draft(asserted 2xx), and readsGET /api/v1/meta/page/NAME?state=draft: the first region holds one more block than the shipped copy, and the new last block ispage:card.:ciallowlist since this card, under the rule, the waysaved-view-filter.spec.tssays it.Why
The card's task 1–4: measure, promote what passes the 3/3 + 5/5 rule, add one stored-state re-read per spec, stay inside #27550's 2-minute budget for the
Run the live e2e specsstep. Both specs fit, so the higher-yield-only fallback (F4 / F1) did not apply.Verification
All runs: this branch's workspace backend (
ui/e2e/live/ci/start-backend.sh,objectstack dev --seed-admin --freshonexamples/app-showcase, port 4010) and the Console production build (VITE_BASE_PATH=/ vite build) served byvite previewon 5190 withDEV_PROXY_TARGET, theLive E2E UIjob's stack step for step;--retries 0; one long-lived backend across all runs (the CI job boots a fresh one per run, so this is the harder condition). Container: 4 shared cores.pnpm run test:e2e:live:ci(task 2's 5/5)Per-test time, 10 runs each (mean / max)
Budget: the two specs add about 18–20 s to the step locally (incumbent four 18–19 s wall, enlarged six 35–39 s). The job comment in
ci.ymlmeasured the incumbent step at 14–24 s (median 21 s) on CI, so the projected step is about 40 s, against the 120 s budget. This PR's ownLive E2E UIrun is the first CI reading.Nightly readings: the nightly live tier that runs
test:e2e:live:nightly(examples/app-showcase/test/console-live-specs.live.test.ts) has at most two scheduled runs since it was wired (2026-10-28 and 2026-10-29), and both of thoseNightly tiersruns failed on other shards' packages; their per-spec logs were not readable from this container (the job-log download is refused by the proxy). The ≥ 10 readings are therefore the local ones above, which the card allows.No ablation: the diff changes tests and a script list only, no product behaviour.
Gates at head
75f8060c:node scripts/pm/dispatch-gates.mjs --commandsderived 31 families from the three changed paths; each ran locally, plusnode scripts/check-sdui-manifest.mjs: 32 lines, every one exit 0;--ranreconciliation: 31 derived, 31 run, 0 NOT-MEASURED, 0 UNRUN. CI runs the rest (the repo-wide scans,Live E2E UIitself).Gate lines (command :: exit code)
Acceptance notes
.github/workflows/ci.yml'slive-e2e-uicomment still says "What it runs: the four allowlisted live specs"; it is now six.ci.ymlis out of bounds for this card, so the wording is left for whoever next edits that job; the count is not read by any gate.examples/app-showcase/test/console-live-specs.live.test.tssays "Four of its specs are the requiredLive E2E UIjob". Same stale count, outside this card's file surface; the test reads the nightly script by name, so its behaviour is unchanged (13 specs instead of 15).docs/qa/platform-checklist/areas/studio-authoring.jsonsays F4 "never publishes or reads the stored options". F4 now saves a draft and reads its stored options (it still does not publish), so that note is narrower than the spec now is; the ledger is its owner's to re-read, outside this card.Generated by Claude Code