Skip to content

Instantly share code, notes, and snippets.

@benzaremean
Last active August 12, 2019 11:15
Show Gist options
  • Save benzaremean/2745fdd3e779febfd57a5dfff1215f23 to your computer and use it in GitHub Desktop.
Save benzaremean/2745fdd3e779febfd57a5dfff1215f23 to your computer and use it in GitHub Desktop.
import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import com.kms.katalon.core.checkpoint.Checkpoint as Checkpoint
import com.kms.katalon.core.cucumber.keyword.CucumberBuiltinKeywords as CucumberKW
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.model.FailureHandling as FailureHandling
import com.kms.katalon.core.testcase.TestCase as TestCase
import com.kms.katalon.core.testdata.TestData as TestData
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import internal.GlobalVariable as GlobalVariable
import org.openqa.selenium.WebElement
def getResultGrids() {
WebUI.waitForElementPresent(findTestObject('Search_Results/Result Grid Prices'), 20, FailureHandling.STOP_ON_FAILURE)
List<WebElement> elements = WebUI.findWebElements(findTestObject('Search_Results/Result Grid Prices'), 10);
return elements;
}
def getPriceForSearchGrid(List<WebElement> elements, int index) {
def pricesText = elements.get(index).getText();
def splitPricesText = pricesText.split('£')
return Double.parseDouble(splitPricesText[splitPricesText.length - 1]);
}
// selector for is Search_Results/Review Stars below is img[src="/_ui/build/images/stars.svg"]
def getResultGridsReviewElement() {
WebUI.waitForElementPresent(findTestObject('Search_Results/Review Stars'), 20, FailureHandling.STOP_ON_FAILURE)
List<WebElement> elements = WebUI.findWebElements(findTestObject('Search_Results/Review Stars'), 10);
return elements;
}
def getAltValue(List<WebElement> elements, int index) {
def attributeValue = elements.get(index).getAttribute('alt');
return attributeValue;
}
// ascending
def ascendingUrl = "https://www.rapha.cc/gb/en/archive-sale/category/archivesale?q=:default:gender:default:size:default:groupcolor:default&sort=price-asc";
WebUI.openBrowser(ascendingUrl)
WebUI.waitForPageLoad(10)
List<WebElement> resultGrids = getResultGrids();
def firstResultPrice = getPriceForSearchGrid(resultGrids, 0)
def lastResultPrice = getPriceForSearchGrid(resultGrids, (resultGrids.size() - 1));
assert lastResultPrice > firstResultPrice
// descending
def descendingUrl = "https://www.rapha.cc/gb/en/archive-sale/category/archivesale?q=:default:gender:default:size:default:groupcolor:default&sort=price-desc";
WebUI.navigateToUrl(descendingUrl)
WebUI.waitForPageLoad(10)
List<WebElement> resultGridsDescending = getResultGrids();
def firstResultPriceDesc = getPriceForSearchGrid(resultGridsDescending, 0)
def lastResultPriceDesc = getPriceForSearchGrid(resultGridsDescending, (resultGridsDescending.size() - 1));
assert firstResultPriceDesc > lastResultPriceDesc
// customer average review
def avgCustomerReviewUrl = "https://www.rapha.cc/gb/en/archive-sale/category/archivesale?q=:default:gender:default:size:default:groupcolor:default&sort=avg-customer-review"
WebUI.navigateToUrl(avgCustomerReviewUrl)
WebUI.waitForPageLoad(10)
List<WebElement> resultGridsCustomerReviews = getResultGridsReviewElement();
def firstReviewValue = getAltValue(resultGridsCustomerReviews, 0)
assert firstReviewValue == "5 / 5"
def lastReviewValue = getAltValue(resultGridsCustomerReviews, (resultGridsCustomerReviews.size() - 1))
assert lastReviewValue == "1 / 5"
WebUI.closeBrowser()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment