diff --git a/test/functional/apps/context/_filters.js b/test/functional/apps/context/_filters.js index 4b71ca4909b4..8cc65e7fc01d 100644 --- a/test/functional/apps/context/_filters.js +++ b/test/functional/apps/context/_filters.js @@ -64,6 +64,8 @@ export default function ({ getService, getPageObjects }) { it('should be toggleable via the filter bar', async function () { const table = await docTable.getTable(); await filterBar.addFilter(TEST_ANCHOR_FILTER_FIELD, 'IS', TEST_ANCHOR_FILTER_VALUE); + await PageObjects.context.waitUntilContextLoadingHasFinished(); + // disable filter await filterBar.toggleFilterEnabled(TEST_ANCHOR_FILTER_FIELD); await PageObjects.context.waitUntilContextLoadingHasFinished(); diff --git a/test/functional/apps/context/index.js b/test/functional/apps/context/index.js index d925269dd434..e912bafa68f2 100644 --- a/test/functional/apps/context/index.js +++ b/test/functional/apps/context/index.js @@ -21,12 +21,15 @@ export default function ({ getService, getPageObjects, loadTestFile }) { const remote = getService('remote'); const esArchiver = getService('esArchiver'); const PageObjects = getPageObjects(['common']); + const kibanaServer = getService('kibanaServer'); describe('context app', function () { before(async function () { await remote.setWindowSize(1200, 800); await esArchiver.loadIfNeeded('logstash_functional'); await esArchiver.load('visualize'); + await kibanaServer.uiSettings.replace({ 'dateFormat:tz': 'UTC', 'defaultIndex': 'logstash-*', + 'telemetry:optIn': false }); await PageObjects.common.navigateToApp('discover'); }); diff --git a/test/functional/page_objects/context_page.js b/test/functional/page_objects/context_page.js index 58d40a29c4ba..8126d4f3614b 100644 --- a/test/functional/page_objects/context_page.js +++ b/test/functional/page_objects/context_page.js @@ -45,6 +45,7 @@ export function ContextPageProvider({ getService, getPageObjects }) { }); await remote.get(appUrl); + await PageObjects.header.awaitGlobalLoadingIndicatorHidden(); await this.waitUntilContextLoadingHasFinished(); // For lack of a better way, using a sleep to ensure page is loaded before proceeding await PageObjects.common.sleep(1000); @@ -72,6 +73,7 @@ export function ContextPageProvider({ getService, getPageObjects }) { const predecessorButton = await this.getPredecessorLoadMoreButton(); await predecessorButton.click(); }); + await this.waitUntilContextLoadingHasFinished(); await PageObjects.header.waitUntilLoadingHasFinished(); } @@ -81,6 +83,7 @@ export function ContextPageProvider({ getService, getPageObjects }) { const sucessorButton = await this.getSuccessorLoadMoreButton(); await sucessorButton.click(); }); + await this.waitUntilContextLoadingHasFinished(); await PageObjects.header.waitUntilLoadingHasFinished(); } diff --git a/test/functional/page_objects/discover_page.js b/test/functional/page_objects/discover_page.js index 4aac982f6689..c717f100079d 100644 --- a/test/functional/page_objects/discover_page.js +++ b/test/functional/page_objects/discover_page.js @@ -289,25 +289,28 @@ export function DiscoverPageProvider({ getService, getPageObjects }) { }); } - clickFieldListPlusFilter(field, value) { + async clickFieldListPlusFilter(field, value) { // this method requires the field details to be open from clickFieldListItem() // testSubjects.find doesn't handle spaces in the data-test-subj value - return getRemote() + await getRemote() .findByCssSelector(`[data-test-subj="plus-${field}-${value}"]`) .click(); + await PageObjects.header.waitUntilLoadingHasFinished(); } - clickFieldListMinusFilter(field, value) { + async clickFieldListMinusFilter(field, value) { // this method requires the field details to be open from clickFieldListItem() // testSubjects.find doesn't handle spaces in the data-test-subj value - return getRemote() + await getRemote() .findByCssSelector('[data-test-subj="minus-' + field + '-' + value + '"]') .click(); + await PageObjects.header.waitUntilLoadingHasFinished(); } async selectIndexPattern(indexPattern) { await getRemote().findByClassName('index-pattern-selection').click(); await getRemote().findByClassName('ui-select-search').type(indexPattern + '\n'); + await PageObjects.header.waitUntilLoadingHasFinished(); } async removeAllFilters() { diff --git a/test/functional/page_objects/header_page.js b/test/functional/page_objects/header_page.js index 450c28add724..0e914ef6b14d 100644 --- a/test/functional/page_objects/header_page.js +++ b/test/functional/page_objects/header_page.js @@ -268,6 +268,11 @@ export function HeaderPageProvider({ getService, getPageObjects }) { await testSubjects.find('globalLoadingIndicator-hidden', defaultFindTimeout * 10); } + async awaitKibanaChrome() { + log.debug('awaitKibanaChrome'); + await testSubjects.find('kibanaChrome', defaultFindTimeout * 10); + } + async getGlobalNavigationLink(linkText) { const nav = await testSubjects.find('globalNav'); return await nav.findByPartialLinkText(linkText); diff --git a/test/functional/page_objects/settings_page.js b/test/functional/page_objects/settings_page.js index 55d64b3ae18a..cd09a81cdb98 100644 --- a/test/functional/page_objects/settings_page.js +++ b/test/functional/page_objects/settings_page.js @@ -18,6 +18,8 @@ */ import { map as mapAsync } from 'bluebird'; +import expect from 'expect.js'; + export function SettingsPageProvider({ getService, getPageObjects }) { const log = getService('log'); const retry = getService('retry'); @@ -273,7 +275,9 @@ export function SettingsPageProvider({ getService, getPageObjects }) { await this.navigateTo(); await this.clickKibanaIndices(); await this.clickOptionalAddNewButton(); - await this.setIndexPatternField(indexPatternName); + await retry.try(async () => { + await this.setIndexPatternField(indexPatternName); + }); await PageObjects.common.sleep(2000); await (await this.getCreateIndexPatternGoToStep2Button()).click(); await PageObjects.common.sleep(2000); @@ -323,6 +327,9 @@ export function SettingsPageProvider({ getService, getPageObjects }) { const field = await this.getIndexPatternField(); await field.clearValue(); await field.type(indexPatternName); + const currentName = await field.getAttribute('value'); + log.debug(`setIndexPatternField set to ${currentName}`); + expect(currentName).to.eql(`${indexPatternName}*`); } async getCreateIndexPatternGoToStep2Button() { diff --git a/test/functional/services/doc_table.js b/test/functional/services/doc_table.js index aa44139c80eb..5992ee7c5e57 100644 --- a/test/functional/services/doc_table.js +++ b/test/functional/services/doc_table.js @@ -17,9 +17,11 @@ * under the License. */ -export function DocTableProvider({ getService }) { +export function DocTableProvider({ getService, getPageObjects }) { const testSubjects = getService('testSubjects'); const retry = getService('retry'); + const PageObjects = getPageObjects(['common', 'header']); + class DocTable { async getTable() { @@ -70,11 +72,13 @@ export function DocTableProvider({ getService }) { const tableDocViewRow = await this.getTableDocViewRow(detailsRow, fieldName); const addInclusiveFilterButton = await this.getAddInclusiveFilterButton(tableDocViewRow); await addInclusiveFilterButton.click(); + await PageObjects.header.awaitGlobalLoadingIndicatorHidden(); } async toggleRowExpanded(row) { const rowExpandToggle = await this.getRowExpandToggle(row); await rowExpandToggle.click(); + await PageObjects.header.awaitGlobalLoadingIndicatorHidden(); const detailsRow = await row.findByXpath('./following-sibling::*[@data-test-subj="docTableDetailsRow"]'); return await retry.try(async () => { diff --git a/test/functional/services/filter_bar.js b/test/functional/services/filter_bar.js index 2abfd93b8fd1..d722e638dba4 100644 --- a/test/functional/services/filter_bar.js +++ b/test/functional/services/filter_bar.js @@ -19,10 +19,11 @@ import Keys from 'leadfoot/keys'; -export function FilterBarProvider({ getService }) { +export function FilterBarProvider({ getService, getPageObjects }) { const remote = getService('remote'); const testSubjects = getService('testSubjects'); const find = getService('find'); + const PageObjects = getPageObjects(['common', 'header']); async function typeIntoReactSelect(testSubj, value) { const select = await testSubjects.find(testSubj); @@ -44,12 +45,14 @@ export function FilterBarProvider({ getService }) { const filterElement = await testSubjects.find(`filter & filter-key-${key}`); await remote.moveMouseTo(filterElement); await testSubjects.click(`filter & filter-key-${key} removeFilter-${key}`); + await PageObjects.header.awaitGlobalLoadingIndicatorHidden(); } async toggleFilterEnabled(key) { const filterElement = await testSubjects.find(`filter & filter-key-${key}`); await remote.moveMouseTo(filterElement); await testSubjects.click(`filter & filter-key-${key} disableFilter-${key}`); + await PageObjects.header.awaitGlobalLoadingIndicatorHidden(); } async toggleFilterPinned(key) { @@ -93,6 +96,7 @@ export function FilterBarProvider({ getService }) { } } await testSubjects.click('saveFilter'); + await PageObjects.header.awaitGlobalLoadingIndicatorHidden(); } async clickEditFilter(key, value) {