refactor tests

use new navigation helpers, change location of some tests, clean up setup and teardown to speed things up
This commit is contained in:
Joe Fleming 2015-11-05 15:32:42 -07:00
parent 626fbe4276
commit 3faa130d67
9 changed files with 174 additions and 220 deletions

View file

@ -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));
});
});
};
});

View file

@ -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));
});
});
};
});

View file

@ -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));
});
});
});
};
});

View file

@ -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
};
});

View file

@ -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
};
});

View file

@ -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));
});
});
};
});

View file

@ -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;
});
});
});
};
});

View file

@ -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);
});
});

View file

@ -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) {