mirror of
https://github.com/getpaseo/paseo.git
synced 2026-10-30 05:02:58 +00:00
* feat(app): unify Explorer tabs and refine interface styling Give Explorer the workspace tab controls while keeping launcher choices separate from drag-and-drop support. Upgrade Lucide and set a shared icon stroke width for consistent styling. Reduce the desktop composer bottom inset to align the action row with its corners. * fix(app): show active Explorer tabs in foreground The shared row coupled foreground styling to keyboard shortcut ownership. Separate those concerns so Explorer can highlight its active tab while Cmd+T remains with the workspace pane. * fix(app): refine Explorer close controls and launch options * test(app): respect singleton Files in Explorer plugin workflow * test(server): trim unused setup from no-track checkout regression * test(app): count visible main tab rows after pane moves
67 lines
2.7 KiB
TypeScript
67 lines
2.7 KiB
TypeScript
import { expect, type Locator, type Page } from "@playwright/test";
|
|
import { test } from "../support/fixtures";
|
|
import { runWorkspaceActionFromCommandCenter } from "../support/helpers/command-center-workspace-actions";
|
|
import { clickNewChat, gotoWorkspace } from "../support/helpers/launcher";
|
|
import { seedWorkspace } from "../support/helpers/seed-client";
|
|
import { waitForWorkspaceTabsVisible } from "../support/helpers/workspace-tabs";
|
|
|
|
function visibleNewTabPanel(page: Page): Locator {
|
|
return page.getByTestId("workspace-new-tab-panel").filter({ visible: true });
|
|
}
|
|
|
|
async function expectLauncherSelection(launcher: Locator, name: string): Promise<void> {
|
|
await expect(launcher.getByRole("button", { name, exact: true })).toBeFocused();
|
|
}
|
|
|
|
async function openExplorerWithKeyboard(page: Page): Promise<Locator> {
|
|
const modifier = process.platform === "darwin" ? "Meta" : "Control";
|
|
await page.keyboard.press(`${modifier}+E`);
|
|
const explorer = page.getByTestId("workspace-explorer-sidebar").filter({ visible: true });
|
|
await expect(explorer).toBeVisible({ timeout: 30_000 });
|
|
return explorer;
|
|
}
|
|
|
|
test.describe("New tab keyboard launcher", () => {
|
|
test("Cmd+E reveals the repository Changes tree", async ({ page }) => {
|
|
const workspace = await seedWorkspace({ repoPrefix: "explorer-keyboard-" });
|
|
|
|
try {
|
|
await gotoWorkspace(page, workspace.workspaceId);
|
|
await waitForWorkspaceTabsVisible(page);
|
|
|
|
const explorer = await openExplorerWithKeyboard(page);
|
|
await expect(explorer.getByTestId("workspace-tab-changes_tree")).toBeVisible();
|
|
await expect(explorer.getByTestId("changes-tree-panel")).toBeVisible();
|
|
} finally {
|
|
await workspace.cleanup();
|
|
}
|
|
});
|
|
|
|
test("a new split pane focuses its launcher and supports arrow navigation", async ({ page }) => {
|
|
const workspace = await seedWorkspace({ repoPrefix: "empty-pane-split-keyboard-" });
|
|
|
|
try {
|
|
await gotoWorkspace(page, workspace.workspaceId);
|
|
await waitForWorkspaceTabsVisible(page);
|
|
await clickNewChat(page);
|
|
await runWorkspaceActionFromCommandCenter(page, "Split pane right");
|
|
|
|
const launcher = visibleNewTabPanel(page);
|
|
await expect(launcher).toBeVisible({ timeout: 30_000 });
|
|
await expectLauncherSelection(launcher, "Agent");
|
|
|
|
await page.keyboard.press("ArrowDown");
|
|
await expectLauncherSelection(launcher, "Terminal");
|
|
await page.keyboard.press("ArrowDown");
|
|
await expectLauncherSelection(launcher, "Diff");
|
|
await page.keyboard.press("Enter");
|
|
|
|
await expect(
|
|
page.getByTestId("workspace-tab-working_diff").filter({ visible: true }),
|
|
).toBeVisible({ timeout: 30_000 });
|
|
} finally {
|
|
await workspace.cleanup();
|
|
}
|
|
});
|
|
});
|