playwright-ai-codegen-lib
Version:
A utility to auto-generate Playwright PageObjects and test scripts using OpenAI and DOM extraction.
199 lines (198 loc) • 10.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LandingPage = void 0;
const Logger_js_1 = require("../utils/Logger.js");
const selectors = {
headerRoot: { selector: '#header__root', action: 'click' },
logoDesktop: { selector: '#header__root [data-header-config="logo.desktop"]', action: 'click' },
logoMobile: { selector: '#header__root [data-header-config="logo.mobile"]', action: 'click' },
topNavLinkLabelPrefix: { selector: '#header__root [data-header-config="top_nav_link_label_prefix"]', action: 'click' },
personalLabel: { selector: '#header__root [data-header-config="top_nav.label=Personal"]', action: 'click' },
joinUsButtonDesktop: { selector: '#header__root [data-header-config="buttons.device=desktop"]', action: 'click' },
signInButtonMobile: { selector: '#header__root [data-header-config="buttons.device=mobile"]', action: 'click' },
signInButtonDesktop: { selector: '#header__root [data-header-config="buttons.device=desktop"]:nth-child(3)', action: 'click' },
joinUsButtonSecondary: { selector: '#header__root [data-header-config="buttons.type=secondary"]', action: 'click' },
electricityMenu: { selector: 'Electricity', action: 'click' },
gasMenu: { selector: 'Gas', action: 'click' },
broadbandMenu: { selector: 'Broadband', action: 'click' },
mobileMenu: { selector: 'Mobile', action: 'click' },
supportMenu: { selector: 'Support', action: 'click' },
businessMenu: { selector: 'Business', action: 'click' },
electricityTab: { selector: 'a[data-testid="electricity-tab"]', action: 'click' },
gasTab: { selector: 'a[data-testid="gas-tab"]', action: 'click' },
supportTab: { selector: 'a[data-testid="support-tab"]', action: 'click' },
investorsTab: { selector: 'a[data-testid="investors-tab"]', action: 'click' },
aboutUsTab: { selector: 'a[data-testid="about-us-tab"]', action: 'click' },
broadbandTab: { selector: 'div:nth-child(1) > div > div > div:nth-child(2) > div:nth-child(2) > div:nth-child(3)', action: 'click' },
mobileTab: { selector: 'div:nth-child(1) > div > div > div:nth-child(2) > div:nth-child(2) > div:nth-child(4)', action: 'click' },
joinUsButton: { selector: 'div:nth-child(1) > div > div > div:nth-child(2) > div:nth-child(2) > div:nth-child(6) > button:nth-child(1)', action: 'click' },
signInButton: { selector: 'div:nth-child(1) > div > div > div:nth-child(2) > div:nth-child(2) > div:nth-child(6) > button:nth-child(2)', action: 'click' },
dismissButton: { selector: 'button#7160_7/1/2025 1:45:18 AM', action: 'click' },
heroBanner: { selector: '.hero-banner-container', action: 'click' },
payBillQuicklink: { selector: 'a[data-gtm-quicklink="Pay bill"]', action: 'click' },
movingHouseQuicklink: { selector: 'a[data-gtm-quicklink="Moving house"]', action: 'click' },
allPlansQuicklink: { selector: 'a[data-gtm-quicklink="All plans"]', action: 'click' },
joinUsQuicklink: { selector: 'a[data-gtm-quicklink="Join us"]', action: 'click' },
addPropertyQuicklink: { selector: 'a[data-gtm-quicklink="Add property"]', action: 'click' },
changePlanQuicklink: { selector: 'a[data-gtm-quicklink="Change plan"]', action: 'click' },
enjoyFreePowerTile: { selector: 'div#TL_BlazingAheadWithImprovements-f6uaf8ym', action: 'click' },
needHelpSigningUpTile: { selector: 'div#TL_NeedHelpSigningUp_Link_support_guides_joining-pssz1xcz', action: 'click' },
needHelpHeading: { selector: 'h4.tile-heading.heading-red', action: 'click' },
needHelpBody: { selector: 'div.tile-body.paragraph-black', action: 'click' },
findOutMoreButton: { selector: 'button.tile-button.button-outline-red', action: 'click' },
};
class LandingPage {
constructor(page) {
this.page = page;
this.selectors = Object.fromEntries(Object.entries(selectors).map(([key, val]) => [key, val.selector]));
}
async clickHeaderRoot() {
Logger_js_1.Logger.log("In clickHeaderRoot");
await this.page.locator(this.selectors.headerRoot).click();
}
async clickLogoDesktop() {
Logger_js_1.Logger.log("In clickLogoDesktop");
await this.page.locator(this.selectors.logoDesktop).click();
}
async clickLogoMobile() {
Logger_js_1.Logger.log("In clickLogoMobile");
await this.page.locator(this.selectors.logoMobile).click();
}
async clickTopNavLinkLabelPrefix() {
Logger_js_1.Logger.log("In clickTopNavLinkLabelPrefix");
await this.page.locator(this.selectors.topNavLinkLabelPrefix).click();
}
async clickPersonalLabel() {
Logger_js_1.Logger.log("In clickPersonalLabel");
await this.page.locator(this.selectors.personalLabel).click();
}
async clickJoinUsButtonDesktop() {
Logger_js_1.Logger.log("In clickJoinUsButtonDesktop");
await this.page.locator(this.selectors.joinUsButtonDesktop).click();
}
async clickSignInButtonMobile() {
Logger_js_1.Logger.log("In clickSignInButtonMobile");
await this.page.locator(this.selectors.signInButtonMobile).click();
}
async clickSignInButtonDesktop() {
Logger_js_1.Logger.log("In clickSignInButtonDesktop");
await this.page.locator(this.selectors.signInButtonDesktop).click();
}
async clickJoinUsButtonSecondary() {
Logger_js_1.Logger.log("In clickJoinUsButtonSecondary");
await this.page.locator(this.selectors.joinUsButtonSecondary).click();
}
async clickElectricityMenu() {
Logger_js_1.Logger.log("In clickElectricityMenu");
await this.page.locator(this.selectors.electricityMenu).click();
}
async clickGasMenu() {
Logger_js_1.Logger.log("In clickGasMenu");
await this.page.locator(this.selectors.gasMenu).click();
}
async clickBroadbandMenu() {
Logger_js_1.Logger.log("In clickBroadbandMenu");
await this.page.locator(this.selectors.broadbandMenu).click();
}
async clickMobileMenu() {
Logger_js_1.Logger.log("In clickMobileMenu");
await this.page.locator(this.selectors.mobileMenu).click();
}
async clickSupportMenu() {
Logger_js_1.Logger.log("In clickSupportMenu");
await this.page.locator(this.selectors.supportMenu).click();
}
async clickBusinessMenu() {
Logger_js_1.Logger.log("In clickBusinessMenu");
await this.page.locator(this.selectors.businessMenu).click();
}
async clickElectricityTab() {
Logger_js_1.Logger.log("In clickElectricityTab");
await this.page.locator(this.selectors.electricityTab).click();
}
async clickGasTab() {
Logger_js_1.Logger.log("In clickGasTab");
await this.page.locator(this.selectors.gasTab).click();
}
async clickSupportTab() {
Logger_js_1.Logger.log("In clickSupportTab");
await this.page.locator(this.selectors.supportTab).click();
}
async clickInvestorsTab() {
Logger_js_1.Logger.log("In clickInvestorsTab");
await this.page.locator(this.selectors.investorsTab).click();
}
async clickAboutUsTab() {
Logger_js_1.Logger.log("In clickAboutUsTab");
await this.page.locator(this.selectors.aboutUsTab).click();
}
async clickBroadbandTab() {
Logger_js_1.Logger.log("In clickBroadbandTab");
await this.page.locator(this.selectors.broadbandTab).click();
}
async clickMobileTab() {
Logger_js_1.Logger.log("In clickMobileTab");
await this.page.locator(this.selectors.mobileTab).click();
}
async clickJoinUsButton() {
Logger_js_1.Logger.log("In clickJoinUsButton");
await this.page.locator(this.selectors.joinUsButton).click();
}
async clickSignInButton() {
Logger_js_1.Logger.log("In clickSignInButton");
await this.page.locator(this.selectors.signInButton).click();
}
async clickDismissButton() {
Logger_js_1.Logger.log("In clickDismissButton");
await this.page.locator(this.selectors.dismissButton).click();
}
async clickHeroBanner() {
Logger_js_1.Logger.log("In clickHeroBanner");
await this.page.locator(this.selectors.heroBanner).click();
}
async clickPayBillQuicklink() {
Logger_js_1.Logger.log("In clickPayBillQuicklink");
await this.page.locator(this.selectors.payBillQuicklink).click();
}
async clickMovingHouseQuicklink() {
Logger_js_1.Logger.log("In clickMovingHouseQuicklink");
await this.page.locator(this.selectors.movingHouseQuicklink).click();
}
async clickAllPlansQuicklink() {
Logger_js_1.Logger.log("In clickAllPlansQuicklink");
await this.page.locator(this.selectors.allPlansQuicklink).click();
}
async clickJoinUsQuicklink() {
Logger_js_1.Logger.log("In clickJoinUsQuicklink");
await this.page.locator(this.selectors.joinUsQuicklink).click();
}
async clickAddPropertyQuicklink() {
Logger_js_1.Logger.log("In clickAddPropertyQuicklink");
await this.page.locator(this.selectors.addPropertyQuicklink).click();
}
async clickChangePlanQuicklink() {
Logger_js_1.Logger.log("In clickChangePlanQuicklink");
await this.page.locator(this.selectors.changePlanQuicklink).click();
}
async clickEnjoyFreePowerTile() {
Logger_js_1.Logger.log("In clickEnjoyFreePowerTile");
await this.page.locator(this.selectors.enjoyFreePowerTile).click();
}
async clickNeedHelpSigningUpTile() {
Logger_js_1.Logger.log("In clickNeedHelpSigningUpTile");
await this.page.locator(this.selectors.needHelpSigningUpTile).click();
}
async clickNeedHelpHeading() {
Logger_js_1.Logger.log("In clickNeedHelpHeading");
await this.page.locator(this.selectors.needHelpHeading).click();
}
async clickNeedHelpBody() {
Logger_js_1.Logger.log("In clickNeedHelpBody");
await this.page.locator(this.selectors.needHelpBody).click();
}
async clickFindOutMoreButton() {
Logger_js_1.Logger.log("In clickFindOutMoreButton");
await this.page.locator(this.selectors.findOutMoreButton).click();
}
}
exports.LandingPage = LandingPage;