UNPKG

wc-e2e-page-objects

Version:

WooCommerce Page Objects to be used on end-to-end tests with Selenium WebDriver

68 lines (59 loc) 1.74 kB
/** * External dependencies */ import { By } from 'selenium-webdriver'; import { WebDriverHelper as helper } from 'wp-e2e-webdriver'; import { Component } from 'wp-e2e-page-objects'; export default class ComponentProductCard extends Component { constructor( driver, productTitle ) { const selector = By.xpath( `//li[contains(@class, "type-product") and a/h3[contains(text(), "${ productTitle }")]]` ); super( driver, selector ); this.productTitle = productTitle; } click() { const expression = `//li[contains(@class, "type-product")]/a[h2[contains(text(), "${ this.productTitle }")]]`; return helper.clickWhenClickable( this.driver, By.xpath( expression ) ); } addToCart() { const expression = `//li[contains(@class, "type-product") and a/h2[contains(text(), "${ this.productTitle }")]]` + '//a[contains(@class, "add_to_cart_button") and contains(@class, "ajax_add_to_cart")]' ; helper.clickWhenClickable( this.driver, By.xpath( expression ) ); // Wait for view cart button appears. return helper.isEventuallyPresentAndDisplayed( this.driver, this._getViewCartSelector() ); } _getViewCartSelector() { return By.xpath( `//li[contains(@class, "type-product") and a/h2[contains(text(), "${ this.productTitle }")]]` + '//a[contains(@class, "added_to_cart") and contains(@class, "wc-forward")]' ); } viewCart() { return helper.clickWhenClickable( this.driver, this._getViewCartSelector() ); } selectOptions() { const expression = `//li[@class="type-product" and a//h2[contains(text(), "${ this.productTitle }")]]` + '//a[@class="add_to_cart_button"]' ; return helper.clickWhenClickable( this.driver, By.xpath( expression ) ); } }