/
Price list
Price list
variables
API login
Test case
//1) Find PL id 112, Label = Cypress
//2) open PL and check strategy for product MB-003 (data-row-key = 112.PL) and check, that strategy is Competitor based
//3) Go to PP table, open PriceStrategy table and change 1st strategy strategy on row "Meatball" from "Competitor based" to "CostPlus"
//4) Go back to PL and recalculate our "cypress" PL
//5) Open PL and check, that strategy has been changed to "CostPlus"
//6) Go back to PP table PriceStrategy and change again row "Meatball" to previous state (from "CostPlus" to "Competitor based")
//7) Go back to LPG and recalculate our "cypress" PL
Code
const TypeID = '112.PL';//Type ID of the PL or LPG
const ID = '112';//ID of the PL or LPG
const ProductTypeID = '4845.PLI';//ypeId (hidden column) of the product
const attribute = 'attribute4';//column attribute
//Js code for LPG calculation handling - it needs to be above cypress code or in different file
cy.waitForCalculation = LPGstatus => {
cy.get(`[data-row-key="${TypeID}"]`).each(row => {
if (row.html().includes('Ready')) {
return Promise.resolve(true);
} else {
cy.get('[data-test=module-header-button-menu] > :nth-child(2)').click();
cy.waitForSpinner();
cy.waitForCalculation(LPGstatus);
}
});
};
describe('PL test', () => {
before(() => {
cy.login('demoPartition');//API login ("demoPartition" is the setting configured in file users.js)
});
beforeEach(() => {
// Configure 'X-PriceFx-Csrf-Token' and 'X-PriceFx-jwt' cookies to be preserved after each test.
Cypress.Cookies.preserveOnce('X-PriceFx-Csrf-Token', 'X-PriceFx-jwt');
// Restore the logged in status by restoring the local storage
cy.restoreLocalStorage().then(() => {
cy.waitForSpinner();
});
});
//1) Find PL id 112, Label = Cypress
//2) open PL and check strategy for product MB-003 (data-row-key = 112.PL) and check, that strategy is Competitor based
//3) Go to PP table, open PriceStrategy table and change 1st strategy strategy on row "Meatball" from "Competitor based" to "CostPlus"
//4) Go back to PL and recalculate our "cypress" PL
//5) Open PL and check, that strategy has been changed to "CostPlus"
//6) Go back to PP table PriceStrategy and change again row "Meatball" to previous state (from "CostPlus" to "Competitor based")
//7) Go back to LPG and recalculate our "cypress" PL
//1) Find PL id 112, Label = Cypress
it('PL', () => {
cy.visit('/#/pb/pl');
cy.waitForSpinner();
cy.contains('.ucTableHeaderColumnContextMenu', 'ID')
.find('[data-test="quickFilter-input"]')//click on the quick filter
.type(ID + '{enter}', { force: true });
cy.waitForSpinner();
//2) open PL and check strategy for product MB-003 (data-row-key = 112.PL) and check, that strategy is Competitor based
cy.get(`[data-row-key="${TypeID}"]`)//find row key for our PL/LPG
.contains(ID)
.click({ force: true });
cy.waitForSpinner();
cy.get(`[data-row-key="${ProductTypeID}"] [data-test-column="${attribute}"]`).should('contain', 'Competitor Based');
//3) Go to PP table, open PriceStrategy table and change 1st strategy strategy on row "Meatball" from "Competitor based" to "CostPlus"
cy.visit('/#/md/priceparameters/2366');
cy.url().should('contain', '/#/md/priceparameters/2366');
cy.waitForSpinner();
cy.get('[data-row-key="193.MLTV"]')
.contains('Competitor Based').dblclick({ force: true })
cy.contains('li', 'Cost Plus').click({ force: true });
cy.contains('tr', 'Meatball').should('contain', 'Cost Plus');
//4) Go back to PL and recalculate our "cypress" PL
cy.visit('/#/pb/pb');
cy.waitForSpinner();
cy.contains('.ucTableHeaderColumnContextMenu', 'ID')
.find('[data-test="quickFilter-input"]')//click on the quick filter
.type(ID + '{enter}', { force: true });
cy.waitForSpinner();
cy.get(`[data-row-key="${TypeID}"]`)//select
.click({ force: true });
cy.contains('button', 'Calculate')
.click({ force: true });
cy.get(`[data-row-key="${TypeID}"]`)//uncheck
.click({ force: true });
cy.waitForSpinner();
cy.waitForCalculation();
//5) Open PL and check, that strategy has been changed to "CostPlus"
cy.get(`[data-row-key="${TypeID}"]`)//find row key for our PL/LPG
.contains(ID)//find string on this row key
.click({ force: true });
cy.waitForSpinner();
cy.get(`[data-row-key="${ProductTypeID}"] [data-test-column="${attribute}"]`).should('contain', 'Cost Plus');
//6) Go back to PP table PriceStrategy and change again row "Meatball" to previous state (from "CostPlus" to "Competitor based")
cy.visit('/#/md/priceparameters/2366');
cy.url().should('contain', '/#/md/priceparameters/2366');
cy.waitForSpinner();
cy.get('[data-row-key="193.MLTV"]')
.contains('Cost Plus').dblclick({ force: true })
cy.contains('li', 'Competitor Based').click({ force: true });
cy.contains('tr', 'Meatball').should('contain', 'Competitor Based');
//7) Go back to LPG and recalculate our "cypress" PL
cy.visit('/#/pb/pl');
cy.waitForSpinner();
cy.contains('.ucTableHeaderColumnContextMenu', 'ID')
.find('[data-test="quickFilter-input"]')//click on the quick filter
.type(ID + '{enter}', { force: true });
cy.waitForSpinner();
cy.get(`[data-row-key="${TypeID}"]`)//select
.click({ force: true });
cy.contains('button', 'Calculate')
.click({ force: true });
cy.get(`[data-row-key="${TypeID}"]`)//uncheck
.click({ force: true });
cy.waitForSpinner();
cy.waitForCalculation();
});
});
Download test for LoginAPI-PL here.
Related content
Price List - Submit, Approve, and Revoke
Price List - Submit, Approve, and Revoke
More like this
Live Price Grid
Live Price Grid
More like this
API Testing with Cypress
API Testing with Cypress
More like this
Master Data Check
Master Data Check
More like this