Skip to content

Commit 29d0740

Browse files
authored
Merge pull request #3367 from cloudfoundry-incubator/more-tolerant-service-e2e
Allow e2e createService helper 3 attempts at creating a service
2 parents 3094b05 + 0138beb commit 29d0740

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

src/test-e2e/marketplace/services-helper-e2e.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { browser, promise } from 'protractor';
1+
import { browser, promise, protractor } from 'protractor';
22

33
import { CFResponse, createEmptyCfResponse } from '../../frontend/app/store/types/api.types';
44
import { e2e, E2ESetup } from '../e2e';
@@ -9,6 +9,7 @@ import { ListComponent } from '../po/list.po';
99
import { CreateServiceInstance } from './create-service-instance.po';
1010

1111
const customServiceLabel = E2EHelpers.e2eItemPrefix + process.env.USER;
12+
const until = protractor.ExpectedConditions;
1213

1314
export class ServicesHelperE2E {
1415

@@ -92,9 +93,32 @@ export class ServicesHelperE2E {
9293

9394
this.setServiceInstanceDetail();
9495

95-
this.createServiceInstance.stepper.next();
96+
this.createInstanceAttempt(0, 3, serviceName);
97+
});
98+
}
99+
100+
createInstanceAttempt = (retryNumber: number, maxRetries: number, serviceName: string) => {
101+
this.createServiceInstance.stepper.next();
102+
browser.wait(until.or(
103+
until.invisibilityOf(this.createServiceInstance.stepper.nextButton()),
104+
this.createServiceInstance.stepper.canNext.bind(this.createServiceInstance.stepper)
105+
), 10000);
106+
107+
this.createServiceInstance.stepper.canNext().then(canNext => {
108+
if (canNext) {
109+
const attemptsLeft = maxRetries - retryNumber;
110+
if (!!attemptsLeft) {
111+
e2e.log(`Failed to create service instance '${this.serviceInstanceName}' of type '${serviceName}'.
112+
Attempting ${attemptsLeft} more time/s`);
113+
browser.sleep(1000);
114+
this.createInstanceAttempt(retryNumber + 1, maxRetries, serviceName);
115+
} else {
116+
fail(`Failed to create service instance after ${maxRetries} retries`);
117+
}
118+
}
96119
});
97120
}
121+
98122
canBindAppStep = (): promise.Promise<boolean> => {
99123
return this.cfHelper.fetchDefaultSpaceGuid(true)
100124
.then(spaceGuid => this.cfHelper.fetchAppsCountInSpace(CFHelpers.cachedDefaultCfGuid, spaceGuid))

src/test-e2e/po/stepper.po.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { by, element, browser, protractor, promise } from 'protractor';
1+
import { browser, by, element, promise, protractor } from 'protractor';
22
import { ElementFinder } from 'protractor/built';
3+
34
import { Component } from './component.po';
45
import { FormComponent } from './form.po';
56

@@ -22,8 +23,12 @@ export class StepperComponent extends Component {
2223
super(locator);
2324
}
2425

26+
nextButton(): ElementFinder {
27+
return this.locator.element(by.id('stepper_next'));
28+
}
29+
2530
next() {
26-
return this.locator.element(by.id('stepper_next')).click();
31+
return this.nextButton().click();
2732
}
2833

2934
cancel() {

0 commit comments

Comments
 (0)