webdriverio-automation
Version:
WebdriverIO-Automation android ios project
139 lines (120 loc) • 7.95 kB
text/typescript
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);
});
});