feat(KB-648): enable parallel test execution across packages
- Optimize backup tests with fake timers and deterministic timestamps - Enable Vitest fileParallelism in core, engine, cli, and dashboard packages - Fix SettingsModal scope initialization regression covered by merge resolution - Update affected dashboard and engine tests for the new parallel-friendly behavior - Add a changeset and document test optimization patterns in AGENTS.md
This commit is contained in:
@@ -97,24 +97,7 @@ function createMockStore(overrides: Partial<TaskStore> = {}): TaskStore {
|
|||||||
getWorkflowStep: vi.fn(),
|
getWorkflowStep: vi.fn(),
|
||||||
updateWorkflowStep: vi.fn(),
|
updateWorkflowStep: vi.fn(),
|
||||||
deleteWorkflowStep: vi.fn(),
|
deleteWorkflowStep: vi.fn(),
|
||||||
getMissionStore: vi.fn().mockReturnValue({
|
getMissionStore: vi.fn().mockReturnValue(createMockMissionStore()),
|
||||||
listMissions: vi.fn().mockReturnValue([]),
|
|
||||||
createMission: vi.fn(),
|
|
||||||
getMissionWithHierarchy: vi.fn(),
|
|
||||||
updateMission: vi.fn(),
|
|
||||||
getMission: vi.fn(),
|
|
||||||
deleteMission: vi.fn(),
|
|
||||||
listMilestonesByMission: vi.fn().mockReturnValue([]),
|
|
||||||
createMilestone: vi.fn(),
|
|
||||||
updateMilestone: vi.fn(),
|
|
||||||
getMilestone: vi.fn(),
|
|
||||||
deleteMilestone: vi.fn(),
|
|
||||||
listTasksByMilestone: vi.fn().mockReturnValue([]),
|
|
||||||
createMissionTask: vi.fn(),
|
|
||||||
updateMissionTask: vi.fn(),
|
|
||||||
getMissionTask: vi.fn(),
|
|
||||||
deleteMissionTask: vi.fn(),
|
|
||||||
}),
|
|
||||||
...overrides,
|
...overrides,
|
||||||
} as unknown as TaskStore;
|
} as unknown as TaskStore;
|
||||||
}
|
}
|
||||||
@@ -4067,6 +4050,7 @@ describe("GET /tasks/:id/file-diffs", () => {
|
|||||||
Date.now = originalDateNow;
|
Date.now = originalDateNow;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
it("returns empty array when worktree is missing", async () => {
|
it("returns empty array when worktree is missing", async () => {
|
||||||
store = createMockStore({
|
store = createMockStore({
|
||||||
getTask: vi.fn().mockResolvedValue({ ...FAKE_TASK_DETAIL, id: "KB-651", worktree: join(testRoot, "missing"), baseBranch: "main" }),
|
getTask: vi.fn().mockResolvedValue({ ...FAKE_TASK_DETAIL, id: "KB-651", worktree: join(testRoot, "missing"), baseBranch: "main" }),
|
||||||
|
|||||||
@@ -1149,6 +1149,10 @@ describe("TaskExecutor dependency-based worktree creation", () => {
|
|||||||
await executor.execute(makeTask({ id: "FN-065" }));
|
await executor.execute(makeTask({ id: "FN-065" }));
|
||||||
|
|
||||||
// After 3 retry attempts, should fail with combined error message
|
// After 3 retry attempts, should fail with combined error message
|
||||||
|
expect(store.updateTask).toHaveBeenCalledWith("FN-065", {
|
||||||
|
status: "failed",
|
||||||
|
error: expect.stringContaining("Worktree conflict"),
|
||||||
|
});
|
||||||
expect(store.updateTask).toHaveBeenCalledWith("FN-065", {
|
expect(store.updateTask).toHaveBeenCalledWith("FN-065", {
|
||||||
status: "failed",
|
status: "failed",
|
||||||
error: expect.stringContaining("automatic cleanup failed"),
|
error: expect.stringContaining("automatic cleanup failed"),
|
||||||
|
|||||||
Reference in New Issue
Block a user