Files
automaker/apps/ui/tests/git/worktree-integration.spec.ts
webdevcody fd5f7b873a fix: improve worktree branch handling in list route
- Updated the logic in the createListHandler to ensure that the branch name is correctly assigned, especially for the main worktree when it may be missing.
- Added checks to handle cases where the worktree directory might not exist, ensuring that removed worktrees are accurately tracked.
- Enhanced the final worktree entry handling to account for scenarios where the output does not end with a blank line, improving robustness.
2026-01-08 00:13:12 -05:00

70 lines
1.8 KiB
TypeScript

/**
* Worktree Integration E2E Test
*
* Happy path: Display worktree selector with main branch
*/
import { test, expect } from '@playwright/test';
import * as fs from 'fs';
import {
waitForNetworkIdle,
createTestGitRepo,
cleanupTempDir,
createTempDirPath,
setupProjectWithPath,
waitForBoardView,
authenticateForTests,
} from '../utils';
const TEST_TEMP_DIR = createTempDirPath('worktree-tests');
interface TestRepo {
path: string;
cleanup: () => Promise<void>;
}
test.describe('Worktree Integration', () => {
let testRepo: TestRepo;
test.beforeAll(async () => {
if (!fs.existsSync(TEST_TEMP_DIR)) {
fs.mkdirSync(TEST_TEMP_DIR, { recursive: true });
}
});
test.beforeEach(async () => {
testRepo = await createTestGitRepo(TEST_TEMP_DIR);
});
test.afterEach(async () => {
if (testRepo) {
await testRepo.cleanup();
}
});
test.afterAll(async () => {
cleanupTempDir(TEST_TEMP_DIR);
});
test('should display worktree selector with main branch', async ({ page }) => {
await setupProjectWithPath(page, testRepo.path);
await authenticateForTests(page);
await page.goto('/');
await page.waitForLoadState('load');
await waitForNetworkIdle(page);
await waitForBoardView(page);
// Wait for the worktree selector to appear (indicates API call completed)
const branchLabel = page.getByText('Branch:');
await expect(branchLabel).toBeVisible({ timeout: 10000 });
// Wait for the main branch button to appear
// This ensures the worktree API has returned data with the main branch
const mainBranchButton = page.locator('[data-testid="worktree-branch-main"]');
await expect(mainBranchButton).toBeVisible({ timeout: 15000 });
// Verify the branch name is displayed
await expect(mainBranchButton).toContainText('main');
});
});