From f3fb95253dda8081486a04278b03a2c0a7db206c Mon Sep 17 00:00:00 2001 From: David Taylor Date: Mon, 21 Jan 2019 12:57:28 -0500 Subject: [PATCH] Added 'creates a service instance and binding' test to dev catalog e2e test suite --- .../tests/developer-catalog.scenario.ts | 41 ++++++++++++++++++- .../integration-tests/views/catalog.view.ts | 5 ++- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/frontend/integration-tests/tests/developer-catalog.scenario.ts b/frontend/integration-tests/tests/developer-catalog.scenario.ts index eeba3103180..dd77bd20754 100644 --- a/frontend/integration-tests/tests/developer-catalog.scenario.ts +++ b/frontend/integration-tests/tests/developer-catalog.scenario.ts @@ -1,13 +1,15 @@ /* eslint-disable no-undef, no-unused-vars */ -import { browser, $ } from 'protractor'; +import { browser, $, $$, ExpectedConditions as until } from 'protractor'; +import { execSync } from 'child_process'; import { appHost, checkLogs, checkErrors, testName } from '../protractor.conf'; import * as crudView from '../views/crud.view'; import * as catalogView from '../views/catalog.view'; import * as catalogPageView from '../views/catalog-page.view'; +import * as srvCatalogView from '../views/service-catalog.view'; -describe('Catalog', () => { +describe('Developer Catalog', () => { beforeEach(async() => { await browser.get(`${appHost}/catalog/ns/${testName}`); await crudView.isLoaded(); @@ -92,4 +94,39 @@ describe('Catalog', () => { const numCatalogTiles = await catalogView.pageHeadingNumberOfItems(); expect(srvClassFilterCount).toEqual(numCatalogTiles); }); + + it('creates a service instance and binding', async() => { + expect(catalogPageView.catalogTiles.isPresent()).toBe(true); + + await catalogPageView.clickFilterCheckbox('Service Class'); + await catalogPageView.filterByKeyword('MongoDB'); + expect(catalogPageView.catalogTileFor('MongoDB').isDisplayed()).toBe(true); + + await catalogPageView.catalogTileFor('MongoDB').click(); + await catalogView.catalogDetailsLoaded(); + + expect(catalogView.createServiceInstanceButton.isDisplayed()).toBe(true); + await catalogView.createServiceInstanceButton.click(); + await browser.wait(until.and(crudView.untilNoLoadersPresent, until.presenceOf(catalogView.createServiceInstanceForm))); + + await $('#dropdown-selectbox').click(); + await $$('.dropdown-menu').first().$(`#${testName}-Project-link`).click(); + await srvCatalogView.createButton.click(); + await crudView.isLoaded(); + + expect(crudView.resourceTitle.getText()).toEqual('mongodb-persistent'); + + await catalogView.createServiceBindingButton.click(); + await browser.wait(crudView.untilNoLoadersPresent); + expect($('#resource-title').getText()).toBe('Create Service Binding'); + + await srvCatalogView.createButton.click(); + await crudView.isLoaded(); + + expect($('#resource-title').getText()).toBe('mongodb-persistent'); + expect($$('.co-section-heading').first().getText()).toBe('Service Binding Overview'); + + execSync(`kubectl delete -n ${testName} servicebinding mongodb-persistent`); + execSync(`kubectl delete -n ${testName} serviceinstance mongodb-persistent`); + }); }); diff --git a/frontend/integration-tests/views/catalog.view.ts b/frontend/integration-tests/views/catalog.view.ts index ba7d77760f6..aeed9948ce8 100644 --- a/frontend/integration-tests/views/catalog.view.ts +++ b/frontend/integration-tests/views/catalog.view.ts @@ -1,4 +1,4 @@ -import { $, $$, browser, ExpectedConditions as until } from 'protractor'; +import { $, $$, browser, by, ExpectedConditions as until } from 'protractor'; export const categoryTabs = $$('.vertical-tabs-pf-tab > a'); export const pageHeading = $('.co-catalog-page__heading'); @@ -6,3 +6,6 @@ export const pageNumberItemsHeading = $('.co-catalog-page__num-items'); export const pageHeadingNumberOfItems = () => pageNumberItemsHeading.getText() .then(text => parseInt(text.substring(0, text.indexOf(' items')), 10)); export const catalogDetailsLoaded = () => browser.wait(until.presenceOf($('.modal-content')), 10000).then(() => browser.sleep(1000)); +export const createServiceInstanceButton = $('.co-catalog-page__overlay-create'); +export const createServiceInstanceForm = $('.co-create-service-instance'); +export const createServiceBindingButton = $('.co-well').element(by.buttonText('Create Service Binding'));