Add no UI login

This commit is contained in:
Michalina Graczyk 2020-08-25 16:15:39 +02:00
parent 6a72fae494
commit 2a63f9d85c
6 changed files with 59 additions and 34 deletions

View file

@ -1,8 +1,5 @@
{
"baseUrl": "http://localhost:9000",
"env": {
"API_URI": "https://pwa.demo.saleor.rocks/graphql/"
},
"defaultCommandTimeout": 15000,
"requestTimeout": 15000,
"viewportWidth": 1400,

View file

@ -1,16 +1,4 @@
/* eslint-disable sort-keys */
export const LEFT_MENU_SELECTORS = {
catalog: "[data-testid='catalog']",
PRODUCTS_SELECTORS: {
products: "[data-testid='catalogue']",
createProductBtn: "[data-test='add-product']",
productNameInput: "[name='name']",
productTypeInput: "data-test='product-type'",
categoryInput: "[data-test='category']",
categoryDropdown: "[data-test='singleautocomplete-select-option']",
visibleRadioBtn: "[name='isPublished']",
saveBtn: "[data-test='button-bar-confirm']",
confirmationMsg: "[data-test='notification']"
}
catalog: "[data-testid='catalogue']"
};

View file

@ -0,0 +1,13 @@
/* eslint-disable sort-keys */
export const PRODUCTS_SELECTORS = {
products: "[href='/dashboard/products?']",
createProductBtn: "[data-test='add-product']",
productNameInput: "[name='name']",
productTypeInput: "[data-test='product-type']",
categoryInput: "[data-test='category']",
categoryItem: "[data-test='singleautocomplete-select-option']",
firstCategoryItem: "#downshift-0-item-0",
visibleRadioBtn: "[name='isPublished']",
saveBtn: "[data-test='button-bar-confirm']",
confirmationMsg: "[data-test='notification']"
};

View file

@ -1,37 +1,43 @@
import { LEFT_MENU_SELECTORS } from "../elements/account/left-menu/left-menu-selectors";
import { LOGIN_SELECTORS } from "../elements/account/login-selectors";
import { PRODUCTS_SELECTORS } from "../elements/catalog/product-selectors";
// <reference types="cypress" />
describe("Products", () => {
beforeEach(() => {
cy.clearSessionData();
cy.visit("/");
cy.loginUser();
cy.clearSessionData().loginUserViaRequest();
});
it("should add new visible product", () => {
cy.get(LEFT_MENU_SELECTORS.catalog)
cy.visit("/")
.get(LEFT_MENU_SELECTORS.catalog)
.click()
.get(LEFT_MENU_SELECTORS.PRODUCTS_SELECTORS.products)
.get(PRODUCTS_SELECTORS.products)
.click()
.get(LEFT_MENU_SELECTORS.PRODUCTS_SELECTORS.createProductBtn)
.get(PRODUCTS_SELECTORS.createProductBtn)
.click()
.get(LEFT_MENU_SELECTORS.PRODUCTS_SELECTORS.productNameInput)
.get(PRODUCTS_SELECTORS.productNameInput)
.click()
.type("Visible test product")
.get(LEFT_MENU_SELECTORS.PRODUCTS_SELECTORS.productTypeInput)
.get(PRODUCTS_SELECTORS.productTypeInput)
.click()
.type("Cushion{'enter'}")
.get(LEFT_MENU_SELECTORS.PRODUCTS_SELECTORS.categoryInput)
.type("Cushion")
.get(PRODUCTS_SELECTORS.categoryItem)
.should("have.length", 1)
.get(PRODUCTS_SELECTORS.firstCategoryItem)
.click()
.get(LEFT_MENU_SELECTORS.PRODUCTS_SELECTORS.categoryDropdown)
.get(PRODUCTS_SELECTORS.categoryInput)
.click()
.get(PRODUCTS_SELECTORS.categoryItem)
.first()
.click()
.get(LEFT_MENU_SELECTORS.PRODUCTS_SELECTORS.visibleRadioBtn)
.get(PRODUCTS_SELECTORS.visibleRadioBtn)
.first()
.click()
.get(LEFT_MENU_SELECTORS.PRODUCTS_SELECTORS.saveBtn)
.get(PRODUCTS_SELECTORS.saveBtn)
.click()
.get(LEFT_MENU_SELECTORS.PRODUCTS_SELECTORS.confirmationMsg)
.contains("Product save");
.get(PRODUCTS_SELECTORS.confirmationMsg, {
timeout: 1000
})
.contains("Product created");
});
});

View file

@ -16,6 +16,7 @@
* @type {Cypress.PluginConfig}
*/
module.exports = (on, config) => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
config.env.API_URI = process.env.API_URI;
return config;
};

View file

@ -9,3 +9,23 @@ Cypress.Commands.add("loginUser", () =>
.get(LOGIN_SELECTORS.signInButton)
.click()
);
Cypress.Commands.add("loginUserViaRequest", () =>
cy
.request({
method: "POST",
url: Cypress.env("API_URI"),
body: {
operationName: "TokenAuth",
variables: {
email: Cypress.env("USER_NAME"),
password: Cypress.env("USER_PASSWORD")
},
query:
"mutation TokenAuth($email: String!, $password: String!) {\n tokenCreate(email: $email, password: $password) {\n token\n errors: accountErrors {\n code\n field\n message\n __typename\n }\n user {\n id\n __typename\n }\n __typename\n }\n}\n"
}
})
.then(resp => {
window.sessionStorage.setItem("auth", resp.body.data.tokenCreate.token);
})
);