Fix New Workspace PR worktree creation (#1565)

* Fix PR worktree creation from New Workspace

* Use fixture default branch in GitHub E2E clone
This commit is contained in:
Mohamed Boudra
2026-06-17 15:15:58 +08:00
committed by GitHub
parent 11abbcc630
commit 1340a80144
5 changed files with 294 additions and 16 deletions
+51 -1
View File
@@ -29,7 +29,11 @@ import {
submitNewWorkspacePrompt,
} from "./helpers/new-workspace";
import { createTempGitRepo, readWorktreeBranchInfo } from "./helpers/workspace";
import { createTempGithubRepo, hasGithubAuth } from "./helpers/github-fixtures";
import {
cloneGithubRepoDefaultBranchOnly,
createTempGithubRepo,
hasGithubAuth,
} from "./helpers/github-fixtures";
import { getServerId } from "./helpers/server-id";
import {
expectSidebarWorkspaceSelected,
@@ -751,4 +755,50 @@ test.describe("New workspace flow", () => {
await ghRepo.cleanup();
}
});
test("selected GitHub PR creates the worktree from the PR head even when the head branch is not fetched", async ({
page,
}) => {
test.skip(!hasGithubAuth(), "Requires GitHub authentication (gh auth login)");
const ghRepo = await createTempGithubRepo({
category: "new-workspace-pr-worktree",
prs: [{ title: "Checkout PR worktree", state: "open" }],
});
const pr = ghRepo.prs[0]!;
const mainCheckout = await cloneGithubRepoDefaultBranchOnly(ghRepo);
try {
const openedProject = await openProjectViaDaemon(client, mainCheckout.path);
localWorkspaceIds.add(openedProject.workspaceId);
await gotoAppShell(page);
await waitForSidebarHydration(page);
await openNewWorkspaceComposer(page, {
projectKey: openedProject.projectKey,
projectDisplayName: openedProject.projectDisplayName,
});
await selectWorkspaceIsolation(page, "worktree");
await openStartingRefPicker(page);
await selectGitHubPrInPicker(page, pr.number);
await submitNewWorkspaceWithoutPrompt(page);
const worktree = await assertNewWorkspaceSidebarAndHeader(page, {
serverId: getServerId(),
client,
previousWorkspaceId: openedProject.workspaceId,
projectDisplayName: openedProject.projectDisplayName,
});
createdWorktreeDirectories.add(worktree.workspaceDirectory);
const branchInfo = await readWorktreeBranchInfo({
worktreePath: worktree.workspaceDirectory,
});
expect(branchInfo.currentBranch).toBe(pr.branch);
expect(existsSync(path.join(worktree.workspaceDirectory, "pr-1.txt"))).toBe(true);
} finally {
await mainCheckout.cleanup();
await ghRepo.cleanup();
}
});
});