import type { Locator } from '@playwright/test'; import { BasePage } from './BasePage'; export class WorkflowSettingsModal extends BasePage { get container() { return this.page.getByTestId('workflow-settings-dialog'); } getModal(): Locator { return this.container; } getWorkflowMenu(): Locator { return this.page.getByTestId('workflow-menu'); } getSettingsMenuItem(): Locator { return this.page.getByTestId('workflow-menu-item-settings'); } getErrorWorkflowField(): Locator { return this.container.getByTestId('workflow-settings-error-workflow'); } getTimezoneField(): Locator { return this.container.getByTestId('workflow-settings-timezone'); } getSaveFailedExecutionsField(): Locator { return this.container.getByTestId('workflow-settings-save-failed-executions'); } getSaveSuccessExecutionsField(): Locator { return this.container.getByTestId('workflow-settings-save-success-executions'); } getSaveManualExecutionsField(): Locator { return this.container.getByTestId('workflow-settings-save-manual-executions'); } getSaveExecutionProgressField(): Locator { return this.container.getByTestId('workflow-settings-save-execution-progress'); } getTimeoutSwitch(): Locator { return this.container.getByTestId('workflow-settings-timeout-workflow'); } getTimeoutInput(): Locator { return this.container.getByTestId('workflow-settings-timeout-form').locator('input').first(); } getDuplicateMenuItem(): Locator { return this.page.getByTestId('workflow-menu-item-duplicate'); } getDeleteMenuItem(): Locator { return this.page.getByTestId('workflow-menu-item-delete'); } getArchiveMenuItem(): Locator { return this.page.getByTestId('workflow-menu-item-archive'); } getArchiveMenuItemWrapper(): Locator { return this.getArchiveMenuItem(); } getUnarchiveMenuItem(): Locator { return this.page.getByTestId('workflow-menu-item-unarchive'); } getPushToGitMenuItem(): Locator { return this.page.getByTestId('workflow-menu-item-push'); } getUnpublishMenuItem(): Locator { return this.page.getByTestId('workflow-menu-item-unpublish'); } getUnpublishModal(): Locator { return this.page.getByTestId('workflow-history-version-unpublish-modal'); } async clickUnpublishMenuItem(): Promise { await this.getUnpublishMenuItem().click(); } async confirmUnpublishModal(): Promise { await this.getUnpublishModal().getByRole('button', { name: 'Unpublish' }).click(); } getSaveButton(): Locator { return this.container.getByRole('button', { name: 'Save' }); } getDuplicateModal(): Locator { return this.page.getByTestId('duplicate-modal'); } getDuplicateNameInput(): Locator { return this.getDuplicateModal().locator('input').first(); } getDuplicateTagsInput(): Locator { return this.getDuplicateModal().locator('.el-select__tags input'); } getDuplicateSaveButton(): Locator { return this.getDuplicateModal().getByRole('button', { name: /duplicate|save/i }); } async open(): Promise { await this.getWorkflowMenu().click(); await this.getSettingsMenuItem().click(); } async clickSave(): Promise { await this.getSaveButton().click(); } async selectErrorWorkflow(workflowName: string): Promise { await this.getErrorWorkflowField().click(); await this.page.getByRole('option', { name: workflowName }).first().click(); } async clickArchiveMenuItem(): Promise { await this.getArchiveMenuItem().click(); } async clickUnarchiveMenuItem(): Promise { await this.getUnarchiveMenuItem().click(); } async clickDeleteMenuItem(): Promise { await this.getDeleteMenuItem().click(); } async confirmDeleteModal(): Promise { await this.page.getByRole('button', { name: 'delete' }).click(); } async confirmArchiveModal(): Promise { await this.page.locator('.btn--confirm').click(); } }