All analytics in separate tests
This commit is contained in:
parent
5b6d1ddd77
commit
592993c030
9 changed files with 341 additions and 175 deletions
|
@ -20,8 +20,7 @@ class Channels {
|
||||||
}`;
|
}`;
|
||||||
return cy.sendRequestWithQuery(createChannelMutation);
|
return cy.sendRequestWithQuery(createChannelMutation);
|
||||||
}
|
}
|
||||||
|
getChannels() {
|
||||||
deleteTestChannels(nameStartsWith) {
|
|
||||||
const getChannelsInfoQuery = `query{
|
const getChannelsInfoQuery = `query{
|
||||||
channels{
|
channels{
|
||||||
name
|
name
|
||||||
|
@ -32,29 +31,13 @@ class Channels {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
cy.sendRequestWithQuery(getChannelsInfoQuery).then(resp => {
|
return cy.sendRequestWithQuery(getChannelsInfoQuery);
|
||||||
const channels = new Set(resp.body.data.channels);
|
|
||||||
channels.forEach(element => {
|
|
||||||
if (element.name.startsWith(nameStartsWith)) {
|
|
||||||
const targetChannels = Array.from(channels).filter(function(channel) {
|
|
||||||
return (
|
|
||||||
element.currencyCode === channel.currencyCode &&
|
|
||||||
element.id !== channel.id
|
|
||||||
);
|
|
||||||
});
|
|
||||||
if (targetChannels[0]) {
|
|
||||||
this.deleteChannel(element.id, targetChannels[0].id);
|
|
||||||
channels.delete(element);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteChannel(channelId, targetChennelId) {
|
deleteChannel(channelId, targetChannelId) {
|
||||||
const deleteChannelMutation = `mutation{
|
const deleteChannelMutation = `mutation{
|
||||||
channelDelete(id: "${channelId}", input:{
|
channelDelete(id: "${channelId}", input:{
|
||||||
targetChannel: "${targetChennelId}"
|
targetChannel: "${targetChannelId}"
|
||||||
}){
|
}){
|
||||||
channel{
|
channel{
|
||||||
name
|
name
|
||||||
|
|
37
cypress/apiRequests/HomePage.js
Normal file
37
cypress/apiRequests/HomePage.js
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
class HomePage {
|
||||||
|
getSalesForChannel(channelSlug, period) {
|
||||||
|
const query = `query{
|
||||||
|
ordersTotal(period: ${period}, channel:"${channelSlug}"){
|
||||||
|
gross{
|
||||||
|
amount
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}`;
|
||||||
|
return cy.sendRequestWithQuery(query);
|
||||||
|
}
|
||||||
|
getOrdersForChannel(channelSlug, created) {
|
||||||
|
const query = `query{
|
||||||
|
orders(created: ${created}, channel:"${channelSlug}"){
|
||||||
|
totalCount
|
||||||
|
}
|
||||||
|
}`;
|
||||||
|
return cy.sendRequestWithQuery(query);
|
||||||
|
}
|
||||||
|
getOrdersWithStatus(status, channelSlug) {
|
||||||
|
const query = `query{
|
||||||
|
orders(status: ${status}, channel:"${channelSlug}"){
|
||||||
|
totalCount
|
||||||
|
}
|
||||||
|
}`;
|
||||||
|
return cy.sendRequestWithQuery(query);
|
||||||
|
}
|
||||||
|
getProductsOutOfStock(channelSlug) {
|
||||||
|
const query = `query{
|
||||||
|
products(stockAvailability: OUT_OF_STOCK, channel:"${channelSlug}"){
|
||||||
|
totalCount
|
||||||
|
}
|
||||||
|
}`;
|
||||||
|
return cy.sendRequestWithQuery(query);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default HomePage;
|
|
@ -1,4 +1,4 @@
|
||||||
export const DASHBOARD_SELECTORS = {
|
export const HOMEPAGE_SELECTORS = {
|
||||||
sales: "[data-test-id='sales-analytics']",
|
sales: "[data-test-id='sales-analytics']",
|
||||||
orders: "[data-test-id='orders-analytics']",
|
orders: "[data-test-id='orders-analytics']",
|
||||||
activity: "[data-test-id='activity-card']",
|
activity: "[data-test-id='activity-card']",
|
|
@ -14,16 +14,18 @@ import { ORDERS_SELECTORS } from "../elements/orders/orders-selectors";
|
||||||
import { BUTTON_SELECTORS } from "../elements/shared/button-selectors";
|
import { BUTTON_SELECTORS } from "../elements/shared/button-selectors";
|
||||||
import ChannelsSteps from "../steps/channelsSteps";
|
import ChannelsSteps from "../steps/channelsSteps";
|
||||||
import { urlList } from "../url/urlList";
|
import { urlList } from "../url/urlList";
|
||||||
|
import ChannelsUtils from "../utils/channelsUtils";
|
||||||
|
|
||||||
describe("Channels", () => {
|
describe("Channels", () => {
|
||||||
const channelStartsWith = "Cypress:";
|
const channelStartsWith = "Cypress:";
|
||||||
const currency = "PLN";
|
const currency = "PLN";
|
||||||
const channels = new Channels();
|
const channels = new Channels();
|
||||||
|
const channelsUtils = new ChannelsUtils();
|
||||||
const channelsSteps = new ChannelsSteps();
|
const channelsSteps = new ChannelsSteps();
|
||||||
|
|
||||||
before(() => {
|
before(() => {
|
||||||
cy.clearSessionData().loginUserViaRequest();
|
cy.clearSessionData().loginUserViaRequest();
|
||||||
channels.deleteTestChannels(channelStartsWith);
|
channelsUtils.deleteChannels(channelStartsWith);
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
|
|
@ -1,143 +0,0 @@
|
||||||
import faker from "faker";
|
|
||||||
|
|
||||||
import Channels from "../apiRequests/Channels";
|
|
||||||
import Customer from "../apiRequests/Customer";
|
|
||||||
import { DASHBOARD_SELECTORS } from "../elements/dashboard/dashboard-selectors";
|
|
||||||
import { HEADER_SELECTORS } from "../elements/header/header-selectors";
|
|
||||||
import OrdersUtils from "../utils/ordersUtils";
|
|
||||||
import ProductsUtils from "../utils/productsUtils";
|
|
||||||
import ShippingUtils from "../utils/shippingUtils";
|
|
||||||
|
|
||||||
// <reference types="cypress" />
|
|
||||||
describe("User authorization", () => {
|
|
||||||
const startsWith = "Cy-";
|
|
||||||
|
|
||||||
const customer = new Customer();
|
|
||||||
const channels = new Channels();
|
|
||||||
const productsUtils = new ProductsUtils();
|
|
||||||
const shippingUtils = new ShippingUtils();
|
|
||||||
const ordersUtils = new OrdersUtils();
|
|
||||||
|
|
||||||
before(() => {
|
|
||||||
cy.clearSessionData().loginUserViaRequest();
|
|
||||||
customer.deleteCustomers(startsWith);
|
|
||||||
shippingUtils.deleteShipping(startsWith);
|
|
||||||
productsUtils.deleteProducts(startsWith);
|
|
||||||
channels.deleteTestChannels(startsWith);
|
|
||||||
});
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
cy.clearSessionData().loginUserViaRequest();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should all elements be visible on the dashboard", () => {
|
|
||||||
cy.visit("/")
|
|
||||||
.softAssertVisibility(DASHBOARD_SELECTORS.sales)
|
|
||||||
.softAssertVisibility(DASHBOARD_SELECTORS.orders)
|
|
||||||
.softAssertVisibility(DASHBOARD_SELECTORS.activity)
|
|
||||||
.softAssertVisibility(DASHBOARD_SELECTORS.topProducts)
|
|
||||||
.softAssertVisibility(DASHBOARD_SELECTORS.ordersReadyToFulfill)
|
|
||||||
.softAssertVisibility(DASHBOARD_SELECTORS.paymentsWaitingForCapture)
|
|
||||||
.softAssertVisibility(DASHBOARD_SELECTORS.productsOutOfStock);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should correct amount of orders be displayed", () => {
|
|
||||||
const randomName = startsWith + faker.random.number();
|
|
||||||
const randomEmail = randomName + "@example.com";
|
|
||||||
const randomNameProductOutOfStock = `${startsWith}${faker.random.number()}`;
|
|
||||||
const shippingPrice = 12;
|
|
||||||
const productPrice = 22;
|
|
||||||
const sales = productPrice * 2 + shippingPrice;
|
|
||||||
|
|
||||||
// Create channel, customer, product - everything needed to create order
|
|
||||||
cy.fixture("addresses").then(json => {
|
|
||||||
channels
|
|
||||||
.createChannel(true, randomName, randomName, json.plAddress.currency)
|
|
||||||
.then(channelsResp => {
|
|
||||||
const channelId = channelsResp.body.data.channelCreate.channel.id;
|
|
||||||
const channelSlug = channelsResp.body.data.channelCreate.channel.slug;
|
|
||||||
customer
|
|
||||||
.createCustomer(randomEmail, randomName, json.plAddress)
|
|
||||||
.then(resp => {
|
|
||||||
const customerId = resp.body.data.customerCreate.user.id;
|
|
||||||
const customerEmail = resp.body.data.customerCreate.user.email;
|
|
||||||
shippingUtils
|
|
||||||
.createShipping(
|
|
||||||
channelId,
|
|
||||||
randomName,
|
|
||||||
json.plAddress,
|
|
||||||
shippingPrice
|
|
||||||
)
|
|
||||||
.then(() => {
|
|
||||||
const shippingId = shippingUtils.getShippingMethodId();
|
|
||||||
const warehouseId = shippingUtils.getWarehouseId();
|
|
||||||
productsUtils
|
|
||||||
.createTypeAttributeAndCategoryForProduct(randomName)
|
|
||||||
.then(() => {
|
|
||||||
const productTypeId = productsUtils.getProductTypeId();
|
|
||||||
const attributeId = productsUtils.getAttributeId();
|
|
||||||
const categoryId = productsUtils.getCategoryId();
|
|
||||||
productsUtils
|
|
||||||
.createProductInChannel(
|
|
||||||
randomName,
|
|
||||||
channelId,
|
|
||||||
warehouseId,
|
|
||||||
10,
|
|
||||||
productTypeId,
|
|
||||||
attributeId,
|
|
||||||
categoryId,
|
|
||||||
productPrice
|
|
||||||
)
|
|
||||||
.then(() => {
|
|
||||||
const variantsList = productsUtils.getCreatedVariants();
|
|
||||||
|
|
||||||
// Create order ready to fulfill
|
|
||||||
ordersUtils.createReadyToFulfillOrder(
|
|
||||||
customerId,
|
|
||||||
shippingId,
|
|
||||||
channelId,
|
|
||||||
variantsList
|
|
||||||
);
|
|
||||||
|
|
||||||
// Create order waiting for capture
|
|
||||||
ordersUtils.createWaitingForCaptureOrder(
|
|
||||||
channelSlug,
|
|
||||||
customerEmail,
|
|
||||||
variantsList,
|
|
||||||
shippingId
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Create product out of stock
|
|
||||||
productsUtils.createProductInChannel(
|
|
||||||
randomNameProductOutOfStock,
|
|
||||||
channelId,
|
|
||||||
warehouseId,
|
|
||||||
0,
|
|
||||||
productTypeId,
|
|
||||||
attributeId,
|
|
||||||
categoryId,
|
|
||||||
productPrice
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
cy.visit("/");
|
|
||||||
cy.get(HEADER_SELECTORS.channelSelect)
|
|
||||||
.click()
|
|
||||||
.get(HEADER_SELECTORS.channelSelectList)
|
|
||||||
.contains(randomName)
|
|
||||||
.click()
|
|
||||||
.waitForGraph("Home");
|
|
||||||
const salesRegexp = new RegExp(`\\D+${sales}[\,.]00\\D*`);
|
|
||||||
cy.contains(salesRegexp).should("be.visible");
|
|
||||||
const regex = /^1\D+/;
|
|
||||||
cy.softAssertMatch(DASHBOARD_SELECTORS.ordersReadyToFulfill, regex)
|
|
||||||
.softAssertMatch(DASHBOARD_SELECTORS.paymentsWaitingForCapture, regex)
|
|
||||||
.softAssertMatch(DASHBOARD_SELECTORS.productsOutOfStock, regex)
|
|
||||||
.softAssertMatch(DASHBOARD_SELECTORS.sales, salesRegexp)
|
|
||||||
.softAssertMatch(DASHBOARD_SELECTORS.orders, /\D+2\D*/);
|
|
||||||
});
|
|
||||||
});
|
|
205
cypress/integration/homePage.js
Normal file
205
cypress/integration/homePage.js
Normal file
|
@ -0,0 +1,205 @@
|
||||||
|
import faker from "faker";
|
||||||
|
|
||||||
|
import Customer from "../apiRequests/Customer";
|
||||||
|
import { HOMEPAGE_SELECTORS } from "../elements/homePage/homePage-selectors";
|
||||||
|
import HomePageSteps from "../steps/homePageSteps";
|
||||||
|
import { urlList } from "../url/urlList";
|
||||||
|
import ChannelsUtils from "../utils/channelsUtils";
|
||||||
|
import HomePageUtils from "../utils/homePageUtils";
|
||||||
|
import OrdersUtils from "../utils/ordersUtils";
|
||||||
|
import ProductsUtils from "../utils/productsUtils";
|
||||||
|
import ShippingUtils from "../utils/shippingUtils";
|
||||||
|
|
||||||
|
// <reference types="cypress" />
|
||||||
|
describe("User authorization", () => {
|
||||||
|
const startsWith = "Cy-";
|
||||||
|
|
||||||
|
const customer = new Customer();
|
||||||
|
const productsUtils = new ProductsUtils();
|
||||||
|
const shippingUtils = new ShippingUtils();
|
||||||
|
const ordersUtils = new OrdersUtils();
|
||||||
|
const channelsUtils = new ChannelsUtils();
|
||||||
|
const homePageUtils = new HomePageUtils();
|
||||||
|
const homePageSteps = new HomePageSteps();
|
||||||
|
|
||||||
|
let customerId;
|
||||||
|
let defaultChannel;
|
||||||
|
const productPrice = 22;
|
||||||
|
const shippingPrice = 12;
|
||||||
|
const randomName = startsWith + faker.random.number();
|
||||||
|
const randomEmail = randomName + "@example.com";
|
||||||
|
|
||||||
|
before(() => {
|
||||||
|
cy.clearSessionData().loginUserViaRequest();
|
||||||
|
customer.deleteCustomers(startsWith);
|
||||||
|
shippingUtils.deleteShipping(startsWith);
|
||||||
|
productsUtils.deleteProducts(startsWith);
|
||||||
|
|
||||||
|
channelsUtils.getDefaultChannel().then(channel => {
|
||||||
|
defaultChannel = channel;
|
||||||
|
cy.fixture("addresses").then(addressesFixture => {
|
||||||
|
customer
|
||||||
|
.createCustomer(randomEmail, randomName, addressesFixture.plAddress)
|
||||||
|
.then(resp => {
|
||||||
|
customerId = resp.body.data.customerCreate.user.id;
|
||||||
|
shippingUtils
|
||||||
|
.createShipping(
|
||||||
|
defaultChannel.id,
|
||||||
|
randomName,
|
||||||
|
addressesFixture.plAddress,
|
||||||
|
shippingPrice
|
||||||
|
)
|
||||||
|
.then(() => {
|
||||||
|
const warehouseId = shippingUtils.getWarehouseId();
|
||||||
|
productsUtils
|
||||||
|
.createTypeAttributeAndCategoryForProduct(randomName)
|
||||||
|
.then(() => {
|
||||||
|
const productTypeId = productsUtils.getProductTypeId();
|
||||||
|
const attributeId = productsUtils.getAttributeId();
|
||||||
|
const categoryId = productsUtils.getCategoryId();
|
||||||
|
productsUtils.createProductInChannel(
|
||||||
|
randomName,
|
||||||
|
defaultChannel.id,
|
||||||
|
warehouseId,
|
||||||
|
20,
|
||||||
|
productTypeId,
|
||||||
|
attributeId,
|
||||||
|
categoryId,
|
||||||
|
productPrice
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
cy.clearSessionData().loginUserViaRequest();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should all elements be visible on the dashboard", () => {
|
||||||
|
cy.visit(urlList.homePage)
|
||||||
|
.softAssertVisibility(HOMEPAGE_SELECTORS.sales)
|
||||||
|
.softAssertVisibility(HOMEPAGE_SELECTORS.orders)
|
||||||
|
.softAssertVisibility(HOMEPAGE_SELECTORS.activity)
|
||||||
|
.softAssertVisibility(HOMEPAGE_SELECTORS.topProducts)
|
||||||
|
.softAssertVisibility(HOMEPAGE_SELECTORS.ordersReadyToFulfill)
|
||||||
|
.softAssertVisibility(HOMEPAGE_SELECTORS.paymentsWaitingForCapture)
|
||||||
|
.softAssertVisibility(HOMEPAGE_SELECTORS.productsOutOfStock);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should correct amount of ready to fullfil orders be displayed", () => {
|
||||||
|
homePageUtils
|
||||||
|
.getOrdersReadyToFulfill(defaultChannel.slug)
|
||||||
|
.as("ordersReadyToFulfill");
|
||||||
|
|
||||||
|
ordersUtils.createReadyToFulfillOrder(
|
||||||
|
customerId,
|
||||||
|
shippingUtils.getShippingMethodId(),
|
||||||
|
defaultChannel.id,
|
||||||
|
productsUtils.getCreatedVariants()
|
||||||
|
);
|
||||||
|
cy.get("@ordersReadyToFulfill").then(ordersReadyToFulfill => {
|
||||||
|
const regexp = new RegExp(`^${ordersReadyToFulfill + 1}\D*`);
|
||||||
|
cy.visit(urlList.homePage);
|
||||||
|
homePageSteps.changeChannel(defaultChannel.name);
|
||||||
|
cy.contains(HOMEPAGE_SELECTORS.ordersReadyToFulfill, regexp).should(
|
||||||
|
"be.visible"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it("should correct amount of payments waiting for capture be displayed", () => {
|
||||||
|
homePageUtils
|
||||||
|
.getOrdersReadyForCapture(defaultChannel.slug)
|
||||||
|
.as("ordersReadyForCapture");
|
||||||
|
const shippingId = shippingUtils.getShippingMethodId();
|
||||||
|
const variantsList = productsUtils.getCreatedVariants();
|
||||||
|
|
||||||
|
ordersUtils.createWaitingForCaptureOrder(
|
||||||
|
defaultChannel.slug,
|
||||||
|
randomEmail,
|
||||||
|
variantsList,
|
||||||
|
shippingId
|
||||||
|
);
|
||||||
|
|
||||||
|
cy.get("@ordersReadyForCapture").then(ordersReadyForCapture => {
|
||||||
|
const regexp = new RegExp(`^${ordersReadyForCapture + 1}\D*`);
|
||||||
|
cy.visit(urlList.homePage);
|
||||||
|
homePageSteps.changeChannel(defaultChannel.name);
|
||||||
|
cy.contains(HOMEPAGE_SELECTORS.ordersReadyForCapture, regexp).should(
|
||||||
|
"be.visible"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it("should correct amount of products out of stock be displayed", () => {
|
||||||
|
homePageUtils
|
||||||
|
.getProductsOutOfStock(defaultChannel.slug)
|
||||||
|
.as("productsOutOfStock");
|
||||||
|
const productOutOfStockRandomName = startsWith + faker.random.number();
|
||||||
|
const productsOutOfStockUtils = new ProductsUtils();
|
||||||
|
const warehouseId = shippingUtils.getWarehouseId();
|
||||||
|
const productTypeId = productsUtils.getProductTypeId();
|
||||||
|
const attributeId = productsUtils.getAttributeId();
|
||||||
|
const categoryId = productsUtils.getCategoryId();
|
||||||
|
|
||||||
|
productsOutOfStockUtils.createProductInChannel(
|
||||||
|
productOutOfStockRandomName,
|
||||||
|
defaultChannel.id,
|
||||||
|
warehouseId,
|
||||||
|
0,
|
||||||
|
productTypeId,
|
||||||
|
attributeId,
|
||||||
|
categoryId,
|
||||||
|
productPrice
|
||||||
|
);
|
||||||
|
|
||||||
|
cy.get("@productsOutOfStock").then(productsOutOfStock => {
|
||||||
|
const regexp = new RegExp(`^${productsOutOfStock + 1}\\D*`);
|
||||||
|
cy.visit(urlList.homePage);
|
||||||
|
homePageSteps.changeChannel(defaultChannel.name);
|
||||||
|
cy.contains(HOMEPAGE_SELECTORS.productsOutOfStock, regexp).should(
|
||||||
|
"be.visible"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it("should correct amount of sales be displayed", () => {
|
||||||
|
homePageUtils.getSalesAmount(defaultChannel.slug).as("salesAmount");
|
||||||
|
|
||||||
|
ordersUtils.createReadyToFulfillOrder(
|
||||||
|
customerId,
|
||||||
|
shippingUtils.getShippingMethodId(),
|
||||||
|
defaultChannel.id,
|
||||||
|
productsUtils.getCreatedVariants()
|
||||||
|
);
|
||||||
|
|
||||||
|
cy.get("@salesAmount").then(salesAmount => {
|
||||||
|
let totalAmount = salesAmount + productPrice;
|
||||||
|
totalAmount = totalAmount
|
||||||
|
.toFixed(2)
|
||||||
|
.toString()
|
||||||
|
.replace(".", "[,.]");
|
||||||
|
const regexp = new RegExp(`\\D*${totalAmount}\\D*`);
|
||||||
|
cy.visit(urlList.homePage);
|
||||||
|
homePageSteps.changeChannel(defaultChannel.name);
|
||||||
|
cy.contains(HOMEPAGE_SELECTORS.sales, regexp).should("be.visible");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
it("should correct amount of orders be displayed", () => {
|
||||||
|
homePageUtils.getTodaysOrders(defaultChannel.slug).as("todaysOrders");
|
||||||
|
|
||||||
|
ordersUtils.createReadyToFulfillOrder(
|
||||||
|
customerId,
|
||||||
|
shippingUtils.getShippingMethodId(),
|
||||||
|
defaultChannel.id,
|
||||||
|
productsUtils.getCreatedVariants()
|
||||||
|
);
|
||||||
|
|
||||||
|
cy.get("@todaysOrders").then(todaysOrders => {
|
||||||
|
const regexp = new RegExp(`\\D*${todaysOrders + 1}\\D*`);
|
||||||
|
cy.visit(urlList.homePage);
|
||||||
|
homePageSteps.changeChannel(defaultChannel.name);
|
||||||
|
cy.contains(HOMEPAGE_SELECTORS.orders, regexp).should("be.visible");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
12
cypress/steps/homePageSteps.js
Normal file
12
cypress/steps/homePageSteps.js
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import { HEADER_SELECTORS } from "../elements/header/header-selectors";
|
||||||
|
class HomePageSteps {
|
||||||
|
changeChannel(channelName) {
|
||||||
|
cy.get(HEADER_SELECTORS.channelSelect)
|
||||||
|
.click()
|
||||||
|
.get(HEADER_SELECTORS.channelSelectList)
|
||||||
|
.contains(channelName)
|
||||||
|
.click()
|
||||||
|
.waitForGraph("Home");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default HomePageSteps;
|
40
cypress/utils/channelsUtils.js
Normal file
40
cypress/utils/channelsUtils.js
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
import Channels from "../apiRequests/Channels";
|
||||||
|
|
||||||
|
class ChannelsUtils {
|
||||||
|
channels = new Channels();
|
||||||
|
|
||||||
|
deleteChannels(nameStartsWith) {
|
||||||
|
this.channels.getChannels().then(resp => {
|
||||||
|
const channelsArray = new Set(resp.body.data.channels);
|
||||||
|
if (channelsArray) {
|
||||||
|
channelsArray.forEach(element => {
|
||||||
|
if (element.name.startsWith(nameStartsWith)) {
|
||||||
|
const targetChannels = Array.from(channelsArray).filter(function(
|
||||||
|
channelElement
|
||||||
|
) {
|
||||||
|
return (
|
||||||
|
element.currencyCode === channelElement.currencyCode &&
|
||||||
|
element.id !== channelElement.id
|
||||||
|
);
|
||||||
|
});
|
||||||
|
if (targetChannels[0]) {
|
||||||
|
this.channels.deleteChannel(element.id, targetChannels[0].id);
|
||||||
|
channelsArray.delete(element);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
getDefaultChannel() {
|
||||||
|
return this.channels.getChannels().then(resp => {
|
||||||
|
const channelsArray = resp.body.data.channels;
|
||||||
|
return (this.defaultChannel = channelsArray.find(function(
|
||||||
|
channelElement
|
||||||
|
) {
|
||||||
|
return channelElement.slug === "default-channel";
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default ChannelsUtils;
|
30
cypress/utils/homePageUtils.js
Normal file
30
cypress/utils/homePageUtils.js
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
import HomePage from "../apiRequests/HomePage";
|
||||||
|
class HomePageUtils {
|
||||||
|
homePage = new HomePage();
|
||||||
|
getOrdersReadyToFulfill(channelSlug) {
|
||||||
|
return this.homePage
|
||||||
|
.getOrdersWithStatus("READY_TO_FULFILL", channelSlug)
|
||||||
|
.then(resp => resp.body.data.orders.totalCount);
|
||||||
|
}
|
||||||
|
getOrdersReadyForCapture(channelSlug) {
|
||||||
|
return this.homePage
|
||||||
|
.getOrdersWithStatus("READY_TO_CAPTURE", channelSlug)
|
||||||
|
.then(resp => resp.body.data.orders.totalCount);
|
||||||
|
}
|
||||||
|
getProductsOutOfStock(channelSlug) {
|
||||||
|
return this.homePage
|
||||||
|
.getProductsOutOfStock(channelSlug)
|
||||||
|
.then(resp => resp.body.data.products.totalCount);
|
||||||
|
}
|
||||||
|
getSalesAmount(channelSlug) {
|
||||||
|
return this.homePage
|
||||||
|
.getSalesForChannel(channelSlug, "TODAY")
|
||||||
|
.then(resp => resp.body.data.ordersTotal.gross.amount);
|
||||||
|
}
|
||||||
|
getTodaysOrders(channelSlug) {
|
||||||
|
return this.homePage
|
||||||
|
.getOrdersForChannel(channelSlug, "TODAY")
|
||||||
|
.then(resp => resp.body.data.orders.totalCount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default HomePageUtils;
|
Loading…
Reference in a new issue