src/pom/serverless/pages/onboarding.page.ts (48 lines of code) (raw):

import { expect, Page } from "@playwright/test"; export default class OnboardingPage { page: Page; constructor(page: Page) { this.page = page; } private readonly useCaseLogs = () => this.page.locator('xpath=//div[@data-test-subj="observabilityOnboardingUseCaseCard-logs"]//input[@type="radio"]'); private readonly useCaseInfra = () => this.page.locator('xpath=//div[@data-test-subj="observabilityOnboardingUseCaseCard-infra"]//input[@type="radio"]'); private readonly logsAutoDetect = () => this.page.locator('xpath=//button[contains(text(), "Auto-detect logs and metrics")]'); private readonly kubernetes = () => this.page.locator('xpath=//button[contains(text(), "Kubernetes")]'); public readonly contentNotLoaded = () => this.page.locator('xpath=//h2[contains(text(),"Unable to load content")]'); private readonly retryButton = () => this.page.getByTestId('observabilityOnboardingAutoDetectPanelGoBackButton'); public readonly codeBlock = () => this.page.locator('xpath=//code[@data-code-language="text"]'); private readonly copyToClipboardButton = () => this.page.getByTestId('observabilityOnboardingCopyToClipboardButton'); private readonly inProgressIndicator = () => this.page.locator('xpath=//div[contains(text(), "Waiting for installation to complete...")]'); private readonly receivedDataIndicator = () => this.page.locator('xpath=//div[contains(text(), "Your data is ready to explore!")]'); private readonly actionLinkSystem = () => this.page.locator('xpath=//a[contains(@data-test-subj, "observabilityOnboardingDataIngestStatusActionLink-system")]'); public async selectCollectLogs() { await this.useCaseLogs().click(); } public async selectLogsAutoDetect() { await this.logsAutoDetect().click(); } public async selectMonitorInfrastructure() { await this.useCaseInfra().click(); } public async clickRetry() { await this.retryButton().click(); } public async selectKubernetes() { await this.kubernetes().click(); } public async copyToClipboard() { await this.copyToClipboardButton().click(); } public async exploreMetricsSystem() { await this.actionLinkSystem().click(); } public async assertVisibilityCodeBlock() { await expect(this.codeBlock(), 'Code block should be visible').toBeVisible(); } public async assertInProgressIndicator() { await expect(this.inProgressIndicator(), 'In progress indicator should be visible').toBeVisible(); } public async assertReceivedDataIndicator() { await expect(this.receivedDataIndicator(), 'Received data indicator should be visible').toBeVisible(); } }