enso/app/dashboard/e2e/actions/goToPageActions.ts
2024-07-26 17:47:59 +10:00

45 lines
1.4 KiB
TypeScript

/** @file Actions for going to a different page. */
import type * as baseActions from './BaseActions'
import BaseActions from './BaseActions'
import DrivePageActions from './DrivePageActions'
import EditorPageActions from './EditorPageActions'
import SettingsPageActions from './SettingsPageActions'
// =======================
// === GoToPageActions ===
// =======================
/** Actions for going to a different page. */
export interface GoToPageActions {
readonly drive: () => DrivePageActions
readonly editor: () => EditorPageActions
readonly settings: () => SettingsPageActions
}
// =======================
// === goToPageActions ===
// =======================
/** Generate actions for going to a different page. */
export function goToPageActions(
step: (name: string, callback: baseActions.PageCallback) => BaseActions,
): GoToPageActions {
return {
drive: () =>
step('Go to "Data Catalog" page', (page) =>
page
.getByRole('tab')
.filter({ has: page.getByText('Data Catalog') })
.click(),
).into(DrivePageActions),
editor: () =>
step('Go to "Spatial Analysis" page', (page) =>
page.getByTestId('editor-tab-button').click(),
).into(EditorPageActions),
settings: () =>
step('Go to "settings" page', (page) => BaseActions.press(page, 'Mod+,')).into(
SettingsPageActions,
),
}
}