diff --git a/test/functional/apps/settings/_create_button.js b/test/functional/apps/settings/_create_button.js deleted file mode 100644 index 1f56ebf13c70..000000000000 --- a/test/functional/apps/settings/_create_button.js +++ /dev/null @@ -1,37 +0,0 @@ -define(function (require) { - var Common = require('../../../support/pages/Common'); - var SettingsPage = require('../../../support/pages/SettingsPage'); - var expect = require('intern/dojo/node!expect.js'); - - return function (bdd) { - bdd.describe('create button states', function () { - var common; - var settingsPage; - - bdd.before(function () { - common = new Common(this.remote); - settingsPage = new SettingsPage(this.remote); - }); - - bdd.it('should not be initially enabled', function () { - return settingsPage.getCreateButton().isEnabled() - .then(function (enabled) { - expect(enabled).to.not.be.ok(); - }) - .catch(common.handleError(this)); - }); - - bdd.it('should be enabled after selecting time field option', function () { - // select a time field and check that Create button is enabled - return settingsPage.selectTimeFieldOption('@timestamp') - .then(function () { - return settingsPage.getCreateButton().isEnabled() - .then(function (enabled) { - expect(enabled).to.be.ok(); - }); - }) - .catch(common.handleError(this)); - }); - }); - }; -}); diff --git a/test/functional/apps/settings/_creation_form_changes.js b/test/functional/apps/settings/_creation_form_changes.js new file mode 100644 index 000000000000..3932fc98e661 --- /dev/null +++ b/test/functional/apps/settings/_creation_form_changes.js @@ -0,0 +1,59 @@ +define(function (require) { + var Common = require('../../../support/pages/Common'); + var SettingsPage = require('../../../support/pages/SettingsPage'); + var expect = require('intern/dojo/node!expect.js'); + + return function (bdd, scenarioManager) { + bdd.describe('user input reactions', function () { + var common; + var settingsPage; + + bdd.before(function () { + common = new Common(this.remote); + settingsPage = new SettingsPage(this.remote); + }); + + bdd.beforeEach(function () { + return scenarioManager.reload('emptyKibana') + .then(function () { + return settingsPage.navigateTo(); + }); + }); + + bdd.it('should hide time-based index pattern when time-based option is unchecked', function () { + var self = this; + return settingsPage.getTimeBasedEventsCheckbox() + .then(function (selected) { + // uncheck the 'time-based events' checkbox + return selected.click(); + }) + // try to find the checkbox (this shouldn fail) + .then(function () { + return settingsPage.getTimeBasedIndexPatternCheckbox(); + }) + .then(function () { + // we expect the promise above to fail + var handler = common.handleError(self); + var msg = 'Found time based index pattern checkbox'; + handler(msg); + }) + .catch(function () { + // we expect this failure since checkbox should be hidden + return; + }); + }); + + bdd.it('should be enable creation after selecting time field', function () { + // select a time field and check that Create button is enabled + return settingsPage.selectTimeFieldOption('@timestamp') + .then(function () { + return settingsPage.getCreateButton().isEnabled() + .then(function (enabled) { + expect(enabled).to.be.ok(); + }); + }) + .catch(common.handleError(this)); + }); + }); + }; +}); diff --git a/test/functional/apps/settings/_index_pattern_create_delete.js b/test/functional/apps/settings/_index_pattern_create_delete.js index de2c70303c40..4e33b9994189 100644 --- a/test/functional/apps/settings/_index_pattern_create_delete.js +++ b/test/functional/apps/settings/_index_pattern_create_delete.js @@ -4,7 +4,7 @@ define(function (require) { var expect = require('intern/dojo/node!expect.js'); var Promise = require('bluebird'); - return function (bdd) { + return function (bdd, scenarioManager) { bdd.describe('creating and deleting default index', function describeIndexTests() { var common; var settingsPage; @@ -14,21 +14,18 @@ define(function (require) { common = new Common(this.remote); settingsPage = new SettingsPage(this.remote); remote = this.remote; + + return scenarioManager.reload('emptyKibana') + .then(function () { + return settingsPage.navigateTo(); + }); }); bdd.describe('index pattern creation', function indexPatternCreation() { - bdd.beforeEach(function be() { + bdd.before(function () { return settingsPage.createIndexPattern(); }); - bdd.afterEach(function ae() { - var expectedAlertText = 'Are you sure you want to remove this index pattern?'; - return settingsPage.removeIndexPattern() - .then(function (alertText) { - expect(alertText).to.be(expectedAlertText); - }); - }); - bdd.it('should have index pattern in page header', function pageHeader() { return settingsPage.getIndexPageHeading().getVisibleText() .then(function (patternName) { @@ -75,12 +72,12 @@ define(function (require) { }); }); - bdd.describe('index pattern deletion', function indexDelete() { - bdd.beforeEach(function be() { - return settingsPage.createIndexPattern() - .then(function () { - return settingsPage.removeIndexPattern(); + bdd.before(function () { + var expectedAlertText = 'Are you sure you want to remove this index pattern?'; + return settingsPage.removeIndexPattern() + .then(function (alertText) { + expect(alertText).to.be(expectedAlertText); }); }); @@ -99,7 +96,6 @@ define(function (require) { .catch(common.handleError(this)); }); }); - }); }; }); diff --git a/test/functional/apps/settings/_index_pattern_popularity.js b/test/functional/apps/settings/_index_pattern_popularity.js index b7afff556588..ec09d29ee5e0 100644 --- a/test/functional/apps/settings/_index_pattern_popularity.js +++ b/test/functional/apps/settings/_index_pattern_popularity.js @@ -4,7 +4,7 @@ define(function (require) { var expect = require('intern/dojo/node!expect.js'); //var Promise = require('bluebird'); - return function (bdd) { + return function (bdd, scenarioManager) { bdd.describe('index result popularity', function describeIndexTests() { var common; var settingsPage; @@ -14,6 +14,11 @@ define(function (require) { common = new Common(this.remote); settingsPage = new SettingsPage(this.remote); remote = this.remote; + + return scenarioManager.reload('emptyKibana') + .then(function () { + return settingsPage.navigateTo(); + }); }); bdd.beforeEach(function be() { @@ -28,7 +33,7 @@ define(function (require) { var fieldName = 'geo.coordinates'; // set the page size to All again, https://github.com/elastic/kibana/issues/5030 - // TODO: remove this after #5030 is closed + // TODO: remove this after issue #5030 is closed function fix5030() { return settingsPage.setPageSize('All') .then(function () { @@ -65,7 +70,6 @@ define(function (require) { bdd.it('should be reset on cancel', function pageHeader() { // Cancel saving the popularity change - return settingsPage.controlChangeCancel() .then(function () { return fix5030(); @@ -101,9 +105,7 @@ define(function (require) { }) .catch(common.handleError(this)); }); - }); // end 'change popularity' - }); // end index result popularity }; }); diff --git a/test/functional/apps/settings/_index_pattern_results_sort.js b/test/functional/apps/settings/_index_pattern_results_sort.js index 557b221d2098..945011cc3d5b 100644 --- a/test/functional/apps/settings/_index_pattern_results_sort.js +++ b/test/functional/apps/settings/_index_pattern_results_sort.js @@ -4,7 +4,7 @@ define(function (require) { var expect = require('intern/dojo/node!expect.js'); var Promise = require('bluebird'); - return function (bdd) { + return function (bdd, scenarioManager) { bdd.describe('index result field sort', function describeIndexTests() { var common; var settingsPage; @@ -13,88 +13,90 @@ define(function (require) { bdd.before(function () { common = new Common(this.remote); settingsPage = new SettingsPage(this.remote); - remote = this.remote; + remote = this.remote + + return scenarioManager.reload('emptyKibana') }); - bdd.beforeEach(function be() { - return settingsPage.createIndexPattern(); - }); + var columns = [{ + heading: 'name', + first: '@message', + last: 'xss.raw', + selector: function () { + return settingsPage.getTableRow(0, 0).getVisibleText() + } + }, { + heading: 'type', + first: '_source', + last: 'string', + selector: function () { + return settingsPage.getTableRow(0, 1).getVisibleText() + } + }]; - bdd.afterEach(function ae() { - return settingsPage.removeIndexPattern(); - }); + columns.forEach(function (col) { + bdd.describe('sort by heading - ' + col.heading, function indexPatternCreation() { + bdd.before(function () { + return settingsPage.navigateTo() + }); + bdd.beforeEach(function () { + return settingsPage.createIndexPattern(); + }); - bdd.describe('sort by name', function indexPatternCreation() { + bdd.afterEach(function () { + return settingsPage.removeIndexPattern(); + }); - bdd.it('should sort ascending', function pageHeader() { - return settingsPage.sortBy('name') - .then(function getText() { - return settingsPage.getTableRow(0, 0).getVisibleText(); - }) - .then(function (rowText) { - expect(rowText).to.be('@message'); - }) - .catch(common.handleError(this)); - }); + bdd.it('should sort ascending, then descending', function pageHeader() { + return settingsPage.sortBy(col.heading) + .then(function getText() { + return col.selector(); + }) + .then(function (rowText) { + expect(rowText).to.be(col.first); + }) + .catch(common.handleError(this)); + }); - bdd.it('should sort descending', function pageHeader() { - return settingsPage.sortBy('name') - .then(function sortAgain() { - return settingsPage.sortBy('name'); - }) - .then(function getText() { - return settingsPage.getTableRow(0, 0).getVisibleText(); - }) - .then(function (rowText) { - expect(rowText).to.be('xss.raw'); - }) - .catch(common.handleError(this)); + bdd.it('should sort descending', function pageHeader() { + return settingsPage.sortBy(col.heading) + .then(function sortAgain() { + return settingsPage.sortBy(col.heading); + }) + .then(function getText() { + return col.selector(); + }) + .then(function (rowText) { + expect(rowText).to.be(col.last); + }) + .catch(common.handleError(this)); + }); }); }); - bdd.describe('sort by type', function indexPatternCreation() { - - bdd.it('should sort ascending', function pageHeader() { - return settingsPage.sortBy('type') - .then(function getText() { - return settingsPage.getTableRow(0, 1).getVisibleText(); - }) - .then(function (rowText) { - expect(rowText).to.be('_source'); - }) - .catch(common.handleError(this)); - }); - - bdd.it('should sort descending', function pageHeader() { - return settingsPage.sortBy('type') - .then(function sortAgain() { - return settingsPage.sortBy('type'); - }) - .then(function getText() { - return settingsPage.getTableRow(0, 1).getVisibleText(); - }) - .then(function (rowText) { - expect(rowText).to.be('string'); - }) - .catch(common.handleError(this)); - }); - }); - - bdd.describe('pagination', function () { + bdd.describe('field list pagination', function () { var expectedDefaultPageSize = 25; var expectedFieldCount = 85; var expectedLastPageCount = 10; var pages = [1, 2, 3, 4]; - bdd.it('makelogs data should have expected number of fields', function () { - return common.sleep(1000) + bdd.before(function () { + return settingsPage.navigateTo() .then(function () { - return common.tryForTime(5000, function () { - return settingsPage.getFieldsTabCount() - .then(function (tabCount) { - expect(tabCount).to.be('' + expectedFieldCount); - }); + return settingsPage.createIndexPattern(); + }); + }); + + bdd.after(function () { + return settingsPage.removeIndexPattern(); + }); + + bdd.it('makelogs data should have expected number of fields', function () { + return common.tryForTime(15000, function () { + return settingsPage.getFieldsTabCount() + .then(function (tabCount) { + expect(tabCount).to.be('' + expectedFieldCount); }); }) .catch(common.handleError(this)); @@ -128,9 +130,7 @@ define(function (require) { return chain.catch(common.handleError(this)); }); - }); // end describe pagination - }); // end index result field sort }; }); diff --git a/test/functional/apps/settings/_initial_state.js b/test/functional/apps/settings/_initial_state.js index 948eb415d162..304d7197b0e6 100644 --- a/test/functional/apps/settings/_initial_state.js +++ b/test/functional/apps/settings/_initial_state.js @@ -1,9 +1,9 @@ define(function (require) { + var expect = require('intern/dojo/node!expect.js'); var Common = require('../../../support/pages/Common'); var SettingsPage = require('../../../support/pages/SettingsPage'); - var expect = require('intern/dojo/node!expect.js'); - return function (bdd) { + return function (bdd, scenarioManager) { bdd.describe('initial state', function () { var common; var settingsPage; @@ -11,6 +11,11 @@ define(function (require) { bdd.before(function () { common = new Common(this.remote); settingsPage = new SettingsPage(this.remote); + + return scenarioManager.reload('emptyKibana') + .then(function () { + return settingsPage.navigateTo(); + }); }); bdd.it('should load with time pattern checked', function () { @@ -22,7 +27,7 @@ define(function (require) { }); bdd.it('should load with name pattern unchecked', function () { - return settingsPage.getNameIsPatternCheckbox().isSelected() + return settingsPage.getTimeBasedIndexPatternCheckbox().isSelected() .then(function (selected) { expect(selected).to.not.be.ok(); }) @@ -46,6 +51,14 @@ define(function (require) { }) .catch(common.handleError(this)); }); + + bdd.it('should not be enable creation', function () { + return settingsPage.getCreateButton().isEnabled() + .then(function (enabled) { + expect(enabled).to.not.be.ok(); + }) + .catch(common.handleError(this)); + }); }); }; }); diff --git a/test/functional/apps/settings/_name_pattern_checkbox.js b/test/functional/apps/settings/_name_pattern_checkbox.js deleted file mode 100644 index 2e6f93b30117..000000000000 --- a/test/functional/apps/settings/_name_pattern_checkbox.js +++ /dev/null @@ -1,41 +0,0 @@ -define(function (require) { - var Common = require('../../../support/pages/Common'); - var SettingsPage = require('../../../support/pages/SettingsPage'); - var expect = require('intern/dojo/node!expect.js'); - - return function (bdd) { - bdd.describe('name is pattern checkbox', function () { - var common; - var settingsPage; - - bdd.before(function () { - common = new Common(this.remote); - settingsPage = new SettingsPage(this.remote); - }); - - bdd.it('should be hidden with time based unchecked', function () { - var self = this; - return settingsPage.getTimeBasedEventsCheckbox() - .then(function (selected) { - // uncheck the 'time-based events' checkbox - return selected.click(); - }) - // try to find the name is pattern checkbox (shouldn't find it) - .then(function () { - return settingsPage.getNameIsPatternCheckbox(); - }) - .then(function () { - // we expect the promise above to fail - var handler = common.handleError(self); - handler( - 'Did not expect to find the Name is Pattern checkbox when the TimeBasedEvents checkbox is unchecked' - ); - }) - .catch(function () { - // we expect this failure since the 'name is pattern' checkbox should be hidden - return; - }); - }); - }); - }; -}); diff --git a/test/functional/apps/settings/index.js b/test/functional/apps/settings/index.js index 96f61a352a23..bf3234487e6d 100644 --- a/test/functional/apps/settings/index.js +++ b/test/functional/apps/settings/index.js @@ -1,57 +1,25 @@ define(function (require) { var bdd = require('intern!bdd'); - var expect = require('intern/dojo/node!expect.js'); var config = require('intern').config; var url = require('intern/dojo/node!url'); - var _ = require('intern/dojo/node!lodash'); - var Common = require('../../../support/pages/Common'); var ScenarioManager = require('intern/dojo/node!../../../fixtures/scenarioManager'); var initialStateTest = require('./_initial_state'); - var createButtonTest = require('./_create_button'); - var namePatternCheckboxTest = require('./_name_pattern_checkbox'); + var creationChangesTest = require('./_creation_form_changes'); var indexPatternCreateDeleteTest = require('./_index_pattern_create_delete'); var indexPatternResultsSortTest = require('./_index_pattern_results_sort'); var indexPatternPopularityTest = require('./_index_pattern_popularity'); bdd.describe('settings app', function () { - var common; - var scenarioManager; - var remote; - - function checkForSettingsUrl() { - return common.tryForTime(25000, function () { - return remote.get(url.format(_.assign(config.servers.kibana, { - pathname: '' - }))) - .then(function () { - // give angular enough time to update the URL - return common.sleep(2000); - }) - .then(function () { - return remote.getCurrentUrl() - .then(function (currentUrl) { - expect(currentUrl).to.contain('settings'); - }); - }); - }); - } + var scenarioManager = new ScenarioManager(url.format(config.servers.elasticsearch)); // on setup, we create an settingsPage instance // that we will use for all the tests bdd.before(function () { - common = new Common(this.remote); - scenarioManager = new ScenarioManager(url.format(config.servers.elasticsearch)); - remote = this.remote; - - return scenarioManager.loadIfEmpty('makelogs'); - }); - - bdd.beforeEach(function () { return scenarioManager.reload('emptyKibana') .then(function () { - return checkForSettingsUrl(); - }); + return scenarioManager.loadIfEmpty('makelogs') + }) }); bdd.after(function () { @@ -61,16 +29,10 @@ define(function (require) { }); }); - initialStateTest(bdd); - - createButtonTest(bdd); - - namePatternCheckboxTest(bdd); - - indexPatternCreateDeleteTest(bdd); - - indexPatternResultsSortTest(bdd); - - indexPatternPopularityTest(bdd); + initialStateTest(bdd, scenarioManager); + creationChangesTest(bdd, scenarioManager); + indexPatternCreateDeleteTest(bdd, scenarioManager); + indexPatternResultsSortTest(bdd, scenarioManager); + indexPatternPopularityTest(bdd, scenarioManager); }); }); diff --git a/test/support/pages/SettingsPage.js b/test/support/pages/SettingsPage.js index 0f824cbfc545..d6e3819b0247 100644 --- a/test/support/pages/SettingsPage.js +++ b/test/support/pages/SettingsPage.js @@ -26,7 +26,7 @@ define(function (require) { .findByCssSelector('input[ng-model="index.isTimeBased"]'); }, - getNameIsPatternCheckbox: function getNameIsPatternCheckbox() { + getTimeBasedIndexPatternCheckbox: function getTimeBasedIndexPatternCheckbox() { // fail faster since we're sometimes checking that it doesn't exist return this.remote.setFindTimeout(defaultTimeout / 2) .findByCssSelector('input[ng-model="index.nameIsPattern"]'); @@ -121,7 +121,7 @@ define(function (require) { }, getFieldsTabCount: function getFieldsTabCount() { - return this.remote.setFindTimeout(defaultTimeout) + return this.remote.setFindTimeout(defaultTimeout * 2) // passing in zero-based index, but adding 1 for css 1-based indexes .findByCssSelector('li.kbn-settings-tab.ng-scope.active a.ng-binding small.ng-binding').getVisibleText() .then(function (theText) {