/**
|
* @file ADSO-48500 - Navigation and Matrix performance
|
* @description Performance testing on navigation and matrix
|
* @testCategory Web app - Performance test - Matrix and chart
|
* @author Peng Hing (penghing.ng@3ds.com)
|
* @copyright Dassault Systèmes
|
*/
|
import { qCustomMatcher } from '../../e2elib/lib/src/main/qmatchers.const';
|
import { AppMP, Demo, Scenario } from '../../libmp/appmp';
|
import { DataBCCBWide, DataMetalBaseEntityName } from '../../libmp/data/data.navigation';
|
import { GanttChartAction } from '../../e2elib/lib/src/pageobjects/ganttchart/ganttchart.component';
|
import { DataMatrixProductPlanningAttributeName, DataMatrixProductPlanningRowName } from '../../libmp/data/data.supplyplanning';
|
import { ListScenarioContextMenuItem, ScenarioManager } from '../../libmp/forms/form.scenario';
|
import { DataPCSBase } from '../../libmp/datafile/data.pcs';
|
import { browser } from '../../e2elib/node_modules/protractor/built';
|
import { DataProvider } from '../../libmp/dataprovider';
|
import { UtilSOP } from '../../libappsop/utilsop';
|
|
describe('ADSO-48500 - Navigation and Matrix performance', () => {
|
const appMP = AppMP.getInstance();
|
const viewSupplyPlanning = appMP.viewSupplyPlanning;
|
const formCapacityPlanning = viewSupplyPlanning.frmCapacityPlanning;
|
const ganttChartCapacityPlanning = formCapacityPlanning.ganttChartCapacityPlanning;
|
|
const formProductPlanning = viewSupplyPlanning.frmProductPlanning;
|
const matrixProductPlanning = formProductPlanning.meProductPlanning;
|
const formNavigation = appMP.formNavigation;
|
|
const product = DataBCCBWide.name;
|
const productParent = DataBCCBWide.parents;
|
const stockingPoint = DataMetalBaseEntityName.NorthAmerica;
|
const stockingPointParent = [DataMetalBaseEntityName.QAluminum];
|
|
const matrixRowBCCBWide = DataMatrixProductPlanningRowName.BCCBWideInAsia;
|
const matrixRowLaQuinta = DataMatrixProductPlanningRowName.CPNCoilInNorthAmerica;
|
const matrixRowNorthAmerica = DataMatrixProductPlanningRowName.CPNCoilInNorthAmerica;
|
const matrixAttributeTotalDemand = DataMatrixProductPlanningAttributeName.TotalDemand;
|
const listScenario = appMP.viewScenarioAnalysisOverview.formScenario.lstScenario;
|
const ganttChartRowCasterLaQuinta = 'Caster (La Quinta)';
|
const efficiency = '1.75';
|
let dataPCS: DataPCSBase;
|
|
let isMemoryOnly = true;
|
|
beforeAll(async () => {
|
jasmine.addMatchers(qCustomMatcher);
|
await appMP.login();
|
});
|
|
afterAll(async () => {
|
await ganttChartCapacityPlanning.editRowTimeCapacity(ganttChartRowCasterLaQuinta, '1.00');
|
await appMP.resetActiveView(viewSupplyPlanning);
|
|
if (isMemoryOnly) {
|
await appMP.viewScenario.switchTo();
|
|
// Not to delete scenario with this prefix, reused for few tests
|
await appMP.viewScenario.formScenario.lstScenario.deleteAllScenarios(ScenarioManager.AllScenarios, 'ADSO-');
|
await appMP.viewScenario.formScenario.lstScenario.deleteAllScenarios(ScenarioManager.RecycleBin);
|
}
|
await formNavigation.reset();
|
await appMP.logout();
|
});
|
|
afterEach(async () => {
|
await appMP.checkToastMessage();
|
});
|
|
it(`Setup - Get data, dataset = ${browser.params.testdata.name}`, async () => {
|
dataPCS = await DataProvider.getInstance().getDataPCS();
|
isMemoryOnly = dataPCS.testData === 'MetalDemo';
|
});
|
|
it(`Setup - Create demo data / Load Dataset [${Demo.Metals}], scenario [${Scenario.Base}]`, async () => {
|
// create and load Metal base dataset
|
if (isMemoryOnly) {
|
await appMP.createDemoDataset(Demo.Metals, Scenario.Base);
|
} else {
|
await listScenario.expandFolderAndSelectMenu(dataPCS.scenarioName, ListScenarioContextMenuItem.Load);
|
await listScenario.expandFolderAndSelectMenu(dataPCS.scenarioName, ListScenarioContextMenuItem.Select);
|
await appMP.verifyActiveScenario(dataPCS.scenarioName);
|
}
|
});
|
|
it(`Setup - Open view ${viewSupplyPlanning.viewPath}`, async () => {
|
await viewSupplyPlanning.switchTo();
|
});
|
|
it(`Step 1.1 - Using the navigation panel on the left hand side, tick product [${product}] under [${UtilSOP.transformInterfaceValuesToStringArray(productParent).join(', ')}]`, async () => {
|
await formNavigation.filterByProduct({Name: product}, productParent);
|
});
|
|
it('Step 1.2 - [PCS] Matrix cell in the Product Planning form should be updated within 1 second of making a selection in the navigation panel', async () => {
|
// Verify the matrix product planning value is not empty or undefined
|
await matrixProductPlanning.verifyCellValue(matrixRowBCCBWide, matrixAttributeTotalDemand, dataPCS.dateStartA, dataPCS.cellValue1);
|
});
|
|
it(`Step 2.1 - Press the Home button on the navigation panel to reset all previous selection and tick stocking point [${stockingPoint}] under [${stockingPointParent}]`, async () => {
|
// Home button
|
await formNavigation.reset();
|
|
// Choose QAluminum -> North America
|
await formNavigation.filterByEntity(stockingPoint, stockingPointParent);
|
});
|
|
it('Step 2.2 - Scroll to column 1-Jan-2023 on the Product Planning Matrix for row "CPN coil in North America"', async () => {
|
await matrixProductPlanning.scrollToRowByRowHeader(matrixRowNorthAmerica);
|
});
|
|
it('Step 2.3 - [PCS] Elements in Capacity Planning and Product Planning forms should be filtered accordingly within 3 seconds', async () => {
|
await matrixProductPlanning.verifyCellValue(matrixRowLaQuinta, matrixAttributeTotalDemand, dataPCS.dateStartA, dataPCS.cellValue2);
|
await ganttChartCapacityPlanning.verifyGanttChartHasValue(ganttChartRowCasterLaQuinta, dataPCS.dateStartA, dataPCS.dateEndA);
|
});
|
|
it('Step 3.1 - Click in the matrix on Product Planning form, press the right arrow key until until a previously unseen cell is loaded', async () => {
|
await matrixProductPlanning.navigateToColumnAppear(dataPCS.dateStartB, true);
|
});
|
|
it('Step 3.2 - [PCS] Matrix values should be updated within 1 seconds of becoming visible', async () => {
|
await matrixProductPlanning.verifyCellValue(matrixRowNorthAmerica, matrixAttributeTotalDemand, dataPCS.dateStartB, dataPCS.cellValue3);
|
});
|
|
it('Step 4.1 - Click on the Capacity Planning form, move the gantt chart to right with action bar button until a previously unseen cell is loaded', async () => {
|
await ganttChartCapacityPlanning.actions(GanttChartAction.MoveRight);
|
});
|
|
it('Step 4.2 - [PCS] Gantt chart values should be updated within 1 seconds of becoming visible', async () => {
|
await ganttChartCapacityPlanning.verifyGanttChartHasValue(ganttChartRowCasterLaQuinta, dataPCS.dateStartB, dataPCS.dateEndB);
|
});
|
|
it(`Step 5.1 - On the Capacity Planning form, right click on [${ganttChartRowCasterLaQuinta}] and select edit. Change efficiency = [${efficiency}] and save changes`, async () => {
|
await ganttChartCapacityPlanning.editRowTimeCapacity(ganttChartRowCasterLaQuinta, efficiency);
|
});
|
|
it('Step 5.2 - [PCS] Verify that the whole row updated within 3 seconds to show the new utilization percentages', async () => {
|
await ganttChartCapacityPlanning.verifyGanttChartValue(ganttChartRowCasterLaQuinta, dataPCS.dateStartB, dataPCS.dateEndB, dataPCS.gcNodeValueAfterIncreaseEfficiency);
|
});
|
});
|