ci(docs-infra): loosen conditions to reduce flakiness on CI (#29757)

The exact messages depend on the timing of several events and may vary
between runs. This occasionally causes flakes on CI.
This commit reduces the risk of flakes by loosen the conditions to only
check for what we actually care about.

Fixes #29544

PR Close #29757
This commit is contained in:
George Kalpakas 2019-04-25 12:29:43 +03:00 committed by Andrew Kushnir
parent 9914998e76
commit 2dc4e8801c
1 changed files with 13 additions and 14 deletions

View File

@ -1,8 +1,10 @@
'use strict'; // necessary for es6 output in node 'use strict'; // necessary for es6 output in node
import { browser, element, by } from 'protractor'; import { browser, element, ElementFinder, by } from 'protractor';
describe('Lifecycle hooks', () => { describe('Lifecycle hooks', () => {
const sendKeys = (el: ElementFinder, input: string) =>
input.split('').reduce((prev, c) => prev.then(() => el.sendKeys(c)), Promise.resolve());
beforeAll(() => { beforeAll(() => {
browser.get(''); browser.get('');
@ -69,17 +71,16 @@ describe('Lifecycle hooks', () => {
expect(count).toEqual(3, 'should start with 3 messages'); expect(count).toEqual(3, 'should start with 3 messages');
logCount = count; logCount = count;
await heroNameInputEle.sendKeys('-foo-'); await sendKeys(heroNameInputEle, '-foo-');
expect(titleEle.getText()).toContain('Windstorm-foo- can sing');
count = await changeLogEles.count(); count = await changeLogEles.count();
// one more for each keystroke expect(titleEle.getText()).toContain('Windstorm-foo- can sing');
expect(count).toEqual(logCount + 5, 'should add 5 more messages'); expect(count).toBeGreaterThanOrEqual(logCount + 5, 'should add at least one more message for each keystroke');
logCount = count; logCount = count;
await powerInputEle.sendKeys('-bar-'); await sendKeys(powerInputEle, '-bar-');
count = await changeLogEles.count();
expect(titleEle.getText()).toContain('Windstorm-foo- can sing-bar-'); expect(titleEle.getText()).toContain('Windstorm-foo- can sing-bar-');
expect(changeLogEles.count()).toEqual(logCount + 6, 'should add 6 more messages'); expect(count).toBeGreaterThanOrEqual(logCount + 5, 'should add at least one more message for each keystroke');
}); });
it('should support AfterView hooks', async () => { it('should support AfterView hooks', async () => {
@ -115,19 +116,17 @@ describe('Lifecycle hooks', () => {
let commentEle = parentEle.element(by.className('comment')); let commentEle = parentEle.element(by.className('comment'));
let logEles = parentEle.all(by.css('h4 ~ div')); let logEles = parentEle.all(by.css('h4 ~ div'));
let childViewInputEle = parentEle.element(by.css('app-child input')); let childViewInputEle = parentEle.element(by.css('app-child input'));
let logCount: number; let logCount = await logEles.count();
expect(childViewInputEle.getAttribute('value')).toContain('Magneta'); expect(childViewInputEle.getAttribute('value')).toContain('Magneta');
expect(commentEle.isPresent()).toBe(false, 'comment should not be in DOM'); expect(commentEle.isPresent()).toBe(false, 'comment should not be in DOM');
logCount = await logEles.count(); await sendKeys(childViewInputEle, '-test-');
await childViewInputEle.sendKeys('-test-'); let count = await logEles.count();
expect(childViewInputEle.getAttribute('value')).toContain('-test-'); expect(childViewInputEle.getAttribute('value')).toContain('-test-');
expect(commentEle.isPresent()).toBe(true, 'should have comment because >10 chars'); expect(commentEle.isPresent()).toBe(true, 'should have comment because >10 chars');
expect(commentEle.getText()).toContain('long name'); expect(commentEle.getText()).toContain('long name');
expect(count).toBeGreaterThanOrEqual(logCount + 5, 'additional log messages should have been added');
let count = await logEles.count();
expect(logCount + 5).toEqual(count, '5 additional log messages should have been added');
logCount = count; logCount = count;
await buttonEle.click(); await buttonEle.click();