From 46b51c61f42bb4661ec389a3f3544f494b3ef014 Mon Sep 17 00:00:00 2001 From: Tomasz Golabek Date: Thu, 27 Feb 2020 11:22:01 +0100 Subject: PM_Dictionary Support in GAB UI Sanity for PM Dictionary events in GAB: * added dedicated test for PM_Dictionary * fixed legacy keywords for VES_Event test * Moved GAB tests to separate suite Change-Id: I8b033b3f14b5b18e74bd6c566d5c269e4a94001a Issue-ID: SDC-2095 Signed-off-by: Tomasz Golabek --- .../files/default/Files/PNFs/pmDictionary.yml | 98 +++++++ .../files/default/Files/VNFs/vesEvent.yml | 282 +++++++++++++++++++++ .../default/Files/fm_metadata_three_fault_defs.yml | 282 --------------------- .../sdc/ci/tests/datatypes/DataTestIdEnum.java | 6 +- .../openecomp/sdc/ci/tests/execute/sanity/GAB.java | 123 +++++++++ .../openecomp/sdc/ci/tests/execute/sanity/Vf.java | 28 -- .../sdc/ci/tests/pages/UploadArtifactPopup.java | 18 +- .../sdc/ci/tests/utilities/ArtifactUIUtils.java | 4 +- .../src/main/resources/ci/testSuites/gabSanity.xml | 13 + .../main/resources/ci/testSuites/onapUiSanity.xml | 1 + 10 files changed, 539 insertions(+), 316 deletions(-) create mode 100644 test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/Files/PNFs/pmDictionary.yml create mode 100644 test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/Files/VNFs/vesEvent.yml delete mode 100644 test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/Files/fm_metadata_three_fault_defs.yml create mode 100644 ui-ci/src/main/java/org/openecomp/sdc/ci/tests/execute/sanity/GAB.java create mode 100644 ui-ci/src/main/resources/ci/testSuites/gabSanity.xml diff --git a/test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/Files/PNFs/pmDictionary.yml b/test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/Files/PNFs/pmDictionary.yml new file mode 100644 index 0000000000..fa3ed531e7 --- /dev/null +++ b/test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/Files/PNFs/pmDictionary.yml @@ -0,0 +1,98 @@ +--- +# PM Dictionary Schema +pmMetaData: { presence: required, structure: { + pmHeader: { presence: required, structure: { + pmDefVsn: { presence: required, comment: “Version of the PM Dictionary artifact that contains this measurement. Vendor defined.”}, + pmDefSchemaVsn: { presence: required, comment: “PM Dictionary schema version from the VES Event Registration specification.”}, + nfType: { presence: required, comment: “NF type to whom this measurement applies. This should match the nfName-vendor string used in the fileReady or perf3gpp eventName.”} + } } , + pmFields: { presence: required, structure: { + measType: { presence: required, comment: “Measurement name used in PM file, in 3GPP format where specified, else vendor defined. Names for 3GPP-defined 4G measurements are specified in 3GPP TS 32.425 item e). Names for 3GPP-defined 5G measurements are specified in 3GPP TS 28.552 item e). Vendor defined names are preceded with VS.”}, + iMeasType: { presence: required, comment: “Vendor defined integer identifier for the measType, used for efficiency in GPB. Must be combined with measInfoId to identify a specific measurement.”}, + measDescription: { presence: required, comment: “Text description of the purpose of the measurement, what information does the measurement provide.”}, + measCondition: { presence: required, comment: “Text description of the condition that causes the measurement to be updated.”}, + measResultType: { presence: required, value: [integer], comment: “Data type of the measurement result.”}, + measResultRange: { presence: optional, comment: “Range of the measurement result. Only necessary when the range is smaller than the full range of the data type.”}, + measResultUnits: { presence: required, value: [seconds, minutes, nanoseconds, microseconds, dB, number, kilobytes, bytes, ethernetFrames, packets, users], comment: “Units of measure of the measurement result.”}, + measObjClass: { presence: required, comment: “Object class of the measurement.”}, + measCollectionMethod: { presence: required, value: [CC, SI, DER, Gauge, Average], comment: “Measurement collection method of the measurement. CC, SI, DER and Gauge are as defined in 3GPP. Average contains the average value of the measurement during the granularity period.”}, + measLastChange: { presence: required, comment: “Version of the PM Dictionary artifact the last time this measurement was added, modified or deleted.”}, + measChangeType: { presence: required, value: [added, modified, deleted], comment: “Indicates the type of change that occurred during the measLastChange.”}, + measInfoId: { presence: required, comment: “Name for a group of related measurements, in 3GPP format where specified, else vendor defined. Family names for 3GPP-defined 4G measurements are specified in 3GPP TS 32.425 Section 3.1. Family names for 3GPP-defined 5G measurements are specified in 3GPP TS 28.552 Section 3.4.”}, + iMeasInfoId: { presence: required, comment: “Vendor defined integer identifier for the measInfoId, used for efficiency in GPB.”}, + measFamily: { presence: required, comment: “Abbreviation for a family of measurements, in 3GPP format where specified, else vendor defined.”}, + measAdditionalFields: { presence: required, comment: “This section contains vendor specific measurement fields.”, structure: { + measAggregationLevels: { presence: required, value: [NRBTS, NRCellCU, NRCellDU, IPNO, IPSEC, ETHIF], comment: “A list of one or more aggregations levels that Nokia recommends for this measurement. For example, if the value is NRBTS NRCellCU, then Nokia recommends that this measurement be aggregated on the 5G BTS level and the 5G CU Cell level.”}, + measTriggerType: { presence: optional, value: [Event, Sample], comment: “Indicates whether this measurement is triggered by an event or is sampled.”} + } } + } } +} } +--- +pmMetaData: + pmHeader: + nfType: gnb-Nokia + pmDefSchemaVsn: 2.0 + pmDefVsn: 5G19_1906_002 + pmFields: + iMeasInfoId: 2204 + iMeasType: 1 + measCollectionMethod: CC + measCondition: "This measurement is updated when X2AP: SgNB Modification Required message is sent to MeNB with the SCG Change Indication set as PSCellChange." + measDescription: "This counter indicates the number of intra gNB intra frequency PSCell change attempts." + measFamily: NINFC + measInfoId: "NR Intra Frequency PSCell Change" + measLastChange: 5G18A_1807_003 + measObjClass: NGCELL + measResultRange: 0-4096 + measResultType: integer + measResultUnits: number + measType: VS.NINFC.IntraFrPscelChAttempt + measAdditionalFields: + vendorField1: X + vendorField2: B +--- +pmMetaData: + pmHeader: + nfType: gnb-Nokia + pmDefSchemaVsn: 2.0 + pmDefVsn: 5G19_1906_002 + pmFields: + iMeasInfoId: 2204 + iMeasType: 2 + measCollectionMethod: CC + measCondition: "This measurement is updated when the TDCoverall timer has elapsed before gNB receives the X2AP: SgNB Modification Confirm message." + measDescription: "This measurement the number of intra gNB intra frequency PSCell change failures due to TDCoverall timer expiry." + measFamily: NINFC + measInfoId: "NR Intra Frequency PSCell Change" + measLastChange: 5G18A_1807_003 + measObjClass: NGCELL + measResultRange: 0-4096 + measResultType: integer + measResultUnits: number + measType: VS.NINFC.IntraFrPscelChFailTdcExp + measAdditionalFields: + vendorField1: Y +--- +pmMetaData: + pmHeader: + nfType: gnb-Nokia + pmDefSchemaVsn: 2.0 + pmDefVsn: 5G19_1906_002 + pmFields: + iMeasInfoId: 2206 + iMeasType: 1 + measCollectionMethod: CC + measCondition: "This measurement is updated when MeNB replies to X2AP: SgNB Modification Required message with the X2AP: SgNB Modification Refuse message." + measDescription: "This counter indicates the number of intra gNB intra frequency PSCell change failures due to MeNB refusal." + measFamily: NINFC + measInfoId: "NR Intra Frequency PSCell Change" + measLastChange: 5G19_1906_002 + measObjClass: NGCELL + measResultRange: 0-4096 + measResultType: integer + measResultUnits: number + measType: VS.NINFC.IntraFrPscelChFailMenbRef + measAdditionalFields: + vendorField1: Z + vendorField2: A +... diff --git a/test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/Files/VNFs/vesEvent.yml b/test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/Files/VNFs/vesEvent.yml new file mode 100644 index 0000000000..ce6a152154 --- /dev/null +++ b/test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/Files/VNFs/vesEvent.yml @@ -0,0 +1,282 @@ +--- +event: { + presence: required, + action: [ any, any, baseStationSynchronizationProblem, + contact technical support ], + structure: { + commonEventHeader: { + presence: required, + structure: { + domain: { + presence: required, + value: fault + }, + eventName: { + presence: required, + value: 'Fault_1' + }, + eventId: { + presence: required + }, + nfNamingCode: { + value: mrfx + }, + priority: { + presence: required, + value: 'Medium' + }, + reportingEntityId: { + presence: required + }, + reportingEntityName: { + presence: required + }, + sequence: { + presence: required + }, + sourceId: { + presence: required + }, + sourceName: { + presence: required + }, + startEpochMicrosec: { + presence: required + }, + lastEpochMicrosec: { + presence: required + }, + version: { + presence: required, + value: 3.0 + } + } + }, + faultFields: { + presence: required, + structure: { + eventCategory: { + presence: optional, + comment: 'Equipment Alarm' + }, + alarmCondition: { + presence: required, + value: alarm003 + }, + eventSeverity: { + presence: required, + value: MAJOR + }, + eventSourceType: { + presence: required, + value: virtualNetworkFunction + }, + faultFieldsVersion: { + presence: required, + value: 2.0 + }, + specificProblem: { + presence: required, + value: "Configuration file was corrupt or not present" + }, + vfStatus: { + presence: required, + value: "Requesting Termination" + }, + alarmAdditionalInformation: { + required: true, + comment: "Comment" + } + } + } + }, + comment: "comment2" +} + +--- + +event: { + presence: required, + action: [ any, any, baseStationConnectivityLost, + contact technical support ], + structure: { + commonEventHeader: { + presence: required, + structure: { + domain: { + presence: required, + value: fault + }, + eventName: { + presence: required, + value: 'Fault_2' + }, + eventId: { + presence: required + }, + nfNamingCode: { + value: mrfx + }, + priority: { + presence: required, + value: 'Medium' + }, + reportingEntityId: { + presence: required + }, + reportingEntityName: { + presence: required + }, + sequence: { + presence: required + }, + sourceId: { + presence: required + }, + sourceName: { + presence: required + }, + startEpochMicrosec: { + presence: required + }, + lastEpochMicrosec: { + presence: required + }, + version: { + presence: required, + value: 3.0 + } + } + }, + faultFields: { + presence: required, + structure: { + eventCategory: { + presence: optional, + comment: 'Communications Alarm' + }, + alarmCondition: { + presence: required, + value: 'baseStationConnectivityLost' + }, + eventSeverity: { + presence: required + }, + eventSourceType: { + presence: required, + value: 'virtualNetworkFunction' + }, + faultFieldsVersion: { + presence: required, + value: 2.0 + }, + specificProblem: { + presence: required + }, + vfStatus: { + presence: required, + value: "Active" + }, + alarmAdditionalInformation: { + required: true, + comment: "comment' + " + } + } + } + }, + comment: "comment2 + ", +} + +--- +event: { + presence: required, + action: [ any, any, baseStationSoftwareManagementProblem, + contact technical support ], + structure: { + commonEventHeader: { + presence: required, + structure: { + domain: { + presence: required, + value: fault + }, + eventName: { + presence: required, + value: 'Fault_3' + }, + eventId: { + presence: required + }, + nfNamingCode: { + value: mrfx + }, + priority: { + presence: required, + value: 'Medium' + }, + reportingEntityId: { + presence: required + }, + reportingEntityName: { + presence: required + }, + sequence: { + presence: required + }, + sourceId: { + presence: required + }, + sourceName: { + presence: required + }, + startEpochMicrosec: { + presence: required + }, + lastEpochMicrosec: { + presence: required + }, + version: { + presence: required, + value: 3.0 + } + } + }, + faultFields: { + presence: required, + structure: { + eventCategory: { + presence: optional, + comment: 'Processing Error' + }, + alarmCondition: { + presence: required, + value: 'baseStationsoftwareManagementProblem' + }, + eventSeverity: { + presence: required + }, + eventSourceType: { + presence: required + }, + faultFieldsVersion: { + presence: required, + value: 3.0 + }, + specificProblem: { + presence: required + }, + vfStatus: { + presence: required, + value: "Active" + }, + alarmAdditionalInformation: { + required: true, + comment: "comment" + } + } + } + }, + comment: "comment2" +} \ No newline at end of file diff --git a/test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/Files/fm_metadata_three_fault_defs.yml b/test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/Files/fm_metadata_three_fault_defs.yml deleted file mode 100644 index ce6a152154..0000000000 --- a/test-apis-ci/sdc-api-tests/chef-repo/cookbooks/sdc-api-tests/files/default/Files/fm_metadata_three_fault_defs.yml +++ /dev/null @@ -1,282 +0,0 @@ ---- -event: { - presence: required, - action: [ any, any, baseStationSynchronizationProblem, - contact technical support ], - structure: { - commonEventHeader: { - presence: required, - structure: { - domain: { - presence: required, - value: fault - }, - eventName: { - presence: required, - value: 'Fault_1' - }, - eventId: { - presence: required - }, - nfNamingCode: { - value: mrfx - }, - priority: { - presence: required, - value: 'Medium' - }, - reportingEntityId: { - presence: required - }, - reportingEntityName: { - presence: required - }, - sequence: { - presence: required - }, - sourceId: { - presence: required - }, - sourceName: { - presence: required - }, - startEpochMicrosec: { - presence: required - }, - lastEpochMicrosec: { - presence: required - }, - version: { - presence: required, - value: 3.0 - } - } - }, - faultFields: { - presence: required, - structure: { - eventCategory: { - presence: optional, - comment: 'Equipment Alarm' - }, - alarmCondition: { - presence: required, - value: alarm003 - }, - eventSeverity: { - presence: required, - value: MAJOR - }, - eventSourceType: { - presence: required, - value: virtualNetworkFunction - }, - faultFieldsVersion: { - presence: required, - value: 2.0 - }, - specificProblem: { - presence: required, - value: "Configuration file was corrupt or not present" - }, - vfStatus: { - presence: required, - value: "Requesting Termination" - }, - alarmAdditionalInformation: { - required: true, - comment: "Comment" - } - } - } - }, - comment: "comment2" -} - ---- - -event: { - presence: required, - action: [ any, any, baseStationConnectivityLost, - contact technical support ], - structure: { - commonEventHeader: { - presence: required, - structure: { - domain: { - presence: required, - value: fault - }, - eventName: { - presence: required, - value: 'Fault_2' - }, - eventId: { - presence: required - }, - nfNamingCode: { - value: mrfx - }, - priority: { - presence: required, - value: 'Medium' - }, - reportingEntityId: { - presence: required - }, - reportingEntityName: { - presence: required - }, - sequence: { - presence: required - }, - sourceId: { - presence: required - }, - sourceName: { - presence: required - }, - startEpochMicrosec: { - presence: required - }, - lastEpochMicrosec: { - presence: required - }, - version: { - presence: required, - value: 3.0 - } - } - }, - faultFields: { - presence: required, - structure: { - eventCategory: { - presence: optional, - comment: 'Communications Alarm' - }, - alarmCondition: { - presence: required, - value: 'baseStationConnectivityLost' - }, - eventSeverity: { - presence: required - }, - eventSourceType: { - presence: required, - value: 'virtualNetworkFunction' - }, - faultFieldsVersion: { - presence: required, - value: 2.0 - }, - specificProblem: { - presence: required - }, - vfStatus: { - presence: required, - value: "Active" - }, - alarmAdditionalInformation: { - required: true, - comment: "comment' - " - } - } - } - }, - comment: "comment2 - ", -} - ---- -event: { - presence: required, - action: [ any, any, baseStationSoftwareManagementProblem, - contact technical support ], - structure: { - commonEventHeader: { - presence: required, - structure: { - domain: { - presence: required, - value: fault - }, - eventName: { - presence: required, - value: 'Fault_3' - }, - eventId: { - presence: required - }, - nfNamingCode: { - value: mrfx - }, - priority: { - presence: required, - value: 'Medium' - }, - reportingEntityId: { - presence: required - }, - reportingEntityName: { - presence: required - }, - sequence: { - presence: required - }, - sourceId: { - presence: required - }, - sourceName: { - presence: required - }, - startEpochMicrosec: { - presence: required - }, - lastEpochMicrosec: { - presence: required - }, - version: { - presence: required, - value: 3.0 - } - } - }, - faultFields: { - presence: required, - structure: { - eventCategory: { - presence: optional, - comment: 'Processing Error' - }, - alarmCondition: { - presence: required, - value: 'baseStationsoftwareManagementProblem' - }, - eventSeverity: { - presence: required - }, - eventSourceType: { - presence: required - }, - faultFieldsVersion: { - presence: required, - value: 3.0 - }, - specificProblem: { - presence: required - }, - vfStatus: { - presence: required, - value: "Active" - }, - alarmAdditionalInformation: { - required: true, - comment: "comment" - } - } - } - }, - comment: "comment2" -} \ No newline at end of file diff --git a/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/datatypes/DataTestIdEnum.java b/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/datatypes/DataTestIdEnum.java index 7a8bcd3aba..0046489a7d 100644 --- a/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/datatypes/DataTestIdEnum.java +++ b/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/datatypes/DataTestIdEnum.java @@ -112,6 +112,7 @@ public final class DataTestIdEnum { UPGRADE_SERVICES_OK("upgradeVspModal-button-upgrade"), UPDATE_SERVICES_OK("upgradeVspModal-button-update"), UPGRADE_SERVICES_CLOSE("upgradeVspModal-button-close"), + UPGRADE_ARTIFACT_BUTTON("upgradeVspModal-button-done"), ACCEPT_TESTING_MESSAGE("checkindialog"); private final String value; @@ -203,7 +204,7 @@ public final class DataTestIdEnum { @AllArgsConstructor @Getter public enum ArtifactPageEnum { - ADD_DEPLOYMENT_ARTIFACT("add-deployment-artifact-button"), + ADD_DEPLOYMENT_ARTIFACT("add_artifact_btn"), ADD_INFORMATIONAL_ARTIFACT("add-information-artifact-button"), DOWNLOAD_ARTIFACT_ENV("download_env_"), ADD_ANOTHER_ARTIFACT("add-another-artifact-button"), @@ -396,11 +397,12 @@ public final class DataTestIdEnum { @AllArgsConstructor @Getter public enum ArtifactPopup { - BROWSE("browseButton"), + FILE_UNDEFINED("fileundefined"), ARTIFACT_DESCRIPTION("description"), ARTIFACT_LABEL("artifactLabel"), ARTIFACT_TYPE("artifacttype"), + ARTIFACT_TYPE_ICON("artifacttype-icon"), OK("OK"), SAVE("Save"), DONE_BUTTON("Done"), diff --git a/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/execute/sanity/GAB.java b/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/execute/sanity/GAB.java new file mode 100644 index 0000000000..348400e32e --- /dev/null +++ b/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/execute/sanity/GAB.java @@ -0,0 +1,123 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2020 Nokia Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.ci.tests.execute.sanity; + +import com.aventstack.extentreports.Status; +import java.util.Collections; +import java.util.List; +import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum; +import org.openecomp.sdc.ci.tests.datatypes.ArtifactInfo; +import org.openecomp.sdc.ci.tests.datatypes.DataTestIdEnum; +import org.openecomp.sdc.ci.tests.datatypes.ResourceReqDetails; +import org.openecomp.sdc.ci.tests.datatypes.enums.UserRoleEnum; +import org.openecomp.sdc.ci.tests.execute.setup.SetupCDTest; +import org.openecomp.sdc.ci.tests.pages.DeploymentArtifactPage; +import org.openecomp.sdc.ci.tests.pages.ResourceGeneralPage; +import org.openecomp.sdc.ci.tests.utilities.ArtifactUIUtils; +import org.openecomp.sdc.ci.tests.utilities.FileHandling; +import org.openecomp.sdc.ci.tests.utilities.GeneralUIUtils; +import org.openecomp.sdc.ci.tests.utilities.ResourceUIUtils; +import org.openecomp.sdc.ci.tests.utils.general.ElementFactory; +import org.openqa.selenium.WebElement; +import org.testng.AssertJUnit; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +public class GAB extends SetupCDTest { + + private static final int THREAD_SLEEP_TIME = 1000; + private static final int MAIN_PAGE_ROWS_SIZE = 2; + private static final int MAIN_PAGE_COLUMN_SIZE = 5; + + private String pnfFilePath; + private String vnfFilePath; + + @BeforeClass + public void beforeClass() { + pnfFilePath = FileHandling.getFilePath("PNFs"); + vnfFilePath = FileHandling.getFilePath("VNFs"); + } + + @Test + public void addPmDictionaryDeploymentArtifactToPnfAndCheckMagnifierTest() throws Exception { + final int expectedHeaderSize = MAIN_PAGE_COLUMN_SIZE + 10; + final int expectedRowSize = MAIN_PAGE_ROWS_SIZE + 3; + ResourceReqDetails pnfMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.PNF, getUser()); + ResourceUIUtils.createPNF(pnfMetaData, getUser()); + ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen(); + ArtifactInfo art1 = new ArtifactInfo(pnfFilePath, "pmDictionary.yml", "desc", "artifactpm", "PM_DICTIONARY"); + addArtifactAndOpenGAB(art1); + assertHeaderAndRowSize(expectedHeaderSize, expectedRowSize); + } + + @Test + public void addVesEventsDeploymentArtifactToVfAndCheckMagnifierTest() throws Exception { + final int expectedHeaderSize = MAIN_PAGE_COLUMN_SIZE + 4; + final int expectedRowSize = MAIN_PAGE_ROWS_SIZE + 3; + ResourceReqDetails vfMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, getUser()); + ResourceUIUtils.createVF(vfMetaData, getUser()); + ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen(); + ArtifactInfo art1 = new ArtifactInfo(vnfFilePath, "vesEvent.yml", "desc", "artifactfault", "VES_EVENTS"); + addArtifactAndOpenGAB(art1); + assertHeaderAndRowSize(expectedHeaderSize, expectedRowSize); + } + + private void addArtifactAndOpenGAB(ArtifactInfo art1) throws Exception { + addNewArtifact(Collections.singletonList(art1)); + openGABPopup(art1); + } + + private void assertHeaderAndRowSize(int expectedHeaderSize, int expectedRowSize) { + List headers = getListOfHeaders(); + AssertJUnit.assertEquals(expectedHeaderSize, headers.size()); + List rows = GeneralUIUtils.getWebElementsListByContainsClassName("datatable-body-row"); + AssertJUnit.assertEquals(expectedRowSize, rows.size()); + } + + private void openGABPopup(ArtifactInfo art1) throws InterruptedException { + SetupCDTest.getExtendTest() + .log(Status.INFO, String.format("Clicking on magnifier button %s", art1.getArtifactLabel())); + WebElement magnifierButtonElement = GeneralUIUtils.getWebElementByTestID( + DataTestIdEnum.ArtifactPageEnum.BROWSE_ARTIFACT.getValue() + art1.getArtifactLabel()); + SetupCDTest.getExtendTest() + .log(Status.INFO, String.format("Found magnifier button: %s", magnifierButtonElement.getText())); + magnifierButtonElement.click(); + Thread.sleep(THREAD_SLEEP_TIME); // have to wait until table will be rendered + } + + private List getListOfHeaders() { + return GeneralUIUtils.getWebElementsListByClassName("datatable-header-cell"); + } + + private void addNewArtifact(List deploymentArtifactList) throws Exception { + for (ArtifactInfo deploymentArtifact : deploymentArtifactList) { + DeploymentArtifactPage.clickAddNewArtifact(); + ArtifactUIUtils.fillAndAddNewArtifactParameters(deploymentArtifact); + } + AssertJUnit.assertTrue(DeploymentArtifactPage.checkElementsCountInTable(deploymentArtifactList.size())); + } + + @Override + protected UserRoleEnum getRole() { + return UserRoleEnum.DESIGNER; + } + +} diff --git a/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/execute/sanity/Vf.java b/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/execute/sanity/Vf.java index 51f78f9eb3..1bbebd3d66 100644 --- a/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/execute/sanity/Vf.java +++ b/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/execute/sanity/Vf.java @@ -510,34 +510,6 @@ public class Vf extends SetupCDTest { } - @Test - public void addVesEventsDeploymentArtifactToVfAndCheckMagnifierTest() throws Exception { - final int expectedHeaderAndRowSize = 3; - ResourceReqDetails vfMetaData = ElementFactory.getDefaultResourceByType(ResourceTypeEnum.VF, getUser()); - ResourceUIUtils.createVF(vfMetaData, getUser()); - - ResourceGeneralPage.getLeftMenu().moveToDeploymentArtifactScreen(); - - List deploymentArtifactList = new ArrayList<>(); - ArtifactInfo art1 = new ArtifactInfo(filePath, "fm_metadata_three_fault_defs.yml", "desc", "artifactfault", "VES_EVENTS"); - deploymentArtifactList.add(art1); - for (ArtifactInfo deploymentArtifact : deploymentArtifactList) { - DeploymentArtifactPage.clickAddNewArtifact(); - ArtifactUIUtils.fillAndAddNewArtifactParameters(deploymentArtifact); - } - AssertJUnit.assertTrue(DeploymentArtifactPage.checkElementsCountInTable(deploymentArtifactList.size())); - - SetupCDTest.getExtendTest().log(Status.INFO, String.format("Clicking on magnifier button %s", art1.getArtifactLabel())); - WebElement magnifierButtonElement = GeneralUIUtils.getWebElementByTestID(ArtifactPageEnum.BROWSE_ARTIFACT.getValue() + art1.getArtifactLabel()); - SetupCDTest.getExtendTest().log(Status.INFO, String.format("Found magnifier button: %s", magnifierButtonElement.getText())); - magnifierButtonElement.click(); - List headers = GeneralUIUtils.getWebElementsListByClassName("datatable-header-cell"); - AssertJUnit.assertEquals(expectedHeaderAndRowSize, headers.size()); - headers.get(0).getText(); - List rows = GeneralUIUtils.getWebElementsListByContainsClassName("datatable-body-row"); - AssertJUnit.assertEquals(expectedHeaderAndRowSize, rows.size()); - } - private void takeScreenshot(final String screenshotName, final String errorMsg) { try { ExtentTestActions.addScreenshot(Status.ERROR, screenshotName, errorMsg); diff --git a/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/pages/UploadArtifactPopup.java b/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/pages/UploadArtifactPopup.java index d8007c013b..586f02c0f9 100644 --- a/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/pages/UploadArtifactPopup.java +++ b/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/pages/UploadArtifactPopup.java @@ -54,6 +54,13 @@ public class UploadArtifactPopup { GeneralUIUtils.ultimateWait(); } + public void loadUndefinedFile(String path, String filename) { + final WebElement browseWebElement = GeneralUIUtils.getInputElement(DataTestIdEnum.ArtifactPopup.FILE_UNDEFINED.getValue()); + SetupCDTest.getExtendTest().log(Status.INFO, String.format("Uploading file: %s", path + File.separator + filename)); + browseWebElement.sendKeys(path + File.separator + filename); + GeneralUIUtils.ultimateWait(); + } + public void insertDescription(String artifactDescriptoin) { SetupCDTest.getExtendTest().log(Status.INFO, String.format("Changing artifact description to: %s", artifactDescriptoin)); @@ -76,8 +83,9 @@ public class UploadArtifactPopup { return selectList; } - public Select selectArtifactType(String artifactType) { - return GeneralUIUtils.getSelectList(artifactType, DataTestIdEnum.ArtifactPopup.ARTIFACT_TYPE.getValue()); + public void selectArtifactType(String artifactType) { + GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.ArtifactPopup.ARTIFACT_TYPE_ICON.getValue()); + GeneralUIUtils.clickOnElementByTestId(artifactType); } public void clickDoneButton() throws Exception { @@ -86,6 +94,12 @@ public class UploadArtifactPopup { GeneralUIUtils.waitForElementInVisibilityBy(By.className("sdc-add-artifact"), WAITING_FOR_ELEMENT_TIME_OUT); } + public void clickUpgradeArtifactsButton() throws Exception { + GeneralUIUtils.clickOnElementByTestId(DataTestIdEnum.ModalItems.UPGRADE_ARTIFACT_BUTTON.getValue()); + GeneralUIUtils.waitForLoader(); + GeneralUIUtils.waitForElementInVisibilityBy(By.className("sdc-add-artifact"), WAITING_FOR_ELEMENT_TIME_OUT); + } + public void clickCancelButton() throws Exception { GeneralUIUtils.getWebElementByTestID(DataTestIdEnum.ArtifactPopup.CANCEL_BUTTON.getValue()).click(); GeneralUIUtils.waitForLoader(); diff --git a/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/utilities/ArtifactUIUtils.java b/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/utilities/ArtifactUIUtils.java index 61a648cbfe..d85e17fa3f 100644 --- a/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/utilities/ArtifactUIUtils.java +++ b/ui-ci/src/main/java/org/openecomp/sdc/ci/tests/utilities/ArtifactUIUtils.java @@ -58,8 +58,8 @@ public final class ArtifactUIUtils { artifactPopup.defineArtifactLabel(artifactInfo.getArtifactLabel()); artifactPopup.selectArtifactType(artifactInfo.getArtifactType()); artifactPopup.insertDescription(artifactInfo.getDescription()); - artifactPopup.loadFile(artifactInfo.getFilepath(), artifactInfo.getFilename()); - artifactPopup.clickDoneButton(); + artifactPopup.loadUndefinedFile(artifactInfo.getFilepath(), artifactInfo.getFilename()); + artifactPopup.clickUpgradeArtifactsButton(); SetupCDTest.getExtendTest().log(Status.INFO, String.format("A new artifact of type %s was added", artifactInfo.getArtifactType())); } diff --git a/ui-ci/src/main/resources/ci/testSuites/gabSanity.xml b/ui-ci/src/main/resources/ci/testSuites/gabSanity.xml new file mode 100644 index 0000000000..035bf695ea --- /dev/null +++ b/ui-ci/src/main/resources/ci/testSuites/gabSanity.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + diff --git a/ui-ci/src/main/resources/ci/testSuites/onapUiSanity.xml b/ui-ci/src/main/resources/ci/testSuites/onapUiSanity.xml index 0ba4a17637..546f26981e 100644 --- a/ui-ci/src/main/resources/ci/testSuites/onapUiSanity.xml +++ b/ui-ci/src/main/resources/ci/testSuites/onapUiSanity.xml @@ -24,6 +24,7 @@ + -- cgit 1.2.3-korg