UNPKG

webdriverio-automation

Version:

WebdriverIO-Automation android ios project

139 lines (120 loc) 7.95 kB
import { DeviceUtils } from "../../../../src/DeviceUtils"; import { expect } from "chai"; import * as faker from "faker"; import { Utils } from "@kount/yodalib/dist/device/utils"; import chaiJsonSchema from "chai-json-schema"; import TextViewSession from "../../../../fixtures/ios/TextViewSession.json"; import InputSession from "../../../../fixtures/ios/InputSession.json"; import { SnowflakeUtils } from "../../../../src/SnowflakeUtils"; import * as AnalyticalProperties from "../../../../fixtures/AnalyticalDataProperties.json"; import { LoginPageActions } from "@kount/yodalib_ui_webdriverio/dist/ecom/action/ios/LoginPageActions"; import { CategoriesPageActions } from "@kount/yodalib_ui_webdriverio/dist/ecom/action/ios/CategoriesPageActions"; import { ClientIdPageActions } from "@kount/yodalib_ui_webdriverio/dist/ecom/action/ios/ClientIdPageActions"; import { ProfilePageActions } from "@kount/yodalib_ui_webdriverio/dist/ecom/action/ios/ProfilePageActions"; describe("Categories Page Test Cases", () => { let env: any; let merchantID: number; let sessionID: string; let qualityPass: string; let isDataFound: boolean = false; let snowflakeUtils: SnowflakeUtils; let clientIdPageActions: ClientIdPageActions; let loginPageActions: LoginPageActions; let categoriesPageActions: CategoriesPageActions; let profilePageActions: ProfilePageActions; const name: string = faker.name.firstName(); const email: string = faker.internet.email(); const chai = require("chai"); chai.use(require("chai-json-schema")); const contact: string = (faker.random.number({min: 9000000000, max: 9999999999})).toString(); before("Define variables", () => { clientIdPageActions = new ClientIdPageActions(); snowflakeUtils = new SnowflakeUtils(); env = new DeviceUtils().getEnvironment(); if (process.env.SNOWFLAKE_PASSWORD !== undefined) { qualityPass = process.env.SNOWFLAKE_PASSWORD; } else { console.log("must have snowflake quality password set as SNOWFLAKE_PASSWORD env variable."); qualityPass = "badpass"; } }); it("Verify that page displays all the categories", async () => { categoriesPageActions = clientIdPageActions.clickGoButton().loginUser(env.vars.userName, env.vars.userPassword); expect(categoriesPageActions.isElementVisible(categoriesPageActions.categoriesPage.categoryMen)).to.be.true; expect(categoriesPageActions.isElementVisible(categoriesPageActions.categoriesPage.categoryWomen)).to.be.true; categoriesPageActions.scrollDown(); expect(categoriesPageActions.isElementVisible(categoriesPageActions.categoriesPage.categoryMenFootwear)) .to.be.true; expect(categoriesPageActions.isElementVisible(categoriesPageActions.categoriesPage.categoryWomenFootwear)) .to.be.true; }); it("Verify that all the categories are clickable", async () => { categoriesPageActions = clientIdPageActions.clickGoButton().loginUser(env.vars.userName, env.vars.userPassword); categoriesPageActions.viewMenCategoryPage(); categoriesPageActions.clickElement(categoriesPageActions.categoriesPage.navigateBackButton); categoriesPageActions.viewWomenCategoryPage(); categoriesPageActions.clickElement(categoriesPageActions.categoriesPage.navigateBackButton); categoriesPageActions.scrollDown(); categoriesPageActions.viewMenFootwearCategoryPage(); categoriesPageActions.clickElement(categoriesPageActions.categoriesPage.navigateBackButton); categoriesPageActions.viewWomenFootwearCategoryPage(); }); it("Verify search functionality", async () => { merchantID = Number(clientIdPageActions.getElementText(clientIdPageActions.clientIdPage.clientIdTextField)); loginPageActions = clientIdPageActions.clickGoButton(); loginPageActions.clickElement(loginPageActions.loginPage.kountLogo); sessionID = loginPageActions.getElementText(loginPageActions.loginPage.sessionIdText); categoriesPageActions = loginPageActions.loginUser(env.vars.userName, env.vars.userPassword); categoriesPageActions.clickElement(categoriesPageActions.categoriesPage.searchCategoryTextBox); categoriesPageActions.sendTextToElement(categoriesPageActions.categoriesPage.searchCategoryTextBox, "Men"); categoriesPageActions.hideDeviceKeyboard(); categoriesPageActions.validateElementContainsText(categoriesPageActions.categoriesPage.categoryMen, "Men\'s Apparel"); categoriesPageActions.validateElementContainsText(categoriesPageActions.categoriesPage.categoryWomen, "Women\'s Apparel"); categoriesPageActions.scrollDown(); categoriesPageActions.validateElementContainsText(categoriesPageActions.categoriesPage.categoryMenFootwear, "Men\'s Footwear"); categoriesPageActions.validateElementContainsText(categoriesPageActions.categoriesPage.categoryWomenFootwear, "Women\'s Footwear"); categoriesPageActions.clearText(categoriesPageActions.categoriesPage.searchCategoryTextBox); categoriesPageActions.sendTextToElement(categoriesPageActions.categoriesPage.searchCategoryTextBox, "Kids"); expect(categoriesPageActions.isElementVisible(categoriesPageActions.categoriesPage.categoryMen)).to.be.false; expect(categoriesPageActions.isElementVisible(categoriesPageActions.categoriesPage.categoryWomen)).to.be.false; expect(categoriesPageActions.isElementVisible(categoriesPageActions.categoriesPage.categoryMenFootwear)) .to.be.false; expect(categoriesPageActions.isElementVisible(categoriesPageActions.categoriesPage.categoryWomenFootwear)) .to.be.false; await new Utils().sleepHelper( env.vars.iosSnowflakeTime, "Wait for data to get to DataWarehouse", ); const rows = await snowflakeUtils.snowflakeTestHelper(qualityPass, env.vars.analyticsEnv, merchantID, sessionID); snowflakeUtils.verifySnowflakeData(rows, merchantID, sessionID); for (let index = 0; index < Object.keys(rows).length; index++) { const jsonPayloadFormData = rows[index].PAYLOAD.form_data; if (jsonPayloadFormData.hasOwnProperty(AnalyticalProperties.InputSessions)) { snowflakeUtils.verifySnowflakeJSONData(index, AnalyticalProperties.InputSessions, rows, InputSession); if (jsonPayloadFormData.input_sessions[0].hasOwnProperty("control_type")) { snowflakeUtils.verifySnowflakeJSONData(index, AnalyticalProperties.InputSessions, rows, TextViewSession); expect(jsonPayloadFormData.input_sessions[0].control_type).to.equal("UISearchBar"); isDataFound = true; } } } if (isDataFound === false) { throw new Error("Desired analytical data doesn't exist"); } }); it("Verify user is able to edit and save profile", async () => { categoriesPageActions = clientIdPageActions.clickGoButton().loginUser(env.vars.userName, env.vars.userPassword); profilePageActions = categoriesPageActions.viewProfilePage().editProfile(name, contact, email); expect(profilePageActions.getElementText(profilePageActions.profilePage.updatedNameText)).to.equal(name); expect(profilePageActions.getElementText(profilePageActions.profilePage.updatedEmailText)) .to.equal(email); expect(profilePageActions.getElementText(profilePageActions.profilePage.updatedContactText)) .to.equal(contact); }); });