Repository navigation
test(app-shell): flowCanvasChip-11665 awaits the lazy studio zh catalogue before reading the tooltip - #26800
Conversation
…ogue before reading the tooltip The zh case awaited only the caption testid and then read the chip's `title` (`designer.field.apiName`, a row of the lazy `studio` namespace) synchronously, so under a saturated Vite transform pipeline it could read the en row before the zh chunk landed. Load the catalogue at module scope, the shape the other studio-namespace zh tests already use. Claude-Session: https://claude.ai/code/session_01JQwxbXwuDiqzYUyEfANmtM Co-authored-by: Claude <noreply@anthropic.com>
|
The red test is Cause (read, not instrumented): #26780 (#25922 slice S2, merged to main after this branch's base, so it is in the CI merge ref) moved No fix exists yet; the same one-line preload fixes it. I am handing it to the ui seat to carry as its own card rather than widening this PR. One re-run of the failed jobs follows once this run completes. Generated by Claude Code |
…-998cn0 Claude-Session: https://claude.ai/code/session_01JQwxbXwuDiqzYUyEfANmtM Co-authored-by: Claude <noreply@anthropic.com>
…h catalogue before zhRow reads it #25922 slice S2 moved `engine.inspector.flowNode.*` into the lazy `studio` namespace; this suite's `zhRow()` reads `t(key, 'zh-CN')` synchronously, so it read the en row whenever the zh chunk had not landed (Test UI 3/16 on #26800, twice). Load the catalogue at module scope. Claude-Session: https://claude.ai/code/session_01JQwxbXwuDiqzYUyEfANmtM Co-authored-by: Claude <noreply@anthropic.com>
席位核对ACCEPT · seat 席位意见:两个测试文件各在模块作用域加
Generated by Claude Code |
⛔ merge queue 构建失败 — 先分诊,再决定要不要重排队列构建 40558907459 红了。队列跑的是全量套件(PR 侧 CI 只跑 affected 子集), 分类: 失败的 job(日志抽取,best effort):
跨 PR 相同签名(24h,按失败测试文件聚合):
历史信号:
分诊清单:
Generated by Claude Code · merge-queue-triage workflow (#4859) |
Requested by Warren · project thread
Fixes #26692
Clause-②: no
Metadata-protocol: none
维护者速读
flowCanvasChip-11665,在模块作用域先await loadStudioCatalogue('zh'),再跑用例;只改测试,不动源码。另修metadata-admin/inspectors/inspectorStrings.i18n-10804同类竞态(feat(ui): Studio inspector strings (page block, action, dataset, flow node, app nav, widget) move into the studio i18n namespace (#25922 slice S2) #26780 把 flowNode 文案移入 studio 懒加载包后暴露)。ui/packages/app-shell/src/views/studio-design/StudioDesignSurface.flowCanvasChip-11665.test.tsx第 27–32 行。pnpm --dir ui exec vitest run packages/app-shell/src/views/studio-design/StudioDesignSurface.flowCanvasChip-11665.test.tsx,应见 4 passed。What changes
The zh case of
StudioDesignSurface.flowCanvasChip-11665.test.tsxawaited onlyfindByTestId('auto-canvas-caption')and then asserted the chip'stitlesynchronously. That title isdesigner.field.apiName, a row of thestudioi18n namespace, whose zh catalogue is a lazyimport(). If the chunk had not landed, the title was still the en row, soTest UIcould go red on any PR whose shard ran this file.The test now loads the catalogue at module scope (
await loadStudioCatalogue('zh')), the same shape the other studio-namespace zh tests in app-shell already use (for exampleCelTestRunDialog.i18n-10862.test.tsx,BuilderLanding.environmentOverlayCopy-12171.test.ts). The cost moves into the import phase, outside any test or hook timeout, perui/AGENTS.mdtest discipline. No sleep, no retry wrapper, no quarantine.inspectorStrings.i18n-10804.test.tsxgets the same preload. #26780 (#25922 S2) movedengine.inspector.flowNode.*into the lazystudionamespace, and that test'szhRow()readst(key, 'zh-CN')synchronously, soTest UI (3/16)went red twice on8dd8c259(flowNode.kindread asNode).Why
Triage ruling 6444153925: the test awaits the catalogue. Of the two spellings the dispatch order offered (top-level preload, or
findBy/waitForon the title), this PR picks the top-level preload: it is the established pattern in this package, and it waits on the catalogue itself rather than on an RTL budget the loader can still overrun.Tests
Deterministic proof at head
d3202677(merge basec8583f80), under the shared verify lock. The studio zh loader (ui/packages/i18n/src/namespaces/studio/index.ts) was delayed 4000 ms throughscripts/ablation-replace.mjs; every mutation was restored (blob equals HEAD,git diff HEADempty).flowNode.kindzh read asNode)API namevsAPI 名称)Acceptance notes
inspectorStrings.i18n-10804went red. The seat's 8 other heuristic candidates (threeFlowNodeInspectortests,datasetPickers.authorText-11161,FlowPreview.removeNode-11772,flow-problems.removalRefusal-11838,previewStrings.i18n-10848,metadataError.heldWidget-11910) stayed green and are dropped: they compare the DOM witht()in the same tick, so a slow chunk leaves both sides en.@object-ui/app-shellis private and only a test file changed (skip-changeset).Verification
Gate families derived by
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackatd3202677(merge basec8583f80; 24 derived, 24 run, all exit 0), each run locally with exits captured before any pipe and reconciled with--ran; readings are in the os-dev report on #26692. Repo-wide scans (pnpm lint, the fullTest UImatrix) are CI's.Human Minimum
packages/specholds no runtime logic. (not touched)pnpm lintpasses. (CI)main, one pull request.packages/spectouched: its generated artifacts are regenerated and committed. (not touched)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.🤖 Generated with Claude Code
https://claude.ai/code/session_01JQwxbXwuDiqzYUyEfANmtM
Generated by Claude Code