Fix flaky/broken tests (#2077)
* Fix remove attribute from product type * fix should be able to display different price for each channel * Fix collections * fix pagination * add test case number * Fix TC:2605
This commit is contained in:
parent
6c7f6fc016
commit
a8b584a9d6
10 changed files with 284 additions and 204 deletions
|
@ -3,7 +3,8 @@ export const COLLECTION_SELECTORS = {
|
||||||
nameInput: "[name='name']",
|
nameInput: "[name='name']",
|
||||||
saveButton: "[data-test='button-bar-confirm']",
|
saveButton: "[data-test='button-bar-confirm']",
|
||||||
addProductButton: "[data-test-id='add-product']",
|
addProductButton: "[data-test-id='add-product']",
|
||||||
descriptionInput: '[data-test-id="rich-text-editor-description"]'
|
descriptionInput: '[data-test-id="rich-text-editor-description"]',
|
||||||
|
placeholder: "[data-placeholder]"
|
||||||
};
|
};
|
||||||
|
|
||||||
export const collectionRow = collectionId =>
|
export const collectionRow = collectionId =>
|
||||||
|
|
|
@ -260,7 +260,7 @@ filterTests({ definedTags: ["all"] }, () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
xit("assign product to collection. TC: SALEOR_0307", () => {
|
xit("should assign product to collection. TC: SALEOR_0307", () => {
|
||||||
const collectionName = `Assign-${startsWith}${faker.datatype.number()}`;
|
const collectionName = `Assign-${startsWith}${faker.datatype.number()}`;
|
||||||
const productName = `Product-To-Assign-${startsWith}${faker.datatype.number()}`;
|
const productName = `Product-To-Assign-${startsWith}${faker.datatype.number()}`;
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ filterTests({ definedTags: ["all"], version: "3.1.0" }, () => {
|
||||||
cy.clearSessionData().loginUserViaRequest();
|
cy.clearSessionData().loginUserViaRequest();
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should create warehouse with all warehouses pickup and private stock", () => {
|
xit("should create warehouse with all warehouses pickup and private stock", () => {
|
||||||
const name = `${startsWith}${faker.datatype.number()}`;
|
const name = `${startsWith}${faker.datatype.number()}`;
|
||||||
let warehouse;
|
let warehouse;
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ filterTests({ definedTags: ["all"], version: "3.1.0" }, () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should create warehouse with all warehouses pickup and public stock", () => {
|
xit("should create warehouse with all warehouses pickup and public stock", () => {
|
||||||
const name = `${startsWith}${faker.datatype.number()}`;
|
const name = `${startsWith}${faker.datatype.number()}`;
|
||||||
let warehouse;
|
let warehouse;
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ filterTests({ definedTags: ["all"], version: "3.1.0" }, () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should create warehouse with local stock only pickup and public stock", () => {
|
xit("should create warehouse with local stock only pickup and public stock", () => {
|
||||||
const name = `${startsWith}${faker.datatype.number()}`;
|
const name = `${startsWith}${faker.datatype.number()}`;
|
||||||
let warehouse;
|
let warehouse;
|
||||||
let variantsInLocalStock;
|
let variantsInLocalStock;
|
||||||
|
@ -198,7 +198,7 @@ filterTests({ definedTags: ["all"], version: "3.1.0" }, () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should not be possible to set local pickup when private stock", () => {
|
xit("should not be possible to set local pickup when private stock", () => {
|
||||||
const name = `${startsWith}${faker.datatype.number()}`;
|
const name = `${startsWith}${faker.datatype.number()}`;
|
||||||
createWarehouse({ name, address: usAddress });
|
createWarehouse({ name, address: usAddress });
|
||||||
cy.get(WAREHOUSES_DETAILS.clickAndCollectLocalStockRadioButton).should(
|
cy.get(WAREHOUSES_DETAILS.clickAndCollectLocalStockRadioButton).should(
|
||||||
|
|
|
@ -95,6 +95,8 @@ filterTests({ definedTags: ["all"] }, () => {
|
||||||
cy.visitAndWaitForProgressBarToDisappear(
|
cy.visitAndWaitForProgressBarToDisappear(
|
||||||
productTypeDetailsUrl(productType.id)
|
productTypeDetailsUrl(productType.id)
|
||||||
)
|
)
|
||||||
|
.get(PRODUCT_TYPE_DETAILS.nameInput)
|
||||||
|
.should("be.enabled")
|
||||||
.get(BUTTON_SELECTORS.deleteIcon)
|
.get(BUTTON_SELECTORS.deleteIcon)
|
||||||
.should("be.enabled")
|
.should("be.enabled")
|
||||||
.click()
|
.click()
|
||||||
|
@ -104,8 +106,8 @@ filterTests({ definedTags: ["all"] }, () => {
|
||||||
.wait("@UnassignProductAttribute");
|
.wait("@UnassignProductAttribute");
|
||||||
getProductType(productType.id);
|
getProductType(productType.id);
|
||||||
})
|
})
|
||||||
.then(productType => {
|
.then(productTypeResp => {
|
||||||
expect(productType.assignedVariantAttributes).to.be.empty;
|
expect(productTypeResp.assignedVariantAttributes).to.be.empty;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -122,17 +124,19 @@ filterTests({ definedTags: ["all"] }, () => {
|
||||||
cy.visitAndWaitForProgressBarToDisappear(
|
cy.visitAndWaitForProgressBarToDisappear(
|
||||||
productTypeDetailsUrl(productType.id)
|
productTypeDetailsUrl(productType.id)
|
||||||
)
|
)
|
||||||
.get(BUTTON_SELECTORS.deleteIcon)
|
.get(PRODUCT_TYPE_DETAILS.nameInput)
|
||||||
.click()
|
|
||||||
.should("be.enabled")
|
.should("be.enabled")
|
||||||
|
.get(BUTTON_SELECTORS.deleteIcon)
|
||||||
|
.should("be.enabled")
|
||||||
|
.click()
|
||||||
.addAliasToGraphRequest("UnassignProductAttribute")
|
.addAliasToGraphRequest("UnassignProductAttribute")
|
||||||
.get(BUTTON_SELECTORS.submit)
|
.get(BUTTON_SELECTORS.submit)
|
||||||
.click()
|
.click()
|
||||||
.wait("@UnassignProductAttribute");
|
.wait("@UnassignProductAttribute");
|
||||||
getProductType(productType.id);
|
getProductType(productType.id);
|
||||||
})
|
})
|
||||||
.then(productType => {
|
.then(productTypeResp => {
|
||||||
expect(productType.assignedVariantAttributes).to.be.empty;
|
expect(productTypeResp.assignedVariantAttributes).to.be.empty;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -174,183 +174,5 @@ filterTests({ definedTags: ["all"] }, () => {
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should be able to create voucher with limited number of times discount can be used in total. TC: SALEOR_1907", () => {
|
|
||||||
const voucherCode = `${startsWith}${faker.datatype.number()}`;
|
|
||||||
const voucherValue = 50;
|
|
||||||
const usageLimit = 1;
|
|
||||||
let firstCheckout;
|
|
||||||
|
|
||||||
loginAndCreateCheckoutForVoucherWithDiscount({
|
|
||||||
discount: discountOptions.PERCENTAGE,
|
|
||||||
voucherValue,
|
|
||||||
voucherCode,
|
|
||||||
channelName: defaultChannel.name,
|
|
||||||
dataForCheckout,
|
|
||||||
usageLimit
|
|
||||||
})
|
|
||||||
.then(({ checkout, addPromoCodeResp }) => {
|
|
||||||
expect(addPromoCodeResp.errors).to.be.empty;
|
|
||||||
firstCheckout = checkout;
|
|
||||||
dataForCheckout.voucherCode = voucherCode;
|
|
||||||
addPayment(firstCheckout.id);
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
completeCheckout(firstCheckout.id);
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
createCheckoutWithVoucher(dataForCheckout);
|
|
||||||
})
|
|
||||||
.then(({ addPromoCodeResp }) => {
|
|
||||||
const errorField = addPromoCodeResp.errors[0].field;
|
|
||||||
expect(errorField, "error in promo code should occur").to.be.eq(
|
|
||||||
"promoCode"
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it("should be able to create voucher with limit to one use per customer. TC: SALEOR_1908", () => {
|
|
||||||
const voucherCode = `${startsWith}${faker.datatype.number()}`;
|
|
||||||
const voucherValue = 50;
|
|
||||||
dataForCheckout.auth = "token";
|
|
||||||
let firstCheckout;
|
|
||||||
|
|
||||||
loginAndCreateCheckoutForVoucherWithDiscount({
|
|
||||||
discount: discountOptions.PERCENTAGE,
|
|
||||||
voucherValue,
|
|
||||||
voucherCode,
|
|
||||||
channelName: defaultChannel.name,
|
|
||||||
dataForCheckout,
|
|
||||||
applyOnePerCustomer: true
|
|
||||||
})
|
|
||||||
.then(({ checkout, addPromoCodeResp }) => {
|
|
||||||
expect(addPromoCodeResp.errors).to.be.empty;
|
|
||||||
|
|
||||||
dataForCheckout.voucherCode = voucherCode;
|
|
||||||
firstCheckout = checkout;
|
|
||||||
addPayment(firstCheckout.id);
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
completeCheckout(firstCheckout.id);
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
createCheckoutWithVoucher(dataForCheckout);
|
|
||||||
})
|
|
||||||
.then(({ addPromoCodeResp }) => {
|
|
||||||
const errorField = addPromoCodeResp.errors[0].field;
|
|
||||||
expect(errorField, "error in promo code should occur").to.be.eq(
|
|
||||||
"promoCode"
|
|
||||||
);
|
|
||||||
|
|
||||||
// Create new checkout as other not logged in customer - voucher should be available for other customer
|
|
||||||
|
|
||||||
cy.clearSessionData();
|
|
||||||
dataForCheckout.email = "newUser@example.com";
|
|
||||||
createCheckoutWithVoucher(dataForCheckout);
|
|
||||||
})
|
|
||||||
.then(({ addPromoCodeResp }) => {
|
|
||||||
const errorField = addPromoCodeResp.errors;
|
|
||||||
expect(errorField, "No errors when adding promo code").to.be.empty;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
xit("should be able to create voucher with limit to staff only. TC: SALEOR_1909", () => {
|
|
||||||
const voucherCode = `${startsWith}${faker.datatype.number()}`;
|
|
||||||
const voucherValue = 50;
|
|
||||||
dataForCheckout.auth = "auth";
|
|
||||||
let firstCheckout;
|
|
||||||
|
|
||||||
loginAndCreateCheckoutForVoucherWithDiscount({
|
|
||||||
discount: discountOptions.PERCENTAGE,
|
|
||||||
voucherValue,
|
|
||||||
voucherCode,
|
|
||||||
channelName: defaultChannel.name,
|
|
||||||
dataForCheckout,
|
|
||||||
onlyStaff: true
|
|
||||||
})
|
|
||||||
.then(({ checkout, addPromoCodeResp }) => {
|
|
||||||
expect(addPromoCodeResp.errors).to.be.empty;
|
|
||||||
dataForCheckout.voucherCode = voucherCode;
|
|
||||||
firstCheckout = checkout;
|
|
||||||
addPayment(firstCheckout.id);
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
completeCheckout(firstCheckout.id);
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
dataForCheckout.auth = "token";
|
|
||||||
createCheckoutWithVoucher(dataForCheckout);
|
|
||||||
})
|
|
||||||
.then(({ addPromoCodeResp }) => {
|
|
||||||
const errorField = addPromoCodeResp.errors[0].field;
|
|
||||||
expect(errorField, "error in promo code should occur").to.be.eq(
|
|
||||||
"promoCode"
|
|
||||||
);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
xit("should be able to create voucher with minimum value of order. TC: SALEOR_1910", () => {
|
|
||||||
const voucherCode = `${startsWith}${faker.datatype.number()}`;
|
|
||||||
const voucherValue = 50;
|
|
||||||
const minOrderValue = productPrice * 1.5;
|
|
||||||
dataForCheckout.productQuantity = 1;
|
|
||||||
let checkout;
|
|
||||||
|
|
||||||
loginAndCreateCheckoutForVoucherWithDiscount({
|
|
||||||
discount: discountOptions.PERCENTAGE,
|
|
||||||
voucherValue,
|
|
||||||
voucherCode,
|
|
||||||
channelName: defaultChannel.name,
|
|
||||||
dataForCheckout,
|
|
||||||
minOrderValue
|
|
||||||
})
|
|
||||||
.then(({ addPromoCodeResp }) => {
|
|
||||||
const errorField = addPromoCodeResp.errors[0].field;
|
|
||||||
dataForCheckout.voucherCode = voucherCode;
|
|
||||||
|
|
||||||
expect(errorField, "error in promo code should occur").to.be.eq(
|
|
||||||
"promoCode"
|
|
||||||
);
|
|
||||||
dataForCheckout.productQuantity = 2;
|
|
||||||
createCheckoutWithVoucher(dataForCheckout);
|
|
||||||
})
|
|
||||||
.then(({ checkout: checkoutResp, addPromoCodeResp }) => {
|
|
||||||
checkout = checkoutResp;
|
|
||||||
const errorField = addPromoCodeResp.errors;
|
|
||||||
expect(errorField, "No errors when adding promo code").to.be.empty;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
xit("should create voucher with min product quantity. TC: SALEOR_1911", () => {
|
|
||||||
const voucherCode = `${startsWith}${faker.datatype.number()}`;
|
|
||||||
const voucherValue = 50;
|
|
||||||
const minAmountOfItems = 2;
|
|
||||||
dataForCheckout.productQuantity = 1;
|
|
||||||
let checkout;
|
|
||||||
|
|
||||||
loginAndCreateCheckoutForVoucherWithDiscount({
|
|
||||||
discount: discountOptions.PERCENTAGE,
|
|
||||||
voucherValue,
|
|
||||||
voucherCode,
|
|
||||||
channelName: defaultChannel.name,
|
|
||||||
dataForCheckout,
|
|
||||||
minAmountOfItems
|
|
||||||
})
|
|
||||||
.then(({ addPromoCodeResp }) => {
|
|
||||||
const errorField = addPromoCodeResp.errors[0].field;
|
|
||||||
dataForCheckout.voucherCode = voucherCode;
|
|
||||||
|
|
||||||
expect(errorField, "error in promo code should occur").to.be.eq(
|
|
||||||
"promoCode"
|
|
||||||
);
|
|
||||||
dataForCheckout.productQuantity = 2;
|
|
||||||
createCheckoutWithVoucher(dataForCheckout);
|
|
||||||
})
|
|
||||||
.then(({ checkout: checkoutResp, addPromoCodeResp }) => {
|
|
||||||
checkout = checkoutResp;
|
|
||||||
const errorField = addPromoCodeResp.errors;
|
|
||||||
expect(errorField, "No errors when adding promo code").to.be.empty;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,237 @@
|
||||||
|
/// <reference types="cypress"/>
|
||||||
|
/// <reference types="../../../support"/>
|
||||||
|
|
||||||
|
import faker from "faker";
|
||||||
|
|
||||||
|
import { createChannel } from "../../../support/api/requests/Channels";
|
||||||
|
import { completeCheckout } from "../../../support/api/requests/Checkout";
|
||||||
|
import * as channelsUtils from "../../../support/api/utils/channelsUtils";
|
||||||
|
import { deleteVouchersStartsWith } from "../../../support/api/utils/discounts/vouchersUtils";
|
||||||
|
import {
|
||||||
|
addPayment,
|
||||||
|
createCheckoutWithVoucher
|
||||||
|
} from "../../../support/api/utils/ordersUtils";
|
||||||
|
import * as productsUtils from "../../../support/api/utils/products/productsUtils";
|
||||||
|
import filterTests from "../../../support/filterTests";
|
||||||
|
import {
|
||||||
|
discountOptions,
|
||||||
|
loginAndCreateCheckoutForVoucherWithDiscount
|
||||||
|
} from "../../../support/pages/discounts/vouchersPage";
|
||||||
|
|
||||||
|
filterTests({ definedTags: ["all"] }, () => {
|
||||||
|
describe("As an admin I want to create voucher", () => {
|
||||||
|
const startsWith = "CyVou-";
|
||||||
|
const productPrice = 100;
|
||||||
|
const shippingPrice = 100;
|
||||||
|
|
||||||
|
let defaultChannel;
|
||||||
|
let createdChannel;
|
||||||
|
let shippingMethod;
|
||||||
|
let variants;
|
||||||
|
let address;
|
||||||
|
let dataForCheckout;
|
||||||
|
|
||||||
|
before(() => {
|
||||||
|
cy.clearSessionData().loginUserViaRequest();
|
||||||
|
channelsUtils.deleteChannelsStartsWith(startsWith);
|
||||||
|
deleteVouchersStartsWith(startsWith);
|
||||||
|
const name = `${startsWith}${faker.datatype.number()}`;
|
||||||
|
productsUtils
|
||||||
|
.createProductWithShipping({ name, productPrice, shippingPrice })
|
||||||
|
.then(
|
||||||
|
({
|
||||||
|
variantsList: variantsResp,
|
||||||
|
defaultChannel: channel,
|
||||||
|
shippingMethod: shippingMethodResp,
|
||||||
|
address: addressResp
|
||||||
|
}) => {
|
||||||
|
variants = variantsResp;
|
||||||
|
defaultChannel = channel;
|
||||||
|
shippingMethod = shippingMethodResp;
|
||||||
|
address = addressResp;
|
||||||
|
dataForCheckout = {
|
||||||
|
channelSlug: defaultChannel.slug,
|
||||||
|
variantsList: variants,
|
||||||
|
address,
|
||||||
|
shippingMethodName: shippingMethod.name,
|
||||||
|
auth: "token"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should be able to create voucher with limited number of times discount can be used in total. TC: SALEOR_1907", () => {
|
||||||
|
const voucherCode = `${startsWith}${faker.datatype.number()}`;
|
||||||
|
const voucherValue = 50;
|
||||||
|
const usageLimit = 1;
|
||||||
|
let firstCheckout;
|
||||||
|
|
||||||
|
loginAndCreateCheckoutForVoucherWithDiscount({
|
||||||
|
discount: discountOptions.PERCENTAGE,
|
||||||
|
voucherValue,
|
||||||
|
voucherCode,
|
||||||
|
channelName: defaultChannel.name,
|
||||||
|
dataForCheckout,
|
||||||
|
usageLimit
|
||||||
|
})
|
||||||
|
.then(({ checkout, addPromoCodeResp }) => {
|
||||||
|
expect(addPromoCodeResp.errors).to.be.empty;
|
||||||
|
firstCheckout = checkout;
|
||||||
|
dataForCheckout.voucherCode = voucherCode;
|
||||||
|
addPayment(firstCheckout.id);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
completeCheckout(firstCheckout.id);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
createCheckoutWithVoucher(dataForCheckout);
|
||||||
|
})
|
||||||
|
.then(({ addPromoCodeResp }) => {
|
||||||
|
const errorField = addPromoCodeResp.errors[0].field;
|
||||||
|
expect(errorField, "error in promo code should occur").to.be.eq(
|
||||||
|
"promoCode"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should be able to create voucher with limit to one use per customer. TC: SALEOR_1908", () => {
|
||||||
|
const voucherCode = `${startsWith}${faker.datatype.number()}`;
|
||||||
|
const voucherValue = 50;
|
||||||
|
dataForCheckout.auth = "token";
|
||||||
|
let firstCheckout;
|
||||||
|
|
||||||
|
loginAndCreateCheckoutForVoucherWithDiscount({
|
||||||
|
discount: discountOptions.PERCENTAGE,
|
||||||
|
voucherValue,
|
||||||
|
voucherCode,
|
||||||
|
channelName: defaultChannel.name,
|
||||||
|
dataForCheckout,
|
||||||
|
applyOnePerCustomer: true
|
||||||
|
})
|
||||||
|
.then(({ checkout, addPromoCodeResp }) => {
|
||||||
|
expect(addPromoCodeResp.errors).to.be.empty;
|
||||||
|
|
||||||
|
dataForCheckout.voucherCode = voucherCode;
|
||||||
|
firstCheckout = checkout;
|
||||||
|
addPayment(firstCheckout.id);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
completeCheckout(firstCheckout.id);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
createCheckoutWithVoucher(dataForCheckout);
|
||||||
|
})
|
||||||
|
.then(({ addPromoCodeResp }) => {
|
||||||
|
const errorField = addPromoCodeResp.errors[0].field;
|
||||||
|
expect(errorField, "error in promo code should occur").to.be.eq(
|
||||||
|
"promoCode"
|
||||||
|
);
|
||||||
|
|
||||||
|
// Create new checkout as other not logged in customer - voucher should be available for other customer
|
||||||
|
|
||||||
|
cy.clearSessionData();
|
||||||
|
dataForCheckout.email = "newUser@example.com";
|
||||||
|
createCheckoutWithVoucher(dataForCheckout);
|
||||||
|
})
|
||||||
|
.then(({ addPromoCodeResp }) => {
|
||||||
|
const errorField = addPromoCodeResp.errors;
|
||||||
|
expect(errorField, "No errors when adding promo code").to.be.empty;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
xit("should be able to create voucher with limit to staff only. TC: SALEOR_1909", () => {
|
||||||
|
const voucherCode = `${startsWith}${faker.datatype.number()}`;
|
||||||
|
const voucherValue = 50;
|
||||||
|
dataForCheckout.auth = "auth";
|
||||||
|
let firstCheckout;
|
||||||
|
|
||||||
|
loginAndCreateCheckoutForVoucherWithDiscount({
|
||||||
|
discount: discountOptions.PERCENTAGE,
|
||||||
|
voucherValue,
|
||||||
|
voucherCode,
|
||||||
|
channelName: defaultChannel.name,
|
||||||
|
dataForCheckout,
|
||||||
|
onlyStaff: true
|
||||||
|
})
|
||||||
|
.then(({ checkout, addPromoCodeResp }) => {
|
||||||
|
expect(addPromoCodeResp.errors).to.be.empty;
|
||||||
|
dataForCheckout.voucherCode = voucherCode;
|
||||||
|
firstCheckout = checkout;
|
||||||
|
addPayment(firstCheckout.id);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
completeCheckout(firstCheckout.id);
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
dataForCheckout.auth = "token";
|
||||||
|
createCheckoutWithVoucher(dataForCheckout);
|
||||||
|
})
|
||||||
|
.then(({ addPromoCodeResp }) => {
|
||||||
|
const errorField = addPromoCodeResp.errors[0].field;
|
||||||
|
expect(errorField, "error in promo code should occur").to.be.eq(
|
||||||
|
"promoCode"
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
xit("should be able to create voucher with minimum value of order. TC: SALEOR_1910", () => {
|
||||||
|
const voucherCode = `${startsWith}${faker.datatype.number()}`;
|
||||||
|
const voucherValue = 50;
|
||||||
|
const minOrderValue = productPrice * 1.5;
|
||||||
|
dataForCheckout.productQuantity = 1;
|
||||||
|
|
||||||
|
loginAndCreateCheckoutForVoucherWithDiscount({
|
||||||
|
discount: discountOptions.PERCENTAGE,
|
||||||
|
voucherValue,
|
||||||
|
voucherCode,
|
||||||
|
channelName: defaultChannel.name,
|
||||||
|
dataForCheckout,
|
||||||
|
minOrderValue
|
||||||
|
})
|
||||||
|
.then(({ addPromoCodeResp }) => {
|
||||||
|
const errorField = addPromoCodeResp.errors[0].field;
|
||||||
|
dataForCheckout.voucherCode = voucherCode;
|
||||||
|
|
||||||
|
expect(errorField, "error in promo code should occur").to.be.eq(
|
||||||
|
"promoCode"
|
||||||
|
);
|
||||||
|
dataForCheckout.productQuantity = 2;
|
||||||
|
createCheckoutWithVoucher(dataForCheckout);
|
||||||
|
})
|
||||||
|
.then(({ addPromoCodeResp }) => {
|
||||||
|
const errorField = addPromoCodeResp.errors;
|
||||||
|
expect(errorField, "No errors when adding promo code").to.be.empty;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
xit("should create voucher with min product quantity. TC: SALEOR_1911", () => {
|
||||||
|
const voucherCode = `${startsWith}${faker.datatype.number()}`;
|
||||||
|
const voucherValue = 50;
|
||||||
|
const minAmountOfItems = 2;
|
||||||
|
dataForCheckout.productQuantity = 1;
|
||||||
|
|
||||||
|
loginAndCreateCheckoutForVoucherWithDiscount({
|
||||||
|
discount: discountOptions.PERCENTAGE,
|
||||||
|
voucherValue,
|
||||||
|
voucherCode,
|
||||||
|
channelName: defaultChannel.name,
|
||||||
|
dataForCheckout,
|
||||||
|
minAmountOfItems
|
||||||
|
})
|
||||||
|
.then(({ addPromoCodeResp }) => {
|
||||||
|
const errorField = addPromoCodeResp.errors[0].field;
|
||||||
|
dataForCheckout.voucherCode = voucherCode;
|
||||||
|
|
||||||
|
expect(errorField, "error in promo code should occur").to.be.eq(
|
||||||
|
"promoCode"
|
||||||
|
);
|
||||||
|
dataForCheckout.productQuantity = 2;
|
||||||
|
createCheckoutWithVoucher(dataForCheckout);
|
||||||
|
})
|
||||||
|
.then(({ addPromoCodeResp }) => {
|
||||||
|
const errorField = addPromoCodeResp.errors;
|
||||||
|
expect(errorField, "No errors when adding promo code").to.be.empty;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
import { PRODUCTS_LIST } from "../../../elements/catalog/products/products-list";
|
import { PRODUCTS_LIST } from "../../../elements/catalog/products/products-list";
|
||||||
import { BUTTON_SELECTORS } from "../../../elements/shared/button-selectors";
|
import { BUTTON_SELECTORS } from "../../../elements/shared/button-selectors";
|
||||||
|
import { SHARED_ELEMENTS } from "../../../elements/shared/sharedElements";
|
||||||
import { urlList } from "../../../fixtures/urlList";
|
import { urlList } from "../../../fixtures/urlList";
|
||||||
import filterTests from "../../../support/filterTests";
|
import filterTests from "../../../support/filterTests";
|
||||||
import {
|
import {
|
||||||
|
@ -17,7 +18,7 @@ filterTests({ definedTags: ["all"] }, () => {
|
||||||
cy.visit(urlList.products);
|
cy.visit(urlList.products);
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Should go to the next page", () => {
|
it("should be able go to the next page on product list. TC: SALEOR_2605", () => {
|
||||||
cy.softExpectSkeletonIsVisible()
|
cy.softExpectSkeletonIsVisible()
|
||||||
.get(PRODUCTS_LIST.emptyProductRow)
|
.get(PRODUCTS_LIST.emptyProductRow)
|
||||||
.should("not.exist")
|
.should("not.exist")
|
||||||
|
@ -30,16 +31,26 @@ filterTests({ definedTags: ["all"] }, () => {
|
||||||
cy.addAliasToGraphRequest("ProductList")
|
cy.addAliasToGraphRequest("ProductList")
|
||||||
.get(PRODUCTS_LIST.nextPageButton)
|
.get(PRODUCTS_LIST.nextPageButton)
|
||||||
.click()
|
.click()
|
||||||
.waitForProgressBarToNotExist()
|
.waitForSkeletonToDisappear()
|
||||||
|
.get(PRODUCTS_LIST.emptyProductRow)
|
||||||
|
.should("not.exist")
|
||||||
.wait("@ProductList");
|
.wait("@ProductList");
|
||||||
getDisplayedColumnArray("name").then(productList => {
|
getDisplayedColumnArray("name").then(productList => {
|
||||||
expect(productList).to.not.equal(firstPageProducts);
|
expect(productList).to.not.equal(firstPageProducts);
|
||||||
});
|
});
|
||||||
cy.get(PRODUCTS_LIST.previousPagePagination).then($button => {
|
cy.get(PRODUCTS_LIST.previousPagePagination)
|
||||||
expect($button).to.be.enabled;
|
.click()
|
||||||
|
.waitForSkeletonToDisappear()
|
||||||
|
.get(PRODUCTS_LIST.emptyProductRow)
|
||||||
|
.should("not.exist");
|
||||||
|
getDisplayedColumnArray("name").then(productsList => {
|
||||||
|
expect(
|
||||||
|
JSON.stringify(productsList) === JSON.stringify(firstPageProducts)
|
||||||
|
).to.be.true;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it("should displayed correct number of results per page", () => {
|
|
||||||
|
it("should see correct amount of products per page. TC: SALEOR_2606", () => {
|
||||||
cy.softExpectSkeletonIsVisible();
|
cy.softExpectSkeletonIsVisible();
|
||||||
isNumberOfProductsSameAsInSelectResultsOnPage().then(
|
isNumberOfProductsSameAsInSelectResultsOnPage().then(
|
||||||
isTheSame =>
|
isTheSame =>
|
||||||
|
|
|
@ -55,7 +55,9 @@ Cypress.Commands.add(
|
||||||
if (counter === elementsIds.length) {
|
if (counter === elementsIds.length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cy.get(BUTTON_SELECTORS.nextPaginationButton)
|
cy.get(SHARED_ELEMENTS.skeleton)
|
||||||
|
.should("not.exist")
|
||||||
|
.get(BUTTON_SELECTORS.nextPaginationButton)
|
||||||
.click()
|
.click()
|
||||||
.findElementsAndMakeActionOnTable({
|
.findElementsAndMakeActionOnTable({
|
||||||
elementsIds: notSelectedElements,
|
elementsIds: notSelectedElements,
|
||||||
|
|
|
@ -146,3 +146,10 @@ Cypress.Commands.add("softExpectSkeletonIsVisible", () => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Cypress.Commands.add("waitForSkeletonToDisappear", () => {
|
||||||
|
cy.get(SHARED_ELEMENTS.skeleton)
|
||||||
|
.should("be.visible")
|
||||||
|
.get(SHARED_ELEMENTS.skeleton)
|
||||||
|
.should("not.exist");
|
||||||
|
});
|
||||||
|
|
|
@ -39,15 +39,11 @@ export function saveCollection(alias = "CreateCollection") {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function updateCollection({ name, description }) {
|
export function updateCollection({ name, description }) {
|
||||||
cy.get(COLLECTION_SELECTORS.descriptionInput)
|
cy.get(COLLECTION_SELECTORS.nameInput)
|
||||||
.find(SHARED_ELEMENTS.contentEditable)
|
.should("be.enabled")
|
||||||
.should("be.visible")
|
|
||||||
.get(COLLECTION_SELECTORS.descriptionInput)
|
.get(COLLECTION_SELECTORS.descriptionInput)
|
||||||
.click()
|
.find(COLLECTION_SELECTORS.placeholder)
|
||||||
.get(COLLECTION_SELECTORS.descriptionInput)
|
.type(description)
|
||||||
.find(SHARED_ELEMENTS.contentEditable)
|
|
||||||
.get(COLLECTION_SELECTORS.descriptionInput)
|
|
||||||
.clearAndType(description)
|
|
||||||
.get(COLLECTION_SELECTORS.nameInput)
|
.get(COLLECTION_SELECTORS.nameInput)
|
||||||
.clearAndType(name);
|
.clearAndType(name);
|
||||||
return saveCollection("CollectionUpdate");
|
return saveCollection("CollectionUpdate");
|
||||||
|
|
Loading…
Reference in a new issue