Uh oh!
There was an error while loading. Please reload this page.
test(metadata-admin): Studio object-designer dogfood gate (F1-F6) + restore F6 wording - #1941
Merged
Conversation
…gner Stable selectors for the live-e2e/dogfood gate (no behavior change): object-name-input, field-apiname-input, field-label-input (via an optional InspectorTextField testId prop), package-id-input/package-name-input, package-switcher, source-editor, metadata-validation-banner, readonly-banner. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
A "drive the Studio designer as a user" regression gate for the UX classes fixed in #1926 — the kind static gates (build/unit/spec-liveness) miss because the break only appears when a real user drives the real controlled inputs against the real spec validator. Live e2e (e2e/live/studio-object-designer.spec.ts, runs against the real stack): F2 — object Name accepts a TYPED underscore. Must pressSequentially, not fill(): .fill() sets the value in one shot and hides the per-keystroke trim. Proven to go red when the trailing-trim bug is reintroduced. F3 — a field API name derives from its label on blur. F4 — adding a picklist + an empty option row does NOT trip spec validation. Live validation is debounced, so the negative assertion settles first; proven red when empty rows are persisted again. F1 — a newly created package appears in the switcher without a reload (creates + cleans up a throwaway package). Component/unit (fast layer, no backend): F5 — JsonSourceEditor falls back to an editable textarea when Monaco can't paint (offline/CSP/worker-blocked). fallbackDelayMs added so the test doesn't wait the full grace period. F6 — artifactLockedBanner wording (en + zh): not "shipped by a code package", and states the real edit path. This gate immediately earned its keep: the F6 test failed on first run because a parallel PR (#1937, branched off pre-#1926 main) had silently reverted the banner wording. Re-applied here (i18n.ts) — exactly the regression class the gate exists to catch. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The latest updates on your projects. Learn more about Vercel for GitHub. |
Contributor
✅ Console Performance Budget
📦 Bundle Size Report
Size Limits
|
Uh oh!
There was an error while loading. Please reload this page.
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 freeto 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.
Summary
A regression gate that drives the Studio object designer as a business user and pins the six UX classes fixed in #1926 — the kind static gates (build / unit / spec-liveness) miss because the break only appears when a real user drives the real controlled inputs against the real spec validator.
Two layers, matching the repo's existing split:
Live e2e —
e2e/live/studio-object-designer.spec.ts(thetest:e2e:livesuite, run against a real stack; excluded from the default CI e2e via the existingtestIgnore: ['**/live/**']):pressSequentially, not.fill()—.fill()sets the value in one shot and would hide the per-keystroke trim.Component / unit (fast layer, CI-gated by the existing
Testjob):JsonSourceEditorfalls back to an editable textarea when Monaco can't paint (offline / CSP / blocked workers). Added a test-tunablefallbackDelayMs.artifactLockedBannerwording (en + zh): not "shipped by a code package", and states the real edit path.Plus a hooks-only commit
data-testidhooks for stable selectors (no behavior change):object-name-input,field-apiname-input,field-label-input(via an optionalInspectorTextFieldtestId),package-id-input/package-name-input,package-switcher,source-editor,metadata-validation-banner,readonly-banner.This gate immediately earned its keep
The F6 test failed on its first run: a parallel PR (#1937, branched off pre-#1926
main) had silently reverted the banner wording back to "shipped by a code package". Re-applied here (i18n.ts) — exactly the regression class this gate exists to catch.Verification
_trim is reintroduced; F4 goes red when empty option rows are persisted again.🤖 Generated with Claude Code