aboutsummaryrefslogtreecommitdiffstats
path: root/vid-webpack-master/cypress/integration
diff options
context:
space:
mode:
Diffstat (limited to 'vid-webpack-master/cypress/integration')
-rw-r--r--vid-webpack-master/cypress/integration/iFrames/ala-carte.e2e.ts80
-rw-r--r--vid-webpack-master/cypress/integration/iFrames/auditInfo.modal.e2e.ts37
-rw-r--r--vid-webpack-master/cypress/integration/iFrames/drawingBoard.e2e.ts130
-rw-r--r--vid-webpack-master/cypress/integration/iFrames/instantiationStatus.e2e.ts50
-rw-r--r--vid-webpack-master/cypress/integration/iFrames/service.popup.e2e.ts57
-rw-r--r--vid-webpack-master/cypress/integration/iFrames/tenantIsolation.e2e.ts18
-rw-r--r--vid-webpack-master/cypress/integration/iFrames/viewEdit.e2e.ts424
-rw-r--r--vid-webpack-master/cypress/integration/shared/error.message.popup.e2e.ts33
-rw-r--r--vid-webpack-master/cypress/integration/shared/spinner.e2e.ts36
9 files changed, 865 insertions, 0 deletions
diff --git a/vid-webpack-master/cypress/integration/iFrames/ala-carte.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/ala-carte.e2e.ts
new file mode 100644
index 000000000..22eb88ca7
--- /dev/null
+++ b/vid-webpack-master/cypress/integration/iFrames/ala-carte.e2e.ts
@@ -0,0 +1,80 @@
+///<reference path="../../../node_modules/cypress/types/index.d.ts"/>
+/// <reference types="Cypress" />
+import { JsonBuilder } from '../../support/jsonBuilders/jsonBuilder';
+import { ServiceModel } from '../../support/jsonBuilders/models/service.model';
+
+describe('A la carte', function () {
+ describe('check service name', () => {
+ var jsonBuilderAAIService : JsonBuilder<ServiceModel> = new JsonBuilder<ServiceModel>();
+
+
+ beforeEach(() => {
+ cy.window().then((win) => {
+ win.sessionStorage.clear();
+ cy.setReduxState();
+ cy.preventErrorsOnLoading();
+ cy.initAAIMock();
+ cy.initVidMock();
+ cy.initAlaCarteService();
+ cy.initZones();
+ cy.login();
+ });
+ });
+
+ const SERVICE_ID: string = '4d71990b-d8ad-4510-ac61-496288d9078e';
+ const INSTANCE_NAME_MANDATORY_MESSAGE: string = 'Missing data ("Instance Name" and 3 other fields';
+ const INSTANCE_NAME_NOT_MANDATORY_MESSAGE: string = 'Missing data ("Subscriber Name" and 2 other fields)';
+ const CONFIRM_BUTTON : string = 'confirmButton';
+
+
+ // function changeServiceName(obj : AAIServiceModel){
+ // obj.service.version = "NEW VALUE";
+ // return obj;
+ // }
+ it(`service name should be mandatory : serviceEcompNaming = false`, function () {
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/basicService.json').then((res) => {
+ jsonBuilderAAIService.basicJson(res,
+ Cypress.config('baseUrl') + '/rest/models/services/4d71990b-d8ad-4510-ac61-496288d9078e',
+ 200,
+ 0,
+ SERVICE_ID + ' - service',
+ changeServiceEcompNamingToFalse);
+
+ checkServiceNameInputIdMandatory();
+ });
+ });
+
+ it(`service name should be mandatory : serviceEcompNaming = true`, function () {
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/basicService.json').then((res) => {
+ jsonBuilderAAIService.basicJson(res,
+ Cypress.config('baseUrl') + '/rest/models/services/4d71990b-d8ad-4510-ac61-496288d9078e',
+ 200,
+ 0,
+ SERVICE_ID + ' - service',
+ changeServiceEcompNamingToTrue);
+ checkServiceNameInputIdMandatory();
+ });
+ });
+
+ function changeServiceEcompNamingToTrue(obj : ServiceModel){
+ obj.service.serviceEcompNaming = "true";
+ return obj;
+ }
+
+ function changeServiceEcompNamingToFalse(obj : ServiceModel){
+ obj.service.serviceEcompNaming = "false";
+ return obj;
+ }
+
+ function checkServiceNameInputIdMandatory(){
+ cy.get('span').contains('Browse ASDC Service Models').click({force: true})
+ .getElementByDataTestsId('deploy-' + SERVICE_ID).click({force: true})
+ .wait(1000).getElementByDataTestsId(CONFIRM_BUTTON).click({force: true})
+ .get('.error').contains(INSTANCE_NAME_MANDATORY_MESSAGE)
+ .typeToInput('instanceName', 'testService');
+
+ cy.getElementByDataTestsId(CONFIRM_BUTTON).click({force: true})
+ .get('.error').contains(INSTANCE_NAME_NOT_MANDATORY_MESSAGE);
+ }
+ });
+});
diff --git a/vid-webpack-master/cypress/integration/iFrames/auditInfo.modal.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/auditInfo.modal.e2e.ts
new file mode 100644
index 000000000..c915d48e9
--- /dev/null
+++ b/vid-webpack-master/cypress/integration/iFrames/auditInfo.modal.e2e.ts
@@ -0,0 +1,37 @@
+///<reference path="../../../node_modules/cypress/types/index.d.ts"/>
+import { JsonBuilder } from '../../support/jsonBuilders/jsonBuilder';
+import { AsyncInstantiationModel } from '../../support/jsonBuilders/models/asyncInstantiation.model';
+
+describe('Audit information modal', function () {
+ describe('basic UI tests', () => {
+ var jsonBuilderInstantiationBuilder : JsonBuilder<AsyncInstantiationModel> = new JsonBuilder<AsyncInstantiationModel>();
+ beforeEach(() => {
+ cy.window().then((win) => {
+ win.sessionStorage.clear();
+ cy.setReduxState();
+ cy.preventErrorsOnLoading();
+ jsonBuilderInstantiationBuilder.basicMock('/cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json',
+ Cypress.config('baseUrl') + "/asyncInstantiation**");
+ cy.initAAIMock();
+ cy.initVidMock();
+ cy.login();
+ })
+ });
+
+ it(`should display 2 tables with information's`, function () {
+
+ cy.openIframe('app/ui/#/instantiationStatus');
+ cy.get('.instantiation-status-data tbody tr').each(function (row, index) {
+ cy.get('.icon-menu').eq(index).click()
+ .get('.audit-icon').click()
+ .get('#service-model-name').should('contain', row.find('#serviceModelName').text().trim())
+ .getElementByDataTestsId('model-item-value-userId').should('contain', row.find('#userId').text().trim())
+ .get('#service-instantiation-audit-info-vid').should('be.visible')
+ .get('#service-instantiation-audit-info-vid').find('#vidJobStatus').should('be.visible')
+ .get('#service-instantiation-audit-info-mso').should('be.visible')
+ .get('#service-instantiation-audit-info-mso').find('#msoJobStatus').should('be.visible')
+ .get('#cancelButton').click();
+ });
+ });
+ });
+});
diff --git a/vid-webpack-master/cypress/integration/iFrames/drawingBoard.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/drawingBoard.e2e.ts
new file mode 100644
index 000000000..2f98ba864
--- /dev/null
+++ b/vid-webpack-master/cypress/integration/iFrames/drawingBoard.e2e.ts
@@ -0,0 +1,130 @@
+///<reference path="../../../node_modules/cypress/types/index.d.ts"/>
+describe('Drawing board', function () {
+ describe('basic UI tests', () => {
+
+ beforeEach(() => {
+ cy.window().then((win) => {
+ win.sessionStorage.clear();
+ cy.setReduxState();
+ cy.preventErrorsOnLoading();
+ cy.initAAIMock();
+ cy.initVidMock();
+ cy.login();
+ });
+ });
+
+
+ it('should display service model name', function () {
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/emptyServiceRedux.json').then((res) => {
+ cy.setReduxState(<any>res);
+ cy.openIframe('app/ui/#/servicePlanning?serviceModelId=2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd');
+ cy.get('#service-model-name').contains('action-data');
+ });
+ });
+
+ it('should display icon and message if no vnf and vnfModules', function () {
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/emptyServiceRedux.json').then((res) => {
+ cy.setReduxState(<any>res);
+ cy.openIframe('app/ui/#/servicePlanning?serviceModelId=2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd');
+
+ cy.get('#not-node-img-id').and('be.visible');
+ });
+ });
+
+ it('should show alert on remove vnf with modules', function () {
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/serviceWithVnfAndVfModules.json').then((res) => {
+ cy.setReduxState(<any>res);
+ cy.openIframe('app/ui/#/servicePlanning?serviceModelId=2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd');
+ cy.getElementByDataTestsId('node-69e09f68-8b63-4cc9-b9ff-860960b5db09-2017-488_ADIOD-vPE 0-menu-btn')
+ .click({force: true});
+ // assert vfModules are enabled
+ cy.get('.tree-node-disabled div[data-tests-id="node-2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1"]')
+ .should('not.be.visible');
+ cy.get('.icon-trash').click();
+ cy.get('.title').contains('Remove VNF');
+ cy.get('.sdc-button').contains('Remove VNF').click();
+ // assert vfModules are disabled after remove parent vnf
+ cy.get('.tree-node-disabled div[data-tests-id="node-2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1"]')
+ .should('be.visible');
+ });
+ });
+
+ it('should not show alert on remove vnf without modules', function () {
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/serviceWithVnfAndVfModules.json').then((res) => {
+ cy.setReduxState(<any>res);
+ cy.openIframe('app/ui/#/servicePlanning?serviceModelId=2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd');
+ cy.getElementByDataTestsId('node-0903e1c0-8e03-4936-b5c2-260653b96413-2017-388_ADIOD-vPE 1-menu-btn')
+ .click({force: true});
+ cy.get('.icon-trash').click();
+ });
+ });
+
+ it('should show <Automatically Assigned> if ecomp is true', function () {
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/emptyServiceRedux.json').then((res) => {
+ cy.setReduxState(<any>res);
+ cy.openIframe('app/ui/#/servicePlanning?serviceModelId=2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd');
+ cy.getElementByDataTestsId('node-2017-488_ADIOD-vPE 0-add-btn').click({force: true});
+
+ cy.selectDropdownOptionByText('productFamily', 'DHV');
+ cy.selectDropdownOptionByText('lcpRegion', 'mtn6');
+ cy.selectDropdownOptionByText('tenant', 'AIN Web Tool-15-D-testgamma');
+ cy.selectDropdownOptionByText('lineOfBusiness', 'ECOMP');
+ cy.selectDropdownOptionByText('platform', 'platform');
+
+ cy.getElementByDataTestsId('vnf-form-set').click({force: true});
+
+ cy.getElementByDataTestsId('node-69e09f68-8b63-4cc9-b9ff-860960b5db09-2017-488_ADIOD-vPE 0').contains('<Automatically Assigned>');
+ });
+ });
+
+ it('should show model nameif ecomp is false', function () {
+ const vnfModelName: string = '2017-488_ADIOD-vPE 0';
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/emptyServiceRedux.json').then((res) => {
+ res.service.serviceHierarchy['2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd'].vnfs[vnfModelName].properties.ecomp_generated_naming = 'false';
+ cy.setReduxState(<any>res);
+ cy.openIframe('app/ui/#/servicePlanning?serviceModelId=2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd');
+ cy.getElementByDataTestsId('node-2017-488_ADIOD-vPE 0-add-btn').click({force: true});
+
+ cy.selectDropdownOptionByText('productFamily', 'DHV');
+ cy.selectDropdownOptionByText('lcpRegion', 'mtn6');
+ cy.selectDropdownOptionByText('tenant', 'AIN Web Tool-15-D-testgamma');
+ cy.selectDropdownOptionByText('lineOfBusiness', 'ECOMP');
+ cy.selectDropdownOptionByText('platform', 'platform');
+
+ cy.getElementByDataTestsId('vnf-form-set').click({force: true});
+
+ cy.getElementByDataTestsId('node-69e09f68-8b63-4cc9-b9ff-860960b5db09-2017-488_ADIOD-vPE 0').contains(vnfModelName);
+ });
+ });
+
+ // describe('add instance open a popup', () => {
+ //
+ // it('shouldn add vfModule without popup with no empty required fields', function () {
+ // cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/serviceWithVnfAndVfModules.json').then((res) => {
+ // res.service.serviceInstance["2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd"].vnfs["2017-488_ADIOD-vPE 0"].vfModules = [];
+ // cy.setReduxState(<any>res);
+ // cy.openIframe('app/ui/#/servicePlanning?serviceModelId=2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd');
+ // cy.get('available-models-tree tree-node-expander').eq(2).click();
+ // cy.getElementByDataTestsId('node-2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1-add-btn').click();
+ // cy.get('drawing-board-tree .toggle-children').click();
+ // cy.getElementByDataTestsId('node-25284168-24bb-4698-8cb4-3f509146eca5-2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1')
+ // .and('be.visible');
+ // });
+ // });
+ //
+ // it('should add vfModule with popup if empty required dynamic input', function () {
+ // cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/serviceWithVnfAndVfModules.json').then((res) => {
+ // res.service.serviceHierarchy["2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd"].vnfs["2017-488_ADIOD-vPE 0"].vfModules["2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1"].inputs["adiodvpe0_bandwidth"].default = '';
+ // res.service.serviceInstance["2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd"].vnfs["2017-488_ADIOD-vPE 0"].vfModules = [];
+ // cy.setReduxState(<any>res);
+ // cy.openIframe('app/ui/#/servicePlanning?serviceModelId=2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd');
+ // cy.get('available-models-tree tree-node-expander').eq(2).click();
+ // cy.getElementByDataTestsId('node-2017488_adiodvpe0..2017488AdiodVpe..ADIOD_vRE_BV..module-1-add-btn').click();
+ // cy.get('#instance-popup').and('be.visible');
+ // });
+ //
+ // });
+ //
+ // });
+ });
+});
diff --git a/vid-webpack-master/cypress/integration/iFrames/instantiationStatus.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/instantiationStatus.e2e.ts
new file mode 100644
index 000000000..be1b2ac7d
--- /dev/null
+++ b/vid-webpack-master/cypress/integration/iFrames/instantiationStatus.e2e.ts
@@ -0,0 +1,50 @@
+///<reference path="../../../node_modules/cypress/types/index.d.ts"/>
+/// <reference types="Cypress" />
+
+import { JsonBuilder } from '../../support/jsonBuilders/jsonBuilder';
+import { AsyncInstantiationModel } from '../../support/jsonBuilders/models/asyncInstantiation.model';
+
+describe('Instantiation status page', function () {
+ var jsonBuilderInstantiationBuilder : JsonBuilder<AsyncInstantiationModel> = new JsonBuilder<AsyncInstantiationModel>();
+ beforeEach(() => {
+ cy.window().then((win) => {
+ win.sessionStorage.clear();
+ cy.setReduxState();
+ cy.preventErrorsOnLoading();
+ cy.initAAIMock();
+ cy.initVidMock();
+ jsonBuilderInstantiationBuilder.basicMock('/cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json',
+ Cypress.config('baseUrl') + "/asyncInstantiation**");
+ cy.login();
+ })
+ });
+
+ it('should disaplay the correct icons per status', function () {
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json').then((res) => {
+ cy.openIframe('app/ui/#/instantiationStatus');
+ for(let i = 0 ; i < res.length; i++){
+ if(res[i].project){
+ cy.getTableRowByIndex('instantiation-status', i).get('td#project span').contains(res[i].project);
+ }
+ if(res[i].userId){
+ cy.getTableRowByIndex('instantiation-status', i).get('td#userId span').contains(res[i].userId);
+ }
+ if(res[i].tenantName){
+ cy.getTableRowByIndex('instantiation-status', i).get('td#tenantName span').contains(res[i].tenantName);
+ }
+ if(res[i].serviceModelName){
+ cy.getTableRowByIndex('instantiation-status', i).get('td#serviceModelName span').contains(res[i].serviceModelName);
+ }
+ if(res[i].serviceInstanceName){
+ cy.getTableRowByIndex('instantiation-status', i).get('td#serviceInstanceName span').contains(res[i].serviceInstanceName);
+ }
+ if(res[i].serviceModelVersion){
+ cy.getTableRowByIndex('instantiation-status', i).get('td#serviceModelVersion span').contains(res[i].serviceModelVersion);
+ }
+ if(res[i].subscriberName){
+ cy.getTableRowByIndex('instantiation-status', i).get('td#subscriberName span').contains(res[i].subscriberName);
+ }
+ }
+ });
+ });
+});
diff --git a/vid-webpack-master/cypress/integration/iFrames/service.popup.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/service.popup.e2e.ts
new file mode 100644
index 000000000..9d1fbfdf0
--- /dev/null
+++ b/vid-webpack-master/cypress/integration/iFrames/service.popup.e2e.ts
@@ -0,0 +1,57 @@
+///<reference path="../../../node_modules/cypress/types/index.d.ts"/>
+describe('Service popup', function () {
+ describe('basic UI tests', () => {
+
+ beforeEach(() => {
+ cy.window().then((win) => {
+ win.sessionStorage.clear();
+ cy.setReduxState();
+ cy.preventErrorsOnLoading();
+ cy.initAAIMock();
+ cy.initVidMock();
+ cy.login();
+ })
+ });
+
+ it('should contains basic selects with required astrix', function () {
+ cy.openIframe('/app/ui/#/servicePopup?serviceModelId=2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd&isCreate=true');
+ cy.isElementContainsAttr('service-form-set', 'disabled');
+ cy.get('label').contains('Subscriber name:').should('have.class', 'required')
+ .get('label').contains('Service type:').should('have.class', 'required')
+ .get('label').contains('LCP region:').should('have.class', 'required')
+ .get('label').contains('Tenant:').should('have.class', 'required')
+ .get('label').contains('Owning entity:').should('have.class', 'required')
+ .get('label').contains('Product family:').should('have.class', 'required')
+ .get('label').contains('AIC Zone:').should('not.have.class', 'required')
+ .get('label').contains('Project').should('not.have.class', 'required')
+ .get('label').contains('Rollback On Failure').should('have.class', 'required');
+ });
+
+ it('should be able fill all selects', function () {
+ cy.openIframe('/app/ui/#/servicePopup?serviceModelId=2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd&isCreate=true');
+
+ cy.selectDropdownOptionByText('subscriberName', 'USP VOICE');
+ cy.selectDropdownOptionByText('serviceType', 'VIRTUAL USP');
+ cy.selectDropdownOptionByText('productFamily', 'VIRTUAL USP');
+ cy.selectDropdownOptionByText('lcpRegion', 'mtn6');
+ cy.selectDropdownOptionByText('tenant', 'AIN Web Tool-15-D-testgamma');
+ cy.selectDropdownOptionByText('aic_zone', 'NFTJSSSS-NFT1');
+ cy.selectDropdownOptionByText('project', 'DFW');
+ cy.selectDropdownOptionByText('owningEntity', 'aaa1');
+ cy.selectDropdownOptionByText('rollback', 'Rollback');
+
+ });
+
+ it('should display error when api return empty data', function () {
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/categoryParametres.json').then((res)=>{
+ res.categoryParameters.owningEntity = [];
+ cy.initCategoryParameter(<any>res);
+
+ cy.openIframe('/app/ui/#/servicePopup?serviceModelId=2f80c596-27e5-4ca9-b5bb-e03a7fd4c0fd&isCreate=true');
+
+ cy.get('.message').contains('No results for this request. Please change criteria.');
+ cy.get('form-general-error').contains('Page contains errors. Please see details next to the relevant fields.');
+ });
+ });
+ });
+});
diff --git a/vid-webpack-master/cypress/integration/iFrames/tenantIsolation.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/tenantIsolation.e2e.ts
new file mode 100644
index 000000000..7b848ba5b
--- /dev/null
+++ b/vid-webpack-master/cypress/integration/iFrames/tenantIsolation.e2e.ts
@@ -0,0 +1,18 @@
+///<reference path="../../../node_modules/cypress/types/index.d.ts"/> / <reference types="Cypress" />
+
+describe('Tenant isolation - Test Environments Page', function () {
+ describe('New Test Environment popup', () => {
+
+ beforeEach(() => {
+ cy.login();
+ });
+
+ it(`verifying proper text for the "Tenant Context" label; instead of "Select VSP"`, function () {
+
+ cy.visit('/app/vid/scripts/modals/new-test-environment/new-test-environment.html');
+ cy.get('label[for=tenantContext]').contains('Tenant Context');
+ });
+ });
+ });
+
+
diff --git a/vid-webpack-master/cypress/integration/iFrames/viewEdit.e2e.ts b/vid-webpack-master/cypress/integration/iFrames/viewEdit.e2e.ts
new file mode 100644
index 000000000..e589b1e73
--- /dev/null
+++ b/vid-webpack-master/cypress/integration/iFrames/viewEdit.e2e.ts
@@ -0,0 +1,424 @@
+///<reference path="../../../node_modules/cypress/types/index.d.ts"/> / <reference types="Cypress" />
+import { JsonBuilder } from '../../support/jsonBuilders/jsonBuilder';
+import { PnfModel } from '../../support/jsonBuilders/models/pnf.model';
+import { ServiceModel } from '../../support/jsonBuilders/models/service.model';
+import { AaiServiceInstancesModel } from '../../support/jsonBuilders/models/serviceInstances.model';
+import { AAISubDetailsModel } from '../../support/jsonBuilders/models/aaiSubDetails.model';
+import { AAISubViewEditModel } from '../../support/jsonBuilders/models/aaiSubViewEdit.model';
+
+describe('View Edit Page', function () {
+ describe('basic UI tests', () => {
+ var jsonBuilderAAIService : JsonBuilder<ServiceModel> = new JsonBuilder<ServiceModel>();
+
+
+ var jsonBuilderAAISubViewEditModel: JsonBuilder<AAISubViewEditModel> = new JsonBuilder<AAISubViewEditModel>();
+ var jsonBuilderAAISubDetailsModel: JsonBuilder<AAISubDetailsModel> = new JsonBuilder<AAISubDetailsModel>();
+ var jsonBuilderPNF: JsonBuilder<PnfModel> = new JsonBuilder<PnfModel>();
+ var jsonBuilderAaiServiceInstances: JsonBuilder<AaiServiceInstancesModel> = new JsonBuilder<AaiServiceInstancesModel>();
+ var jsonBuilderEmpty: JsonBuilder<Object> = new JsonBuilder<Object>();
+ beforeEach(() => {
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/basicService.json').then((res) => {
+ jsonBuilderAAIService.basicJson(
+ res,
+ Cypress.config('baseUrl') + "/rest/models/services/6e59c5de-f052-46fa-aa7e-2fca9d674c44",
+ 200, 0,
+ "service-complexService",
+ changeServiceModel)
+ });
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/aaiSubViewEditForComplexService.json').then((res) => {
+ jsonBuilderAAISubViewEditModel.basicJson(
+ res,
+ Cypress.config('baseUrl') + "/aai_sub_viewedit/**",
+ 200,
+ 0,
+ "aai-sub-view-edit")
+ });
+
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/aaiSubDetails.json').then((res) => {
+ jsonBuilderAAISubDetailsModel.basicJson(
+ res,
+ Cypress.config('baseUrl') + "/aai_sub_details/**",
+ 200,
+ 0,
+ "aai-sub-details")
+ });
+
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/aaiServiceInstancePnfs.json').then((res) => {
+ jsonBuilderPNF.basicJson(
+ res,
+ Cypress.config('baseUrl') + "/aai_get_service_instance_pnfs/**",
+ 200,
+ 0,
+ "aai-get-service-instance-pnfs")
+ });
+
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/aaiServiceInstances.json').then((res) => {
+ jsonBuilderAaiServiceInstances.basicJson(
+ res,
+ Cypress.config('baseUrl') + "/search_service_instances**",
+ 200,
+ 0,
+ "aai-get-service-instances")
+ });
+
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/emptyObjectResponse.json').then((res) => {
+ jsonBuilderEmpty.basicJson(
+ res,
+ Cypress.config('baseUrl') + "/aai_getPortMirroringConfigsData**",
+ 200,
+ 0,
+ "aai_getPortMirroringConfigsDate - empty response")
+ });
+
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/emptyObjectResponse.json').then((res) => {
+ jsonBuilderEmpty.basicJson(
+ res,
+ Cypress.config('baseUrl') + "/aai_getPortMirroringSourcePorts**",
+ 200,
+ 0,
+ "aai_getPortMirroringSourcePorts - empty response")
+ });
+
+ cy.login();
+ });
+
+
+ it(`should display service model name and version on each info form`, function () {
+ let typesToIncludeModel:Array<string> = ['service', 'vnf', 'vfmodule', 'volume-group', 'network'];
+ cy.visit('/serviceModels.htm#/instantiate?subscriberId=e433710f-9217-458d-a79d-1c7aff376d89&subscriberName=USP%20VOICE&serviceType=VIRTUAL%20USP&serviceInstanceId=3f93c7cb-2fd0-4557-9514-e189b7b04f9d&aaiModelVersionId=6e59c5de-f052-46fa-aa7e-2fca9d674c44&isPermitted=true');
+ cy.wait('@service-complexService');
+ typesToIncludeModel.forEach((type) => {
+ cy.get('.' + type + '-info').click({force: true});
+ cy.getElementByDataTestsId("Model Version").contains('1.0');
+ cy.getElementByDataTestsId("Model Name").contains('vidmacrofalsenaming');
+ cy.getElementByDataTestsId("detailsCloseBtn").click();
+ });
+ });
+ });
+
+ function changeServiceModel(serviceModel: ServiceModel) {
+ serviceModel.service.uuid = "6e59c5de-f052-46fa-aa7e-2fca9d674c44";
+ serviceModel.vnfs = {
+ "VF_vMee 0": {
+ "uuid": "d6557200-ecf2-4641-8094-5393ae3aae60",
+ "invariantUuid": "4160458e-f648-4b30-a176-43881ffffe9e",
+ "description": "VSP_vMee",
+ "name": "VF_vMee",
+ "version": "2.0",
+ "customizationUuid": "91415b44-753d-494c-926a-456a9172bbb9",
+ "inputs": {},
+ "commands": {},
+ "properties": {
+ "gpb2_Internal2_mac": "00:80:37:0E:02:22",
+ "sctp-b-ipv6-egress_src_start_port": "0",
+ "sctp-a-ipv6-egress_rule_application": "any",
+ "Internal2_allow_transit": "true",
+ "sctp-b-IPv6_ethertype": "IPv6",
+ "sctp-a-egress_rule_application": "any",
+ "sctp-b-ingress_action": "pass",
+ "sctp-b-ingress_rule_protocol": "icmp",
+ "ncb2_Internal1_mac": "00:80:37:0E:0F:12",
+ "sctp-b-ipv6-ingress-src_start_port": "0.0",
+ "ncb1_Internal2_mac": "00:80:37:0E:09:12",
+ "fsb_volume_size_0": "320.0",
+ "sctp-b-egress_src_addresses": "local",
+ "sctp-a-ipv6-ingress_ethertype": "IPv4",
+ "sctp-a-ipv6-ingress-dst_start_port": "0",
+ "sctp-b-ipv6-ingress_rule_application": "any",
+ "domain_name": "default-domain",
+ "sctp-a-ingress_rule_protocol": "icmp",
+ "sctp-b-egress-src_start_port": "0.0",
+ "sctp-a-egress_src_addresses": "local",
+ "sctp-b-display_name": "epc-sctp-b-ipv4v6-sec-group",
+ "sctp-a-egress-src_start_port": "0.0",
+ "sctp-a-ingress_ethertype": "IPv4",
+ "sctp-b-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-dst_subnet_prefix_v6": "::",
+ "nf_naming": "{ecomp_generated_naming=true}",
+ "sctp-a-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-b-egress-dst_start_port": "0.0",
+ "ncb_flavor_name": "nv.c20r64d1",
+ "gpb1_Internal1_mac": "00:80:37:0E:01:22",
+ "sctp-b-egress_dst_subnet_prefix_len": "0.0",
+ "Internal2_net_cidr": "169.255.0.0",
+ "sctp-a-ingress-dst_start_port": "0.0",
+ "sctp-a-egress-dst_start_port": "0.0",
+ "fsb1_Internal2_mac": "00:80:37:0E:0B:12",
+ "sctp-a-egress_ethertype": "IPv4",
+ "vlc_st_service_mode": "in-network-nat",
+ "sctp-a-ipv6-egress_ethertype": "IPv4",
+ "sctp-a-egress-src_end_port": "65535.0",
+ "sctp-b-ipv6-egress_rule_application": "any",
+ "sctp-b-egress_action": "pass",
+ "sctp-a-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-b-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-b-name": "epc-sctp-b-ipv4v6-sec-group",
+ "fsb2_Internal1_mac": "00:80:37:0E:0D:12",
+ "sctp-a-ipv6-ingress-src_start_port": "0.0",
+ "sctp-b-ipv6-egress_ethertype": "IPv4",
+ "Internal1_net_cidr": "169.253.0.0",
+ "sctp-a-egress_dst_subnet_prefix": "0.0.0.0",
+ "fsb_flavor_name": "nv.c20r64d1",
+ "sctp_rule_protocol": "132",
+ "sctp-b-ipv6-ingress_src_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_rule_application": "any",
+ "ecomp_generated_naming": "true",
+ "sctp-a-IPv6_ethertype": "IPv6",
+ "vlc2_Internal1_mac": "00:80:37:0E:02:12",
+ "vlc_st_virtualization_type": "virtual-machine",
+ "sctp-b-ingress-dst_start_port": "0.0",
+ "sctp-b-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-ingress-src_end_port": "65535.0",
+ "sctp-a-display_name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-b-ingress_rule_application": "any",
+ "int2_sec_group_name": "int2-sec-group",
+ "vlc_flavor_name": "nd.c16r64d1",
+ "sctp-b-ipv6-egress_src_addresses": "local",
+ "vlc_st_interface_type_int1": "other1",
+ "sctp-b-egress-src_end_port": "65535.0",
+ "sctp-a-ipv6-egress-dst_start_port": "0",
+ "vlc_st_interface_type_int2": "other2",
+ "sctp-a-ipv6-egress_rule_protocol": "any",
+ "Internal2_shared": "false",
+ "sctp-a-ipv6-egress_dst_subnet_prefix_len": "0",
+ "Internal2_rpf": "disable",
+ "vlc1_Internal1_mac": "00:80:37:0E:01:12",
+ "sctp-b-ipv6-egress_src_end_port": "65535",
+ "sctp-a-ipv6-egress_src_addresses": "local",
+ "sctp-a-ingress-dst_end_port": "65535.0",
+ "sctp-a-ipv6-egress_src_end_port": "65535",
+ "Internal1_forwarding_mode": "l2",
+ "Internal2_dhcp": "false",
+ "sctp-a-dst_subnet_prefix_v6": "::",
+ "pxe_image_name": "MME_PXE-Boot_16ACP04_GA.qcow2",
+ "vlc_st_interface_type_gtp": "other0",
+ "ncb1_Internal1_mac": "00:80:37:0E:09:12",
+ "sctp-b-src_subnet_prefix_v6": "::",
+ "sctp-a-egress_dst_subnet_prefix_len": "0.0",
+ "int1_sec_group_name": "int1-sec-group",
+ "Internal1_dhcp": "false",
+ "sctp-a-ipv6-egress_dst_end_port": "65535",
+ "Internal2_forwarding_mode": "l2",
+ "fsb2_Internal2_mac": "00:80:37:0E:0D:12",
+ "sctp-b-egress_dst_subnet_prefix": "0.0.0.0",
+ "Internal1_net_cidr_len": "17",
+ "gpb2_Internal1_mac": "00:80:37:0E:02:22",
+ "sctp-b-ingress-src_subnet_prefix_len": "0.0",
+ "sctp-a-ingress_dst_addresses": "local",
+ "sctp-a-egress_action": "pass",
+ "fsb_volume_type_0": "SF-Default-SSD",
+ "ncb2_Internal2_mac": "00:80:37:0E:0F:12",
+ "vlc_st_interface_type_sctp_a": "left",
+ "vlc_st_interface_type_sctp_b": "right",
+ "sctp-a-src_subnet_prefix_v6": "::",
+ "vlc_st_version": "2",
+ "sctp-b-egress_ethertype": "IPv4",
+ "sctp-a-ingress_rule_application": "any",
+ "gpb1_Internal2_mac": "00:80:37:0E:01:22",
+ "instance_ip_family_v6": "v6",
+ "sctp-a-ipv6-egress_src_start_port": "0",
+ "sctp-b-ingress-src_start_port": "0.0",
+ "sctp-b-ingress_dst_addresses": "local",
+ "fsb1_Internal1_mac": "00:80:37:0E:0B:12",
+ "vlc_st_interface_type_oam": "management",
+ "multi_stage_design": "false",
+ "oam_sec_group_name": "oam-sec-group",
+ "Internal2_net_gateway": "169.255.0.3",
+ "sctp-a-ipv6-ingress-dst_end_port": "65535",
+ "sctp-b-ipv6-egress-dst_start_port": "0",
+ "Internal1_net_gateway": "169.253.0.3",
+ "sctp-b-ipv6-egress_rule_protocol": "any",
+ "gtp_sec_group_name": "gtp-sec-group",
+ "sctp-a-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-egress_dst_subnet_prefix_len": "0",
+ "sctp-a-ipv6-ingress_dst_addresses": "local",
+ "sctp-a-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-egress_action": "pass",
+ "sctp-a-ipv6-egress_action": "pass",
+ "Internal1_shared": "false",
+ "sctp-b-ipv6-ingress_rule_protocol": "any",
+ "Internal2_net_cidr_len": "17",
+ "sctp-a-name": "epc-sctp-a-ipv4v6-sec-group",
+ "sctp-a-ingress-src_end_port": "65535.0",
+ "sctp-b-ipv6-ingress_src_subnet_prefix": "0.0.0.0",
+ "sctp-a-egress-dst_end_port": "65535.0",
+ "sctp-a-ingress_action": "pass",
+ "sctp-b-egress_rule_protocol": "icmp",
+ "sctp-b-ipv6-ingress_action": "pass",
+ "vlc_st_service_type": "firewall",
+ "sctp-b-ipv6-egress_dst_end_port": "65535",
+ "sctp-b-ipv6-ingress-dst_start_port": "0",
+ "vlc2_Internal2_mac": "00:80:37:0E:02:12",
+ "vlc_st_availability_zone": "true",
+ "fsb_volume_image_name_1": "MME_FSB2_16ACP04_GA.qcow2",
+ "sctp-b-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_src_subnet_prefix_len": "0",
+ "Internal1_allow_transit": "true",
+ "gpb_flavor_name": "nv.c20r64d1",
+ "availability_zone_max_count": "1",
+ "fsb_volume_image_name_0": "MME_FSB1_16ACP04_GA.qcow2",
+ "sctp-b-ipv6-ingress_dst_addresses": "local",
+ "sctp-b-ipv6-egress_dst_subnet_prefix": "0.0.0.0",
+ "sctp-b-ipv6-ingress_ethertype": "IPv4",
+ "vlc1_Internal2_mac": "00:80:37:0E:01:12",
+ "sctp-a-ingress-src_subnet_prefix": "0.0.0.0",
+ "sctp-a-ipv6-ingress_action": "pass",
+ "Internal1_rpf": "disable",
+ "sctp-b-ingress_ethertype": "IPv4",
+ "sctp-b-egress_rule_application": "any",
+ "sctp-b-ingress-src_end_port": "65535.0",
+ "sctp-a-ipv6-ingress_rule_protocol": "any",
+ "sctp-a-ingress-src_start_port": "0.0",
+ "sctp-b-egress-dst_end_port": "65535.0"
+ },
+ "type": "VF",
+ "modelCustomizationName": "VF_vMee 0",
+ "vfModules": {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ },
+ "volumeGroups": {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ },
+ "vfcInstanceGroups": {}
+ }
+ };
+ serviceModel.vfModules = {
+ "vf_vmee0..VfVmee..vmme_vlc..module-1": {
+ "uuid": "522159d5-d6e0-4c2a-aa44-5a542a12a830",
+ "invariantUuid": "98a7c88b-b577-476a-90e4-e25a5871e02b",
+ "customizationUuid": "55b1be94-671a-403e-a26c-667e9c47d091",
+ "description": null,
+ "name": "VfVmee..vmme_vlc..module-1",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_vlc..module-1",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_vlc"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..vmme_gpb..module-2": {
+ "uuid": "41708296-e443-4c71-953f-d9a010f059e1",
+ "invariantUuid": "1cca90b8-3490-495e-87da-3f3e4c57d5b9",
+ "customizationUuid": "6add59e0-7fe1-4bc4-af48-f8812422ae7c",
+ "description": null,
+ "name": "VfVmee..vmme_gpb..module-2",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..vmme_gpb..module-2",
+ "properties": {
+ "minCountInstances": 0,
+ "maxCountInstances": null,
+ "initialCount": 0,
+ "vfModuleLabel": "vmme_gpb"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": false
+ },
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {},
+ "volumeGroupAllowed": true
+ }
+ };
+ serviceModel.volumeGroups = {
+ "vf_vmee0..VfVmee..base_vmme..module-0": {
+ "uuid": "a27f5cfc-7f12-4f99-af08-0af9c3885c87",
+ "invariantUuid": "a6f9e51a-2b35-416a-ae15-15e58d61f36d",
+ "customizationUuid": "f8c040f1-7e51-4a11-aca8-acf256cfd861",
+ "description": null,
+ "name": "VfVmee..base_vmme..module-0",
+ "version": "2",
+ "modelCustomizationName": "VfVmee..base_vmme..module-0",
+ "properties": {
+ "minCountInstances": 1,
+ "maxCountInstances": 1,
+ "initialCount": 1,
+ "vfModuleLabel": "base_vmme"
+ },
+ "inputs": {}
+ }
+ };
+ return serviceModel;
+ }
+});
+
diff --git a/vid-webpack-master/cypress/integration/shared/error.message.popup.e2e.ts b/vid-webpack-master/cypress/integration/shared/error.message.popup.e2e.ts
new file mode 100644
index 000000000..8e78067e1
--- /dev/null
+++ b/vid-webpack-master/cypress/integration/shared/error.message.popup.e2e.ts
@@ -0,0 +1,33 @@
+///<reference path="../../../node_modules/cypress/types/index.d.ts"/>
+/// <reference types="Cypress" />
+
+import { JsonBuilder } from '../../support/jsonBuilders/jsonBuilder';
+import { AsyncInstantiationModel } from '../../support/jsonBuilders/models/asyncInstantiation.model';
+
+describe('Error message popup', function () {
+ describe('show error on status 500', () => {
+ var jsonBuilderInstantiationBuilder : JsonBuilder<AsyncInstantiationModel> = new JsonBuilder<AsyncInstantiationModel>();
+ beforeEach(() => {
+ cy.window().then((win) => {
+ win.sessionStorage.clear();
+ cy.setReduxState();
+ cy.preventErrorsOnLoading();
+ cy.initAAIMock();
+ cy.initVidMock();
+ cy.login();
+ })
+ });
+
+ it('spinner should display after api call', function () {
+ // adding call with delay of 2000 sec
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json').then((res) => {
+ jsonBuilderInstantiationBuilder.basicJson(res, Cypress.config('baseUrl') + "/asyncInstantiation**", 500,0, "error 500 asyncInstantiation");
+
+ cy.openIframe('app/ui/#/instantiationStatus');
+ cy.get('div.title')
+ .contains('Server not available');
+
+ });
+ });
+ });
+});
diff --git a/vid-webpack-master/cypress/integration/shared/spinner.e2e.ts b/vid-webpack-master/cypress/integration/shared/spinner.e2e.ts
new file mode 100644
index 000000000..35f386fd5
--- /dev/null
+++ b/vid-webpack-master/cypress/integration/shared/spinner.e2e.ts
@@ -0,0 +1,36 @@
+///<reference path="../../../node_modules/cypress/types/index.d.ts"/>
+/// <reference types="Cypress" />
+import { JsonBuilder } from '../../support/jsonBuilders/jsonBuilder';
+import { AsyncInstantiationModel } from '../../support/jsonBuilders/models/asyncInstantiation.model';
+
+describe('Spinner', function () {
+ describe('spinner', () => {
+ var jsonBuilderInstantiationBuilder : JsonBuilder<AsyncInstantiationModel> = new JsonBuilder<AsyncInstantiationModel>();
+ beforeEach(() => {
+ cy.window().then((win) => {
+ win.sessionStorage.clear();
+ cy.setReduxState();
+ cy.preventErrorsOnLoading();
+ cy.initAAIMock();
+ cy.initVidMock();
+ cy.login();
+ })
+ });
+
+ it('spinner should display after api call', function () {
+ cy.readFile('/cypress/support/jsonBuilders/mocks/jsons/asyncInstantiation.json').then((res) => {
+
+ jsonBuilderInstantiationBuilder.basicJson(res,
+ Cypress.config('baseUrl') + "/asyncInstantiation**",
+ 200,
+ 2000,
+ "error 500 asyncInstantiation");
+ cy.openIframe('app/ui/#/instantiationStatus');
+
+ cy.get('.spinner')
+ .and('be.visible');
+
+ });
+ });
+ });
+});