fix(test): await retained shell layout after composer resize

The gesture host now stays mounted across breakpoints, so its presence no longer identifies compact layout. Report the current layout on the retained host and synchronize composer journeys with that state.
This commit is contained in:
Mohamed Boudra
2026-10-19 18:11:21 +02:00
parent 74028a3b6d
commit 05978bc5d0
3 changed files with 12 additions and 8 deletions
@@ -247,9 +247,7 @@ test.describe("New workspace: fullscreen composer across the compact breakpoint"
await expectNewWorkspaceDraft(page, `${draft} wide`);
});
// Terminal mode and its prompt are screen state, and the shell remounts the screen
// at the breakpoint, so the terminal prompt's fullscreen is exercised on the phone
// layout only.
// Exercise the terminal prompt's fullscreen and compact launch sheet on the phone.
await test.step("terminal: the prompt's fullscreen shows only exit and Launch", async () => {
await resizeComposerViewport(page, "portrait");
// The compact launch control opens a sheet, not the desktop menu.
+5 -4
View File
@@ -363,10 +363,11 @@ export async function resizeComposerViewport(
await page.setViewportSize(sizes[orientation]);
// Before the app has loaded there is no layout to wait for.
if (page.url() === "about:blank") return;
// Crossing the compact breakpoint remounts the shell and the editor. Anything that
// follows (a shortcut, a locator) belongs to the layout the new size implies, so
// wait for that layout before returning.
await expect(page.getByTestId("compact-shell")).toHaveCount(orientation === "landscape" ? 0 : 1);
// The shell and editor survive the breakpoint. Wait for the shell's layout
// marker to update before interacting with the resized composer.
await expect(
page.getByTestId(orientation === "landscape" ? "wide-shell" : "compact-shell"),
).toBeVisible();
}
export async function selectComposerDraftRange(
page: Page,
+6 -1
View File
@@ -679,10 +679,15 @@ function MobileGestureWrapper({
chromeEnabled: boolean;
}) {
const openGesture = useOpenAgentListGesture(chromeEnabled);
const isCompactLayout = useIsCompactFormFactor();
return (
<GestureDetector gesture={openGesture} touchAction={MOBILE_WEB_GESTURE_TOUCH_ACTION}>
<View collapsable={false} style={layoutStyles.surfaceFill} testID="compact-shell">
<View
collapsable={false}
style={layoutStyles.surfaceFill}
testID={isCompactLayout ? "compact-shell" : "wide-shell"}
>
{children}
</View>
</GestureDetector>