From 8dd8c2592182c92d0fe3efdd7e9cff2e547f7510 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 27 Oct 2026 16:10:38 +0000 Subject: [PATCH 1/2] test(app-shell): flowCanvasChip-11665 awaits the lazy studio zh catalogue 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 --- .../StudioDesignSurface.flowCanvasChip-11665.test.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ui/packages/app-shell/src/views/studio-design/StudioDesignSurface.flowCanvasChip-11665.test.tsx b/ui/packages/app-shell/src/views/studio-design/StudioDesignSurface.flowCanvasChip-11665.test.tsx index c3b89f8757f..2a0420a9320 100644 --- a/ui/packages/app-shell/src/views/studio-design/StudioDesignSurface.flowCanvasChip-11665.test.tsx +++ b/ui/packages/app-shell/src/views/studio-design/StudioDesignSurface.flowCanvasChip-11665.test.tsx @@ -24,6 +24,12 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { render, screen, cleanup } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; import { I18nProvider } from '@object-ui/i18n'; +// The chip's tooltip row (`designer.field.apiName`) lives in `@object-ui/i18n`'s +// `studio` namespace, whose `zh` catalogue is fetched on demand. Resident before +// any case, so the zh tooltip is read after the catalogue lands, never racing it +// (objectstack#26692). +import { loadStudioCatalogue } from '@object-ui/i18n/namespaces/studio'; +await loadStudioCatalogue('zh'); const PKG = 'com.acme.app'; const API_NAME = 'nightly_digest'; From d3202677cdbc8109caf056d4fc8c50dd4e9754da Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 27 Oct 2026 17:11:14 +0000 Subject: [PATCH 2/2] test(app-shell): inspectorStrings.i18n-10804 awaits the lazy studio zh 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 --- .../inspectors/inspectorStrings.i18n-10804.test.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ui/packages/app-shell/src/views/metadata-admin/inspectors/inspectorStrings.i18n-10804.test.tsx b/ui/packages/app-shell/src/views/metadata-admin/inspectors/inspectorStrings.i18n-10804.test.tsx index 2882f59f6ae..d0fc657be8c 100644 --- a/ui/packages/app-shell/src/views/metadata-admin/inspectors/inspectorStrings.i18n-10804.test.tsx +++ b/ui/packages/app-shell/src/views/metadata-admin/inspectors/inspectorStrings.i18n-10804.test.tsx @@ -47,6 +47,12 @@ import * as React from 'react'; import { describe, it, expect, vi, afterEach } from 'vitest'; import { render, screen, cleanup, fireEvent, act, within } from '@testing-library/react'; import { I18nProvider } from '@object-ui/i18n'; +// The `engine.inspector.flowNode.*` rows live in `@object-ui/i18n`'s `studio` +// namespace (#25922 slice S2), whose `zh` catalogue is fetched on demand. +// Resident before any case, so `zhRow` reads the zh row, never the en fallback +// while the chunk is in flight (objectstack#26692). +import { loadStudioCatalogue } from '@object-ui/i18n/namespaces/studio'; +await loadStudioCatalogue('zh'); // Every roster in these inspectors comes through the shared metadata client // (stable identity, like the real memoized client). Nothing here needs a