[functional tests] implement clickTestSubject helper (#10603)

Backports PR #10576

**Commit 1:**
[functional tests] implement clickTestSubject helper

Calling `.findTestSubject().click()` seems to be particularly error prone. This helper combines to the two actions and wraps them in a retry so we don't have to keep scattering `PageObject.common.try()` calls throughout the tests.

* Original sha: 14cc807b8a
* Authored by spalger <spalger@users.noreply.github.com> on 2017-02-24T20:08:33Z
This commit is contained in:
jasper 2017-02-27 19:27:40 -05:00 committed by Spencer
parent 771ed95a8c
commit 07b899c9b3
7 changed files with 36 additions and 49 deletions

View file

@ -299,6 +299,12 @@ export default class Common {
return exists;
}
async clickTestSubject(selector) {
return await Try.try(async () => {
await this.findTestSubject(selector).click();
});
}
findTestSubject(selector, timeout = defaultFindTimeout) {
this.debug('in findTestSubject: ' + testSubjSelector(selector));
let originalFindTimeout = null;

View file

@ -31,18 +31,15 @@ export default class ConsolePage {
}
async clickPlay() {
const sendRequestButton = await PageObjects.common.findTestSubject('send-request-button');
await sendRequestButton.click();
await PageObjects.common.clickTestSubject('send-request-button');
}
async collapseHelp() {
const closeButton = await PageObjects.common.findTestSubject('help-close-button');
await closeButton.click();
await PageObjects.common.clickTestSubject('help-close-button');
}
async openSettings() {
const settingsButton = await PageObjects.common.findTestSubject('consoleSettingsButton');
await settingsButton.click();
await PageObjects.common.clickTestSubject('consoleSettingsButton');
}
async setFontSizeSetting(newSize) {
@ -56,8 +53,7 @@ export default class ConsolePage {
await fontSizeInput.type(String(newSize));
});
const saveButton = await PageObjects.common.findTestSubject('settings-save-button');
await saveButton.click();
await PageObjects.common.clickTestSubject('settings-save-button');
}
async getFontSize(editor) {

View file

@ -51,15 +51,15 @@ export default class DashboardPage {
}
clickNewDashboard() {
return PageObjects.common.findTestSubject('newDashboardLink').click();
return PageObjects.common.clickTestSubject('newDashboardLink');
}
clickAddVisualization() {
return PageObjects.common.findTestSubject('dashboardAddPanelButton').click();
return PageObjects.common.clickTestSubject('dashboardAddPanelButton');
}
clickOptions() {
return PageObjects.common.findTestSubject('dashboardOptionsButton').click();
return PageObjects.common.clickTestSubject('dashboardOptionsButton');
}
isOptionsOpen() {
@ -71,7 +71,7 @@ export default class DashboardPage {
PageObjects.common.debug('openOptions');
const isOpen = await this.isOptionsOpen();
if (!isOpen) {
return PageObjects.common.findTestSubject('dashboardOptionsButton').click();
return PageObjects.common.clickTestSubject('dashboardOptionsButton');
}
}
@ -86,7 +86,7 @@ export default class DashboardPage {
await this.openOptions();
const isDarkThemeOn = await this.isDarkThemeOn();
if (isDarkThemeOn !== on) {
return PageObjects.common.findTestSubject('dashboardDarkThemeCheckbox').click();
return PageObjects.common.clickTestSubject('dashboardDarkThemeCheckbox');
}
}
@ -161,7 +161,7 @@ export default class DashboardPage {
* @param saveOptions {{storeTimeWithDashboard: boolean, saveAsNew: boolean}}
*/
async enterDashboardTitleAndClickSave(dashboardTitle, saveOptions = {}) {
await PageObjects.common.findTestSubject('dashboardSaveButton').click();
await PageObjects.common.clickTestSubject('dashboardSaveButton');
await PageObjects.header.waitUntilLoadingHasFinished();

View file

@ -42,7 +42,7 @@ export default class DiscoverPage {
})
.then(() => {
PageObjects.common.debug('--find save button');
return PageObjects.common.findTestSubject('discover-save-search-btn').click();
return PageObjects.common.clickTestSubject('discover-save-search-btn');
});
}
@ -57,18 +57,15 @@ export default class DiscoverPage {
}
clickNewSearchButton() {
return PageObjects.common.findTestSubject('discoverNewButton')
.click();
return PageObjects.common.clickTestSubject('discoverNewButton');
}
clickSaveSearchButton() {
return PageObjects.common.findTestSubject('discoverSaveButton')
.click();
return PageObjects.common.clickTestSubject('discoverSaveButton');
}
clickLoadSavedSearchButton() {
return PageObjects.common.findTestSubject('discoverOpenButton')
.click();
return PageObjects.common.clickTestSubject('discoverOpenButton');
}
getCurrentQueryName() {
@ -225,18 +222,15 @@ export default class DiscoverPage {
}
clickShare() {
return PageObjects.common.findTestSubject('discoverShareButton')
.click();
return PageObjects.common.clickTestSubject('discoverShareButton');
}
clickShortenUrl() {
return PageObjects.common.findTestSubject('sharedSnapshotShortUrlButton')
.click();
return PageObjects.common.clickTestSubject('sharedSnapshotShortUrlButton');
}
clickCopyToClipboard() {
return PageObjects.common.findTestSubject('sharedSnapshotCopyButton')
.click();
return PageObjects.common.clickTestSubject('sharedSnapshotCopyButton');
}
getShareCaption() {
@ -293,13 +287,12 @@ export default class DiscoverPage {
async clickFieldListItemAdd(field) {
const listEntry = await PageObjects.common.findTestSubject(`field-${field}`);
await this.remote.moveMouseTo(listEntry);
await PageObjects.common.findTestSubject(`fieldToggle-${field}`)
.click();
await PageObjects.common.clickTestSubject(`fieldToggle-${field}`);
}
async clickFieldListItemVisualize(field) {
return await PageObjects.common.try(async () => {
await PageObjects.common.findTestSubject('fieldVisualize-' + field).click();
await PageObjects.common.clickTestSubject('fieldVisualize-' + field);
});
}
@ -320,8 +313,8 @@ export default class DiscoverPage {
}
async removeAllFilters() {
await PageObjects.common.findTestSubject('showFilterActions').click();
await PageObjects.common.findTestSubject('removeAllFilters').click();
await PageObjects.common.clickTestSubject('showFilterActions');
await PageObjects.common.clickTestSubject('removeAllFilters');
}

View file

@ -44,8 +44,7 @@ export default class HeaderPage {
clickTimepicker() {
return PageObjects.common.try(() => {
return PageObjects.common.findTestSubject('globalTimepickerButton')
.click();
return PageObjects.common.clickTestSubject('globalTimepickerButton');
});
}

View file

@ -37,14 +37,13 @@ export default class SettingsPage {
}
async setAdvancedSettings(propertyName, propertyValue) {
const self = this;
await PageObjects.common.findTestSubject('advancedSetting-' + propertyName + '-editButton').click();
await PageObjects.common.clickTestSubject('advancedSetting-' + propertyName + '-editButton');
await PageObjects.header.waitUntilLoadingHasFinished();
await PageObjects.common.sleep(1000);
await this.remote.setFindTimeout(defaultFindTimeout)
.findByCssSelector('option[label="' + propertyValue + '"]').click();
await PageObjects.header.waitUntilLoadingHasFinished();
await PageObjects.common.findTestSubject('advancedSetting-' + propertyName + '-saveButton').click();
await PageObjects.common.clickTestSubject('advancedSetting-' + propertyName + '-saveButton');
await PageObjects.header.waitUntilLoadingHasFinished();
}
@ -290,8 +289,7 @@ export default class SettingsPage {
});
await PageObjects.common.try(async () => {
PageObjects.common.debug('acceptConfirmation');
await PageObjects.common.findTestSubject('confirmModalConfirmButton')
.click();
await PageObjects.common.clickTestSubject('confirmModalConfirmButton');
});
await PageObjects.common.try(async () => {
const currentUrl = await this.remote.getCurrentUrl();
@ -304,20 +302,17 @@ export default class SettingsPage {
async clickFieldsTab() {
PageObjects.common.debug('click Fields tab');
await PageObjects.common.findTestSubject('tab-indexFields')
.click();
await PageObjects.common.clickTestSubject('tab-indexFields');
}
async clickScriptedFieldsTab() {
PageObjects.common.debug('click Scripted Fields tab');
await PageObjects.common.findTestSubject('tab-scriptedFields')
.click();
await PageObjects.common.clickTestSubject('tab-scriptedFields');
}
async clickSourceFiltersTab() {
PageObjects.common.debug('click Source Filters tab');
await PageObjects.common.findTestSubject('tab-sourceFilters')
.click();
await PageObjects.common.clickTestSubject('tab-sourceFilters');
}
async addScriptedField(name, language, type, format, popularity, script) {

View file

@ -306,8 +306,7 @@ export default class VisualizePage {
}
saveVisualization(vizName) {
return PageObjects.common.findTestSubject('visualizeSaveButton')
.click()
return PageObjects.common.clickTestSubject('visualizeSaveButton')
.then(() => {
return PageObjects.common.sleep(1000);
})
@ -321,8 +320,7 @@ export default class VisualizePage {
// // click save button
.then(() => {
PageObjects.common.debug('click submit button');
return PageObjects.common.findTestSubject('saveVisualizationButton')
.click();
return PageObjects.common.clickTestSubject('saveVisualizationButton');
})
.then(function () {
return PageObjects.header.waitUntilLoadingHasFinished();