Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 39 additions & 2 deletions frontend/integration-tests/tests/developer-catalog.scenario.ts
Original file line number Diff line number Diff line change
@@ -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();
Expand Down Expand Up @@ -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`);
});
});
5 changes: 4 additions & 1 deletion frontend/integration-tests/views/catalog.view.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
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');
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'));