57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
|
import { Page } from 'puppeteer';
|
|||
|
import { getElementByText, waitForElementByText } from '../utils/actions';
|
|||
|
|
|||
|
export class WcHomescreen {
|
|||
|
page: Page;
|
|||
|
|
|||
|
constructor( page: Page ) {
|
|||
|
this.page = page;
|
|||
|
}
|
|||
|
|
|||
|
async isDisplayed() {
|
|||
|
// Wait for Benefits section to appear
|
|||
|
await waitForElementByText( 'h1', 'Home' );
|
|||
|
}
|
|||
|
|
|||
|
async possiblyDismissWelcomeModal() {
|
|||
|
// Wait for Benefits section to appear
|
|||
|
const modal = await getElementByText(
|
|||
|
'h2',
|
|||
|
'Welcome to your WooCommerce store’s online HQ!'
|
|||
|
);
|
|||
|
|
|||
|
if ( modal ) {
|
|||
|
let button = await getElementByText( 'button', 'Next' );
|
|||
|
await button?.click();
|
|||
|
button = await getElementByText( 'button', 'Next' );
|
|||
|
await button?.click();
|
|||
|
await this.page.click( '.components-guide__finish-button' );
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
async getTaskList() {
|
|||
|
// Log out link in admin bar is not visible so can't be clicked directly.
|
|||
|
await page.waitForSelector(
|
|||
|
'.woocommerce-task-card .woocommerce-list__item-title'
|
|||
|
);
|
|||
|
await waitForElementByText( 'p', 'Get ready to start selling' );
|
|||
|
const list = await this.page.$$eval(
|
|||
|
'.woocommerce-task-card .woocommerce-list__item-title',
|
|||
|
( items ) => items.map( ( item ) => item.textContent )
|
|||
|
);
|
|||
|
return list.map( ( item: string | null ) => {
|
|||
|
const match = item?.match( /(.+)[0-9] minute/ );
|
|||
|
if ( match && match.length > 1 ) {
|
|||
|
return match[ 1 ];
|
|||
|
}
|
|||
|
return item;
|
|||
|
} );
|
|||
|
}
|
|||
|
|
|||
|
async clickOnTaskList( taskTitle: string ) {
|
|||
|
const item = await getElementByText( 'div', taskTitle );
|
|||
|
await item?.click();
|
|||
|
await waitForElementByText( 'h1', taskTitle );
|
|||
|
}
|
|||
|
}
|