parent
5dabfc315f
commit
dd2a643566
13 changed files with 87 additions and 100 deletions
|
@ -2,16 +2,16 @@
|
|||
/// <reference types="../../../support"/>
|
||||
import faker from "faker";
|
||||
|
||||
import { PRODUCTS_LIST } from "../../../elements/catalog/products/products-list";
|
||||
import { ADD_CHANNEL_FORM_SELECTORS } from "../../../elements/channels/add-channel-form-selectors";
|
||||
import { AVAILABLE_CHANNELS_FORM } from "../../../elements/channels/available-channels-form";
|
||||
import { CHANNELS_SELECTORS } from "../../../elements/channels/channels-selectors";
|
||||
import { SELECT_CHANNELS_TO_ASSIGN } from "../../../elements/channels/select-channels-to-assign";
|
||||
import { HEADER_SELECTORS } from "../../../elements/header/header-selectors";
|
||||
import { BUTTON_SELECTORS } from "../../../elements/shared/button-selectors";
|
||||
import { urlList } from "../../../fixtures/urlList";
|
||||
import { productDetailsUrl, urlList } from "../../../fixtures/urlList";
|
||||
import { ONE_PERMISSION_USERS } from "../../../fixtures/users";
|
||||
import { createChannel } from "../../../support/api/requests/Channels";
|
||||
import { getFirstProducts } from "../../../support/api/requests/Product";
|
||||
import {
|
||||
createShippingZoneWithoutWarehouse,
|
||||
getShippingZone,
|
||||
|
@ -87,19 +87,14 @@ describe("Channels", () => {
|
|||
|
||||
// new channel should be visible at product availability form
|
||||
cy.clearSessionData().loginUserViaRequest();
|
||||
cy.addAliasToGraphRequest("InitialProductFilterAttributes");
|
||||
cy.visit(urlList.products)
|
||||
.waitForRequestAndCheckIfNoErrors("@InitialProductFilterAttributes")
|
||||
.waitForProgressBarToNotExist()
|
||||
.get(PRODUCTS_LIST.emptyProductRow)
|
||||
.should("not.exist")
|
||||
.get(PRODUCTS_LIST.productsNames)
|
||||
.first()
|
||||
.click()
|
||||
getFirstProducts(1).then(resp => {
|
||||
const product = resp[0].node;
|
||||
cy.visit(productDetailsUrl(product.id))
|
||||
.get(AVAILABLE_CHANNELS_FORM.manageChannelsButton)
|
||||
.click()
|
||||
.get(SELECT_CHANNELS_TO_ASSIGN.listOfChannels)
|
||||
.contains(randomChannel);
|
||||
});
|
||||
},
|
||||
);
|
||||
it(
|
||||
|
|
|
@ -18,7 +18,6 @@ import {
|
|||
PERMISSION_GROUP_LIST_SELECTORS,
|
||||
PLUGINS_LIST_SELECTORS,
|
||||
PRODUCT_TYPES_LIST_SELECTORS,
|
||||
PRODUCTS_LIST,
|
||||
SALES_SELECTORS,
|
||||
SHIPPING_ZONES_LIST_SELECTORS,
|
||||
STAFF_MEMBERS_LIST_SELECTORS,
|
||||
|
@ -26,7 +25,6 @@ import {
|
|||
} from "../elements/";
|
||||
import { PERMISSIONS_OPTIONS } from "../fixtures/permissionsUsers";
|
||||
import { urlList } from "../fixtures/urlList";
|
||||
import { ensureCanvasStatic } from "../support/customCommands/sharedElementsOperations/canvas";
|
||||
import {
|
||||
expectConfigurationAvailableSectionsNumber,
|
||||
expectConfigurationSectionsToBeVisible,
|
||||
|
@ -432,9 +430,6 @@ describe("As a staff user I want to navigate through shop using different permis
|
|||
cy.get(MENU_SELECTORS.CATALOG.collections).should("be.visible");
|
||||
expectMainMenuAvailableSections(5);
|
||||
});
|
||||
ensureCanvasStatic(PRODUCTS_LIST.dataGridTable).then(() => {
|
||||
cy.assertCanvasRowsNumber(PRODUCTS_LIST.dataGridTable, 21);
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
import faker from "faker";
|
||||
|
||||
import { PRODUCTS_LIST } from "../../../elements/catalog/products/products-list";
|
||||
import { SHARED_ELEMENTS } from "../../../elements";
|
||||
import { urlList } from "../../../fixtures/urlList";
|
||||
import { createCollection } from "../../../support/api/requests/Collections";
|
||||
import { updateProduct } from "../../../support/api/requests/Product";
|
||||
|
@ -24,7 +24,7 @@ import {
|
|||
} from "../../../support/pages/catalog/products/productsListPage";
|
||||
|
||||
describe("As an admin I should be able to filter products", () => {
|
||||
const startsWith = "CyFilterProducts-";
|
||||
const startsWith = "ACyFilterProducts-";
|
||||
const name = `${startsWith}${faker.datatype.number()}`;
|
||||
const stockQuantity = 747;
|
||||
const price = 342;
|
||||
|
@ -92,9 +92,7 @@ describe("As an admin I should be able to filter products", () => {
|
|||
});
|
||||
|
||||
beforeEach(() => {
|
||||
cy.clearSessionData()
|
||||
.loginUserViaRequest()
|
||||
.visit(urlList.products);
|
||||
cy.clearSessionData().loginUserViaRequest().visit(urlList.products);
|
||||
});
|
||||
|
||||
const filterProductsBy = [
|
||||
|
@ -107,11 +105,8 @@ describe("As an admin I should be able to filter products", () => {
|
|||
`should filter products by ${filterBy.type}. TC: ${filterBy.testCase}`,
|
||||
{ tags: ["@productsList", "@allEnv", "@stable"] },
|
||||
() => {
|
||||
cy.expectSkeletonIsVisible().waitForProgressBarToNotExist();
|
||||
selectFilterOption(filterBy.type, name);
|
||||
cy.getTextFromElement(PRODUCTS_LIST.productsNames).then(product => {
|
||||
expect(product).to.includes(name);
|
||||
});
|
||||
cy.get(SHARED_ELEMENTS.dataGridTable).contains(name).should("exist");
|
||||
},
|
||||
);
|
||||
});
|
||||
|
@ -120,7 +115,6 @@ describe("As an admin I should be able to filter products", () => {
|
|||
"should filter products out of stock. TC: SALEOR_2604",
|
||||
{ tags: ["@productsList", "@allEnv", "@stable"] },
|
||||
() => {
|
||||
cy.expectSkeletonIsVisible();
|
||||
const productOutOfStock = `${startsWith}${faker.datatype.number()}`;
|
||||
createProductInChannel({
|
||||
name: productOutOfStock,
|
||||
|
@ -132,16 +126,11 @@ describe("As an admin I should be able to filter products", () => {
|
|||
categoryId: category.id,
|
||||
price,
|
||||
});
|
||||
cy.waitForProgressBarToNotExist();
|
||||
selectChannel(channel.slug);
|
||||
selectProductsOutOfStock();
|
||||
cy.searchInTable(productOutOfStock)
|
||||
.get(PRODUCTS_LIST.productsNames)
|
||||
.should("have.length", 1)
|
||||
.getTextFromElement(PRODUCTS_LIST.productsNames)
|
||||
.then(product => {
|
||||
expect(product).to.includes(productOutOfStock);
|
||||
});
|
||||
cy.get(SHARED_ELEMENTS.dataGridTable)
|
||||
.contains(productOutOfStock)
|
||||
.should("exist");
|
||||
},
|
||||
);
|
||||
});
|
||||
|
|
|
@ -1,13 +1,10 @@
|
|||
/// <reference types="cypress"/>
|
||||
/// <reference types="../../../support"/>
|
||||
|
||||
import { PAGINATION } from "../../../elements";
|
||||
import { PRODUCTS_LIST } from "../../../elements/catalog/products/products-list";
|
||||
import { BUTTON_SELECTORS } from "../../../elements/shared/button-selectors";
|
||||
import { urlList } from "../../../fixtures/urlList";
|
||||
import {
|
||||
getDisplayedColumnArray,
|
||||
isNumberOfProductsSameAsInSelectResultsOnPage,
|
||||
} from "../../../support/pages/catalog/products/productsListPage";
|
||||
import { ensureCanvasStatic } from "../../../support/customCommands/sharedElementsOperations/canvas";
|
||||
|
||||
describe("As an admin I should be able to manage products table", () => {
|
||||
beforeEach(() => {
|
||||
|
@ -16,37 +13,33 @@ describe("As an admin I should be able to manage products table", () => {
|
|||
});
|
||||
|
||||
it(
|
||||
"should be able go to the next page on product list. TC: SALEOR_2605",
|
||||
"should be able go to the next page and back on product list. TC: SALEOR_2605",
|
||||
{ tags: ["@productsList", "@allEnv", "@stable"] },
|
||||
() => {
|
||||
cy.expectSkeletonIsVisible()
|
||||
.get(PRODUCTS_LIST.emptyProductRow)
|
||||
.should("not.exist")
|
||||
.get(PRODUCTS_LIST.previousPagePagination)
|
||||
.should("be.disabled");
|
||||
let firstPageProducts;
|
||||
getDisplayedColumnArray("name").then(
|
||||
productsList => (firstPageProducts = productsList),
|
||||
);
|
||||
cy.addAliasToGraphRequest("ProductList")
|
||||
.get(PRODUCTS_LIST.nextPageButton)
|
||||
.click()
|
||||
.waitForSkeletonToDisappear()
|
||||
.get(PRODUCTS_LIST.emptyProductRow)
|
||||
.should("not.exist")
|
||||
.wait("@ProductList");
|
||||
getDisplayedColumnArray("name").then(productList => {
|
||||
expect(productList).to.not.equal(firstPageProducts);
|
||||
ensureCanvasStatic(PRODUCTS_LIST.dataGridTable).then(() => {
|
||||
cy.assertCanvasRowsNumber(PRODUCTS_LIST.dataGridTable, 21);
|
||||
});
|
||||
cy.get(PRODUCTS_LIST.previousPagePagination)
|
||||
cy.get(PAGINATION.previousPagePaginationButton).should("be.disabled");
|
||||
|
||||
cy.addAliasToGraphRequest("ProductList")
|
||||
.get(PAGINATION.nextPagePaginationButton)
|
||||
.should("not.be.disabled")
|
||||
.click()
|
||||
.waitForSkeletonToDisappear()
|
||||
.get(PRODUCTS_LIST.emptyProductRow)
|
||||
.should("not.exist");
|
||||
getDisplayedColumnArray("name").then(productsList => {
|
||||
expect(
|
||||
JSON.stringify(productsList) === JSON.stringify(firstPageProducts),
|
||||
).to.be.true;
|
||||
.wait("@ProductList");
|
||||
|
||||
ensureCanvasStatic(PRODUCTS_LIST.dataGridTable).then(() => {
|
||||
cy.assertCanvasRowsNumber(PRODUCTS_LIST.dataGridTable, 21);
|
||||
});
|
||||
cy.get(PAGINATION.previousPagePaginationButton)
|
||||
.should("not.be.disabled")
|
||||
.click()
|
||||
.wait("@ProductList")
|
||||
.get(PAGINATION.previousPagePaginationButton)
|
||||
.should("be.disabled")
|
||||
.get(PAGINATION.nextPagePaginationButton)
|
||||
.should("not.be.disabled");
|
||||
ensureCanvasStatic(PRODUCTS_LIST.dataGridTable).then(() => {
|
||||
cy.assertCanvasRowsNumber(PRODUCTS_LIST.dataGridTable, 21);
|
||||
});
|
||||
},
|
||||
);
|
||||
|
@ -55,27 +48,17 @@ describe("As an admin I should be able to manage products table", () => {
|
|||
"should see correct amount of products per page. TC: SALEOR_2606",
|
||||
{ tags: ["@productsList", "@allEnv", "@stable"] },
|
||||
() => {
|
||||
cy.expectSkeletonIsVisible();
|
||||
isNumberOfProductsSameAsInSelectResultsOnPage().then(
|
||||
isTheSame =>
|
||||
expect(isTheSame, "check if number of displayed products is correct")
|
||||
.to.be.true,
|
||||
);
|
||||
cy.get(PRODUCTS_LIST.resultsOnPageSelect)
|
||||
.click()
|
||||
.get(
|
||||
`${PRODUCTS_LIST.rowNumberOption}${BUTTON_SELECTORS.notSelectedOption}`,
|
||||
)
|
||||
.first()
|
||||
.click()
|
||||
.waitForProgressBarToNotExist();
|
||||
isNumberOfProductsSameAsInSelectResultsOnPage().then(
|
||||
isTheSame =>
|
||||
expect(
|
||||
isTheSame,
|
||||
"check if number of displayed products is correct, after changing results number in table footer",
|
||||
).to.be.true,
|
||||
);
|
||||
cy.addAliasToGraphRequest("ProductList");
|
||||
ensureCanvasStatic(PRODUCTS_LIST.dataGridTable).then(() => {
|
||||
cy.getRowNumberButton().should("contain.text", 20);
|
||||
cy.assertCanvasRowsNumber(PRODUCTS_LIST.dataGridTable, 21);
|
||||
});
|
||||
cy.clickRowNumberButton();
|
||||
cy.getRowSelectorWithNumber(30).click().wait("@ProductList");
|
||||
ensureCanvasStatic(PRODUCTS_LIST.dataGridTable).then(() => {
|
||||
cy.get(PRODUCTS_LIST.resultsOnPageSelect).should("contain.text", 30);
|
||||
cy.assertCanvasRowsNumber(PRODUCTS_LIST.dataGridTable, 31);
|
||||
});
|
||||
},
|
||||
);
|
||||
});
|
||||
|
|
|
@ -11,14 +11,14 @@ import {
|
|||
submitFilters,
|
||||
} from "../../../support/pages/catalog/products/productsListPage";
|
||||
|
||||
describe("As an admin I should be able to sort products", () => {
|
||||
// waiting for canvas fix https://github.com/saleor/saleor-dashboard/issues/3410
|
||||
describe.skip("As an admin I should be able to sort products", () => {
|
||||
let defaultChannel;
|
||||
|
||||
beforeEach(() => {
|
||||
cy.clearSessionData()
|
||||
.loginUserViaRequest()
|
||||
.visit(urlList.products)
|
||||
.expectSkeletonIsVisible()
|
||||
.get(SHARED_ELEMENTS.header)
|
||||
.should("be.visible");
|
||||
});
|
||||
|
|
|
@ -48,8 +48,6 @@ export const PRODUCTS_LIST = {
|
|||
},
|
||||
filterBySearchInput: '[data-test-id="filter-field-autocomplete-input"]',
|
||||
},
|
||||
nextPageButton: "[data-test-id='button-pagination-next']",
|
||||
previousPagePagination: "[data-test-id='button-pagination-back']",
|
||||
resultsOnPageSelect: "[data-test-id='PaginationRowNumberSelect']",
|
||||
rowNumberOption: "[data-test-id='rowNumberOption']",
|
||||
};
|
||||
|
|
|
@ -19,6 +19,7 @@ import {
|
|||
CUSTOMERS_LIST_SELECTORS,
|
||||
} from "./customer/";
|
||||
import { SALES_SELECTORS, VOUCHERS_SELECTORS } from "./discounts";
|
||||
import { PAGINATION } from "./navigation";
|
||||
import { DRAFT_ORDERS_LIST_SELECTORS, ORDERS_SELECTORS } from "./orders";
|
||||
import { PAGE_DETAILS_SELECTORS, PAGES_LIST_SELECTORS } from "./pages/";
|
||||
import {
|
||||
|
@ -65,6 +66,7 @@ export {
|
|||
PAGE_TYPE_DETAILS_SELECTORS,
|
||||
PAGE_TYPES_LIST_SELECTORS,
|
||||
PAGES_LIST_SELECTORS,
|
||||
PAGINATION,
|
||||
PERMISSION_GROUP_DETAILS_SELECTORS,
|
||||
PERMISSION_GROUP_LIST_SELECTORS,
|
||||
PLUGINS_DETAILS_SELECTORS,
|
||||
|
|
3
cypress/elements/navigation/index.js
Normal file
3
cypress/elements/navigation/index.js
Normal file
|
@ -0,0 +1,3 @@
|
|||
import { PAGINATION } from "./pagination";
|
||||
|
||||
export { PAGINATION };
|
5
cypress/elements/navigation/pagination.js
Normal file
5
cypress/elements/navigation/pagination.js
Normal file
|
@ -0,0 +1,5 @@
|
|||
export const PAGINATION = {
|
||||
previousPagePaginationButton: "[data-test-id='button-pagination-back']",
|
||||
rowNumberButton: "[data-test-id='PaginationRowNumberSelect']",
|
||||
nextPagePaginationButton: "[data-test-id='button-pagination-next']",
|
||||
};
|
|
@ -3,6 +3,7 @@ export const SHARED_ELEMENTS = {
|
|||
progressBar: '[role="progressbar"]',
|
||||
circularProgress: '[class*="CircularProgress-circle"]',
|
||||
autocompleteCircle: '[class*="arrowInnerContainer"]',
|
||||
dataGridTable: "[data-testid='data-grid-canvas']",
|
||||
skeleton: '[data-test-id="skeleton"]',
|
||||
table: 'table[class*="Table"]',
|
||||
tableRow: '[data-test-id*="id"], [class*="MuiTableRow"]',
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
Cypress.Commands.add("getTextFromElement", element =>
|
||||
cy.get(element).invoke("text"),
|
||||
);
|
||||
Cypress.Commands.add("getRowSelectorWithNumber", rowNumber =>
|
||||
cy.get(`[data-value=${rowNumber}]`),
|
||||
);
|
||||
|
||||
Cypress.Commands.add("clearAndType", { prevSubject: true }, (subject, text) => {
|
||||
cy.wrap(subject).then(subject => {
|
||||
|
|
|
@ -1,9 +1,23 @@
|
|||
import { PAGINATION } from "../../../elements";
|
||||
import { BUTTON_SELECTORS } from "../../../elements/shared/button-selectors";
|
||||
import {
|
||||
selectorWithDataValue,
|
||||
SHARED_ELEMENTS,
|
||||
} from "../../../elements/shared/sharedElements";
|
||||
|
||||
Cypress.Commands.add("clickRowNumberButton", () =>
|
||||
cy.get(PAGINATION.rowNumberButton).click(),
|
||||
);
|
||||
Cypress.Commands.add("getRowNumberButton", () =>
|
||||
cy.get(PAGINATION.rowNumberButton),
|
||||
);
|
||||
Cypress.Commands.add("clickNextPagePaginationButton", () =>
|
||||
cy.get(PAGINATION.rowNumberButton),
|
||||
);
|
||||
Cypress.Commands.add("clickPrevPagePaginationButton", () =>
|
||||
cy.get(PAGINATION.previousPagePaginationButton),
|
||||
);
|
||||
|
||||
Cypress.Commands.add("createNewOption", (selectSelector, newOption) => {
|
||||
cy.get(selectSelector).type(newOption);
|
||||
cy.contains(BUTTON_SELECTORS.selectOption, newOption)
|
||||
|
|
|
@ -80,9 +80,7 @@ export function selectProductsOutOfStock() {
|
|||
}
|
||||
|
||||
export function selectFilterBy(filter) {
|
||||
return showFilters()
|
||||
.get(PRODUCTS_LIST.filters.filterBy[filter])
|
||||
.click();
|
||||
return showFilters().get(PRODUCTS_LIST.filters.filterBy[filter]).click();
|
||||
}
|
||||
|
||||
export function selectFilterByAttribute(attributeSlug) {
|
||||
|
@ -106,9 +104,10 @@ export function selectChannel(channelSlug) {
|
|||
}
|
||||
|
||||
export function submitFilters() {
|
||||
cy.get(BUTTON_SELECTORS.submit)
|
||||
cy.addAliasToGraphRequest("ProductList")
|
||||
.get(BUTTON_SELECTORS.submit)
|
||||
.click()
|
||||
.waitForProgressBarToNotExist()
|
||||
.waitForRequestAndCheckIfNoErrors("@ProductList")
|
||||
.get(PRODUCTS_LIST.emptyProductRow)
|
||||
.should("not.exist");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue