n8n/packages/testing/playwright/pages/SettingsEnvironmentPage.ts
n8n-cat-bot[bot] 192b5b8436
refactor: Centralize Element Plus el-message-box selectors into a (#32879)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 18:15:29 +00:00

71 lines
2.0 KiB
TypeScript

import { expect, type Locator } from '@playwright/test';
import { BasePage } from './BasePage';
import { MessageBox } from './components/messageBoxLocators';
export class SettingsEnvironmentPage extends BasePage {
async goto(): Promise<void> {
await this.page.goto('/settings/environments');
}
getConnectButton(): Locator {
return this.page.getByTestId('source-control-connect-button');
}
getDisconnectButton(): Locator {
return this.page.getByTestId('source-control-disconnect-button');
}
getRepoUrlInput(): Locator {
return this.page.getByPlaceholder('git@github.com:user/repository.git');
}
getBranchSelect(): Locator {
return this.page.getByTestId('source-control-branch-select');
}
getSaveButton(): Locator {
return this.page.getByTestId('source-control-save-settings-button');
}
getRefreshSshKeyButton(): Locator {
return this.page.getByTestId('source-control-refresh-ssh-key-button');
}
async waitForConnectForm(): Promise<void> {
await expect(this.getRepoUrlInput()).toBeEditable();
await expect(this.getRefreshSshKeyButton()).toBeVisible();
}
async fillRepoUrl(url: string): Promise<void> {
await expect(this.getRepoUrlInput()).toBeEditable();
await this.getRepoUrlInput().fill(url);
await this.getRepoUrlInput().blur();
}
async selectBranch(branchName: string): Promise<void> {
await this.getBranchSelect().click();
await this.getVisiblePopoverOption(branchName).click();
}
async enableReadOnlyMode(): Promise<void> {
const checkbox = this.page.getByTestId('source-control-read-only-checkbox');
await checkbox.check();
}
async disableReadOnlyMode(): Promise<void> {
const checkbox = this.page.getByTestId('source-control-read-only-checkbox');
await checkbox.uncheck();
}
async disconnect(): Promise<void> {
await this.getDisconnectButton().click();
const confirmModal = this.page
.getByRole('dialog')
.filter({ hasText: 'Disconnect Git repository' });
await expect(confirmModal).toBeVisible();
await new MessageBox(confirmModal).confirmButton.click();
}
}