test(app): remove cross-worktree pane regressions
This commit is contained in:
parent
72a69c33bf
commit
e629f8c54a
2 changed files with 16 additions and 64 deletions
|
|
@ -4,7 +4,6 @@ import { mockOpenCodeServer } from "../utils/mock-server"
|
|||
import { expectAppVisible, expectSessionTitle } from "../utils/waits"
|
||||
|
||||
const directory = "C:/OpenCode/ReviewTabSwitch"
|
||||
const otherDirectory = "C:/OpenCode/ReviewTabSwitchOther"
|
||||
const projectID = "proj_review_tab_switch"
|
||||
const sessionA = "ses_review_tab_a"
|
||||
const sessionB = "ses_review_tab_b"
|
||||
|
|
@ -59,23 +58,6 @@ test("keeps the v2 review pane mounted when switching session tabs in a workspac
|
|||
await expect(page.getByRole("button", { name: "generated-2739.ts" })).toBeVisible()
|
||||
})
|
||||
|
||||
test("keeps the v2 review pane mounted when switching session tabs across worktrees", async ({ page }) => {
|
||||
await setup(page, otherDirectory)
|
||||
|
||||
await page.goto(sessionHref(sessionA))
|
||||
await expectSessionTitle(page, titleA)
|
||||
|
||||
await page.getByRole("button", { name: "Toggle review" }).click()
|
||||
const review = page.locator('#review-panel [data-component="session-review-v2"]')
|
||||
await expectAppVisible(review)
|
||||
await writeProbe(page)
|
||||
|
||||
await switchTab(page, titleB)
|
||||
await expectSessionTitle(page, titleB)
|
||||
await expectAppVisible(review)
|
||||
expect(await readProbe(page)).toBe(PROBE)
|
||||
})
|
||||
|
||||
type Probed = HTMLElement & { __e2eProbe?: string }
|
||||
|
||||
async function switchTab(page: Page, title: string) {
|
||||
|
|
@ -92,7 +74,7 @@ async function readProbe(page: Page) {
|
|||
return page.locator('#review-panel [data-component="session-review-v2"]').evaluate((el) => (el as Probed).__e2eProbe)
|
||||
}
|
||||
|
||||
async function setup(page: Page, destinationDirectory = directory) {
|
||||
async function setup(page: Page) {
|
||||
await mockOpenCodeServer(page, {
|
||||
directory,
|
||||
project: {
|
||||
|
|
@ -114,22 +96,19 @@ async function setup(page: Page, destinationDirectory = directory) {
|
|||
connected: ["opencode"],
|
||||
default: { providerID: "opencode", modelID: "test" },
|
||||
},
|
||||
sessions: [
|
||||
session(sessionA, titleA, 1700000000000, directory),
|
||||
session(sessionB, titleB, 1700000001000, destinationDirectory),
|
||||
],
|
||||
sessions: [session(sessionA, titleA, 1700000000000), session(sessionB, titleB, 1700000001000)],
|
||||
vcsDiff: diffs,
|
||||
pageMessages: () => ({ items: [] }),
|
||||
})
|
||||
|
||||
await page.addInitScript(
|
||||
({ directories, server, sessions }) => {
|
||||
({ directory, server, sessions }) => {
|
||||
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
|
||||
localStorage.setItem(
|
||||
"opencode.global.dat:server",
|
||||
JSON.stringify({
|
||||
projects: { local: directories.map((worktree: string) => ({ worktree, expanded: true })) },
|
||||
lastProject: { local: directories[0] },
|
||||
projects: { local: [{ worktree: directory, expanded: true }] },
|
||||
lastProject: { local: directory },
|
||||
}),
|
||||
)
|
||||
localStorage.setItem(
|
||||
|
|
@ -137,16 +116,16 @@ async function setup(page: Page, destinationDirectory = directory) {
|
|||
JSON.stringify(sessions.map((sessionId: string) => ({ type: "session", server, sessionId }))),
|
||||
)
|
||||
},
|
||||
{ directories: [...new Set([directory, destinationDirectory])], server, sessions: [sessionA, sessionB] },
|
||||
{ directory, server, sessions: [sessionA, sessionB] },
|
||||
)
|
||||
}
|
||||
|
||||
function session(id: string, title: string, created: number, worktree: string) {
|
||||
function session(id: string, title: string, created: number) {
|
||||
return {
|
||||
id,
|
||||
slug: id,
|
||||
projectID,
|
||||
directory: worktree,
|
||||
directory,
|
||||
title,
|
||||
version: "dev",
|
||||
time: { created, updated: created },
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@ import { mockOpenCodeServer } from "../utils/mock-server"
|
|||
import { expectSessionTitle } from "../utils/waits"
|
||||
|
||||
const directory = "C:/OpenCode/TerminalTabSwitch"
|
||||
const otherDirectory = "C:/OpenCode/TerminalTabSwitchOther"
|
||||
const projectID = "proj_terminal_tab_switch"
|
||||
const sessionA = "ses_terminal_tab_a"
|
||||
const sessionB = "ses_terminal_tab_b"
|
||||
|
|
@ -49,29 +48,6 @@ test("keeps the terminal session alive when switching session tabs in a workspac
|
|||
expect(connections.length).toBe(1)
|
||||
})
|
||||
|
||||
test("keeps the terminal pane mounted when switching session tabs across worktrees", async ({ page }) => {
|
||||
await setup(page, otherDirectory)
|
||||
|
||||
await page.goto(sessionHref(sessionB))
|
||||
await expectSessionTitle(page, titleB)
|
||||
await page.keyboard.press("Control+Backquote")
|
||||
await expect(page.locator("#terminal-panel")).toBeVisible()
|
||||
|
||||
await switchTab(page, titleA)
|
||||
await expectSessionTitle(page, titleA)
|
||||
await page.keyboard.press("Control+Backquote")
|
||||
|
||||
const panel = page.locator("#terminal-panel")
|
||||
await expect(panel).toBeVisible()
|
||||
await panel.evaluate((el, probe) => {
|
||||
;(el as Probed).__e2eProbe = probe
|
||||
}, PROBE)
|
||||
|
||||
await switchTab(page, titleB)
|
||||
await expectSessionTitle(page, titleB)
|
||||
expect(await panel.evaluate((el) => (el as Probed).__e2eProbe)).toBe(PROBE)
|
||||
})
|
||||
|
||||
type Probed = HTMLElement & { __e2eProbe?: string }
|
||||
|
||||
async function switchTab(page: Page, title: string) {
|
||||
|
|
@ -88,7 +64,7 @@ async function readProbe(page: Page) {
|
|||
return page.locator('[data-component="terminal"]').evaluate((el) => (el as Probed).__e2eProbe)
|
||||
}
|
||||
|
||||
async function setup(page: Page, destinationDirectory = directory) {
|
||||
async function setup(page: Page) {
|
||||
await mockOpenCodeServer(page, {
|
||||
protocol: "v2",
|
||||
directory,
|
||||
|
|
@ -111,10 +87,7 @@ async function setup(page: Page, destinationDirectory = directory) {
|
|||
connected: ["opencode"],
|
||||
default: { providerID: "opencode", modelID: "test" },
|
||||
},
|
||||
sessions: [
|
||||
session(sessionA, titleA, 1700000000000, directory),
|
||||
session(sessionB, titleB, 1700000001000, destinationDirectory),
|
||||
],
|
||||
sessions: [session(sessionA, titleA, 1700000000000), session(sessionB, titleB, 1700000001000)],
|
||||
pageMessages: () => ({ items: [] }),
|
||||
})
|
||||
await page.route("**/api/pty*", (route) =>
|
||||
|
|
@ -148,13 +121,13 @@ async function setup(page: Page, destinationDirectory = directory) {
|
|||
})
|
||||
|
||||
await page.addInitScript(
|
||||
({ directories, server, sessions }) => {
|
||||
({ directory, server, sessions }) => {
|
||||
localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } }))
|
||||
localStorage.setItem(
|
||||
"opencode.global.dat:server",
|
||||
JSON.stringify({
|
||||
projects: { local: directories.map((worktree: string) => ({ worktree, expanded: true })) },
|
||||
lastProject: { local: directories[0] },
|
||||
projects: { local: [{ worktree: directory, expanded: true }] },
|
||||
lastProject: { local: directory },
|
||||
}),
|
||||
)
|
||||
localStorage.setItem(
|
||||
|
|
@ -162,17 +135,17 @@ async function setup(page: Page, destinationDirectory = directory) {
|
|||
JSON.stringify(sessions.map((sessionId: string) => ({ type: "session", server, sessionId }))),
|
||||
)
|
||||
},
|
||||
{ directories: [...new Set([directory, destinationDirectory])], server, sessions: [sessionA, sessionB] },
|
||||
{ directory, server, sessions: [sessionA, sessionB] },
|
||||
)
|
||||
return connections
|
||||
}
|
||||
|
||||
function session(id: string, title: string, created: number, worktree: string) {
|
||||
function session(id: string, title: string, created: number) {
|
||||
return {
|
||||
id,
|
||||
slug: id,
|
||||
projectID,
|
||||
directory: worktree,
|
||||
directory,
|
||||
title,
|
||||
version: "dev",
|
||||
time: { created, updated: created },
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue