feat(KB-093): add PR-first merge mode with configurable merge strategies
- Add mergeStrategy setting (fast-forward, squash, merge-commit) to config - Implement PR-first auto-completion flow that monitors PR merge status - Wire PR monitoring service to detect merge completion and trigger auto-close - Add PR status UI to dashboard with merge progress indicator - Update settings modal with merge strategy selector - Add changeset for PR-first merge mode feature
This commit is contained in:
@@ -1233,6 +1233,50 @@ describe("TaskDetailModal", () => {
|
||||
expect(screen.getByText("Merge & Close")).toBeTruthy();
|
||||
expect(screen.getByText("Back to In Progress")).toBeTruthy();
|
||||
});
|
||||
|
||||
it("shows PR automation waiting label instead of Merge & Close when awaiting PR checks", () => {
|
||||
render(
|
||||
<TaskDetailModal
|
||||
task={makeTask({ column: "in-review" as Column, status: "awaiting-pr-checks", prInfo: {
|
||||
url: "https://github.com/owner/repo/pull/42",
|
||||
number: 42,
|
||||
status: "open",
|
||||
title: "Task",
|
||||
headBranch: "kb/kb-099",
|
||||
baseBranch: "main",
|
||||
commentCount: 0,
|
||||
} })}
|
||||
onClose={noop}
|
||||
onMoveTask={noopMove}
|
||||
onDeleteTask={noopDelete}
|
||||
onMergeTask={noopMerge}
|
||||
onOpenDetail={noopOpenDetail}
|
||||
addToast={noop}
|
||||
/>,
|
||||
);
|
||||
|
||||
const button = screen.getByText("Awaiting PR checks") as HTMLButtonElement;
|
||||
expect(button.disabled).toBe(true);
|
||||
expect(screen.queryByText("Merge & Close")).toBeNull();
|
||||
});
|
||||
|
||||
it("shows Creating PR label while PR-first automation is creating a PR", () => {
|
||||
render(
|
||||
<TaskDetailModal
|
||||
task={makeTask({ column: "in-review" as Column, status: "creating-pr" })}
|
||||
onClose={noop}
|
||||
onMoveTask={noopMove}
|
||||
onDeleteTask={noopDelete}
|
||||
onMergeTask={noopMerge}
|
||||
onOpenDetail={noopOpenDetail}
|
||||
addToast={noop}
|
||||
/>,
|
||||
);
|
||||
|
||||
const button = screen.getByText("Creating PR…") as HTMLButtonElement;
|
||||
expect(button.disabled).toBe(true);
|
||||
expect(screen.queryByText("Merge & Close")).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
describe("dependency dropdown search", () => {
|
||||
|
||||
Reference in New Issue
Block a user