diff --git a/packages/insomnia-smoke-test/playwright/pages/project/index.ts b/packages/insomnia-smoke-test/playwright/pages/project/index.ts index 963ac944bf..1fe14e786a 100644 --- a/packages/insomnia-smoke-test/playwright/pages/project/index.ts +++ b/packages/insomnia-smoke-test/playwright/pages/project/index.ts @@ -229,7 +229,7 @@ export class ProjectPage extends BasePage { await this.page.getByRole('textbox', { name: 'Project name' }).click(); await this.page.getByRole('textbox', { name: 'Project name' }).press('ControlOrMeta+a'); await this.page.getByRole('textbox', { name: 'Project name' }).fill(name); - await this.page.getByText('Git Sync').click(); + await this.selectStorageType('git'); await this.page.getByRole('button', { name: 'Git Credentials Authorized as' }).click(); await this.page.getByRole('option', { name: 'Custom Git Credential' }).click(); await this.page.getByRole('textbox', { name: 'Repository URL' }).click(); @@ -249,7 +249,7 @@ export class ProjectPage extends BasePage { await this.page.getByRole('textbox', { name: 'Project name' }).click(); await this.page.getByRole('textbox', { name: 'Project name' }).press('ControlOrMeta+a'); await this.page.getByRole('textbox', { name: 'Project name' }).fill(name); - await this.page.getByText('Git Sync').click(); + await this.selectStorageType('git'); // The credential select defaults to whichever credential is first (which can be // the "System Git Credentials" native provider). Open it via its stable label and // explicitly pick the custom Access Token credential rather than relying on the default. @@ -286,6 +286,16 @@ export class ProjectPage extends BasePage { await this.sidebar.selectProject(name); } + /** + * Clicks "Move repository to another folder" in the project settings modal. + * Chains right after that modal opens (which itself follows the "Create or + * update dialog" from createGitSyncProject closing) - same stale-backdrop + * race as chooseGitProjectFolderForOpen(), so this needs the same guard. + */ + async moveRepositoryToAnotherFolder(): Promise { + await this.clickReliably(this.page.getByRole('button', { name: 'Move repository to another folder' })); + } + // =========================================================================== // Import Operations // =========================================================================== diff --git a/packages/insomnia-smoke-test/tests/smoke/git-repo-relocation.test.ts b/packages/insomnia-smoke-test/tests/smoke/git-repo-relocation.test.ts index cb32740826..e1c462a55e 100644 --- a/packages/insomnia-smoke-test/tests/smoke/git-repo-relocation.test.ts +++ b/packages/insomnia-smoke-test/tests/smoke/git-repo-relocation.test.ts @@ -38,7 +38,7 @@ test.describe('Git repository relocation', () => { await openProjectSettingsModal(insomnia, GIT_PROJECT_NAME); await mockOpenDialogForDirectory(insomnia.app, destDir); - await page.getByRole('button', { name: 'Move repository to another folder' }).click(); + await insomnia.projectPage.moveRepositoryToAnotherFolder(); // Path display updates immediately from the action result (before the loader revalidates). await expect.soft(page.getByTitle(destDir)).toBeVisible({ timeout: 30_000 }); @@ -63,7 +63,7 @@ test.describe('Git repository relocation', () => { await openProjectSettingsModal(insomnia, GIT_PROJECT_NAME); await mockOpenDialogForDirectory(insomnia.app, destDir); - await page.getByRole('button', { name: 'Move repository to another folder' }).click(); + await insomnia.projectPage.moveRepositoryToAnotherFolder(); await expect.soft(page.getByTitle(destDir)).toBeVisible({ timeout: 30_000 }); await expect.soft(page.getByText(/Repository moved to/i)).toBeVisible({ timeout: 15_000 }); @@ -85,7 +85,7 @@ test.describe('Git repository relocation', () => { await openProjectSettingsModal(insomnia, GIT_PROJECT_NAME); await mockOpenDialogForDirectory(insomnia.app, destDir); - await page.getByRole('button', { name: 'Move repository to another folder' }).click(); + await insomnia.projectPage.moveRepositoryToAnotherFolder(); // Error banner text matches relocateGitRepoAction's non-empty/non-git message. await expect.soft(page.getByText(/isn't a git repository/i)).toBeVisible({ timeout: 15_000 });