Add 5 tests for Discover shared links
This commit is contained in:
parent
696d50c0f2
commit
82d993adff
6 changed files with 196 additions and 2 deletions
|
@ -272,7 +272,7 @@ define(function (require) {
|
|||
var hasFailure = false;
|
||||
for (var y = 0; y < expectedBarChartData.length; y++) {
|
||||
stringResults += y + ': expected = ' + expectedBarChartData[y] + ', actual = ' + paths[y] +
|
||||
', Pass = ' + (Math.abs(expectedBarChartData[y] - paths[y]) < barHeightTolerance);
|
||||
', Pass = ' + (Math.abs(expectedBarChartData[y] - paths[y]) < barHeightTolerance) + '\n';
|
||||
if ((Math.abs(expectedBarChartData[y] - paths[y]) > barHeightTolerance)) {
|
||||
hasFailure = true;
|
||||
};
|
||||
|
|
143
test/functional/apps/discover/_shared_links.js
Normal file
143
test/functional/apps/discover/_shared_links.js
Normal file
|
@ -0,0 +1,143 @@
|
|||
define(function (require) {
|
||||
var Common = require('../../../support/pages/Common');
|
||||
var HeaderPage = require('../../../support/pages/HeaderPage');
|
||||
var SettingsPage = require('../../../support/pages/settings_page');
|
||||
var DiscoverPage = require('../../../support/pages/DiscoverPage');
|
||||
var expect = require('intern/dojo/node!expect.js');
|
||||
|
||||
return function (bdd, scenarioManager) {
|
||||
bdd.describe('shared links', function describeIndexTests() {
|
||||
var common;
|
||||
var headerPage;
|
||||
var settingsPage;
|
||||
var discoverPage;
|
||||
var baseUrl;
|
||||
|
||||
bdd.before(function () {
|
||||
common = new Common(this.remote);
|
||||
headerPage = new HeaderPage(this.remote);
|
||||
settingsPage = new SettingsPage(this.remote);
|
||||
discoverPage = new DiscoverPage(this.remote);
|
||||
|
||||
baseUrl = common.getHostPort();
|
||||
// baseUrl = 'http://localhost:5620';
|
||||
|
||||
var fromTime = '2015-09-19 06:31:44.000';
|
||||
var toTime = '2015-09-23 18:31:44.000';
|
||||
|
||||
// start each test with an empty kibana index
|
||||
return scenarioManager.reload('emptyKibana')
|
||||
// and load a set of makelogs data
|
||||
.then(function loadIfEmptyMakelogs() {
|
||||
return scenarioManager.loadIfEmpty('logstashFunctional');
|
||||
})
|
||||
.then(function (navigateTo) {
|
||||
common.debug('navigateTo');
|
||||
return settingsPage.navigateTo();
|
||||
})
|
||||
.then(function () {
|
||||
common.debug('createIndexPattern');
|
||||
return settingsPage.createIndexPattern();
|
||||
})
|
||||
.then(function () {
|
||||
common.debug('discover');
|
||||
return common.navigateToApp('discover');
|
||||
})
|
||||
.then(function () {
|
||||
common.debug('setAbsoluteRange');
|
||||
return headerPage.setAbsoluteRange(fromTime, toTime);
|
||||
})
|
||||
.catch(common.handleError(this));
|
||||
});
|
||||
|
||||
|
||||
bdd.describe('shared link', function () {
|
||||
var queryName1 = 'Query # 1';
|
||||
var fromTimeString = 'September 19th 2015, 06:31:44.000';
|
||||
var toTimeString = 'September 23rd 2015, 18:31:44.000';
|
||||
|
||||
bdd.it('should show "Share a link" caption', function () {
|
||||
var expectedCaption = 'Share a link';
|
||||
return discoverPage.clickShare()
|
||||
.then(function () {
|
||||
return discoverPage.getShareCaption();
|
||||
})
|
||||
.then(function (actualCaption) {
|
||||
expect(actualCaption).to.be(expectedCaption);
|
||||
})
|
||||
.catch(common.handleError(this));
|
||||
});
|
||||
|
||||
|
||||
bdd.it('should show the correct formatted URL', function () {
|
||||
// this is a BAD URL which includes the nav bar
|
||||
var expectedUrl = baseUrl
|
||||
+ '/app/kibana?_t=1453775307251#'
|
||||
+ '/discover?_g=(refreshInterval:(display:Off,pause:!f,value:0),time'
|
||||
+ ':(from:%272015-09-19T06:31:44.000Z%27,mode:absolute,to:%272015-09'
|
||||
+ '-23T18:31:44.000Z%27))&_a=(columns:!(_source),index:%27logstash-'
|
||||
+ '*%27,interval:auto,query:(query_string:(analyze_wildcard:!t,query'
|
||||
+ ':%27*%27)),sort:!(%27@timestamp%27,desc))';
|
||||
return discoverPage.getSharedUrl()
|
||||
.then(function (actualUrl) {
|
||||
// strip the timestamp out of each URL
|
||||
expect(actualUrl.replace(/_t=\d{13}/,'_t=TIMESTAMP'))
|
||||
|
||||
.to.be(expectedUrl.replace(/_t=\d{13}/,'_t=TIMESTAMP'));
|
||||
})
|
||||
.catch(common.handleError(this));
|
||||
});
|
||||
|
||||
bdd.it('should show toast message for copy to clipboard', function () {
|
||||
var expectedMsg = 'Share search: URL copied to clipboard.';
|
||||
return discoverPage.clickCopyToClipboard()
|
||||
.then(function () {
|
||||
return headerPage.getToastMessage();
|
||||
})
|
||||
.then(function (toastMessage) {
|
||||
expect(toastMessage).to.be(expectedMsg);
|
||||
})
|
||||
.then(function () {
|
||||
return headerPage.waitForToastMessageGone();
|
||||
})
|
||||
.catch(common.handleError(this));
|
||||
});
|
||||
|
||||
// TODO: verify clipboard contents
|
||||
|
||||
bdd.it('shorten URL button should produce a short URL', function () {
|
||||
var re = new RegExp(baseUrl + '/goto/[0-9a-f]{32}$');
|
||||
return discoverPage.clickShortenUrl()
|
||||
.then(function () {
|
||||
return common.tryForTime(20 * 1000, function tryingForTime() {
|
||||
return discoverPage.getShortenedUrl()
|
||||
.then(function (actualUrl) {
|
||||
expect(actualUrl).to.match(re);
|
||||
});
|
||||
});
|
||||
})
|
||||
.catch(common.handleError(this));
|
||||
});
|
||||
|
||||
// NOTE: This test has to run immediately after the test above
|
||||
// 'shorten URL button should produce a short URL'
|
||||
bdd.it('should show toast message for copy to clipboard', function () {
|
||||
var expectedMsg = 'Share search: URL copied to clipboard.';
|
||||
return discoverPage.clickCopyToClipboard()
|
||||
.then(function () {
|
||||
return headerPage.getToastMessage();
|
||||
})
|
||||
.then(function (toastMessage) {
|
||||
expect(toastMessage).to.be(expectedMsg);
|
||||
})
|
||||
.then(function () {
|
||||
return headerPage.waitForToastMessageGone();
|
||||
})
|
||||
.catch(common.handleError(this));
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
});
|
||||
};
|
||||
});
|
|
@ -5,6 +5,7 @@ define(function (require) {
|
|||
var ScenarioManager = require('intern/dojo/node!../../../fixtures/scenarioManager');
|
||||
var discoverTest = require('./_discover');
|
||||
var fieldData = require('./_field_data');
|
||||
var sharedLinks = require('./_shared_links');
|
||||
|
||||
bdd.describe('discover app', function () {
|
||||
var scenarioManager;
|
||||
|
@ -25,5 +26,7 @@ define(function (require) {
|
|||
|
||||
fieldData(bdd, scenarioManager);
|
||||
|
||||
sharedLinks(bdd, scenarioManager);
|
||||
|
||||
});
|
||||
});
|
||||
|
|
|
@ -51,6 +51,10 @@ define(function (require) {
|
|||
Common.prototype = {
|
||||
constructor: Common,
|
||||
|
||||
getHostPort: function getHostPort() {
|
||||
return getUrl.baseUrl(config.servers.kibana);
|
||||
},
|
||||
|
||||
navigateToApp: function (appName, testStatusPage) {
|
||||
var self = this;
|
||||
// navUrl includes user:password@ for use with Shield
|
||||
|
|
|
@ -175,6 +175,42 @@ define(function (require) {
|
|||
return thisTime
|
||||
.findAllByCssSelector('mark')
|
||||
.getVisibleText();
|
||||
},
|
||||
|
||||
clickShare: function clickShare() {
|
||||
return thisTime
|
||||
.findByCssSelector('button[aria-label="Share Search"]')
|
||||
.click();
|
||||
},
|
||||
|
||||
clickShortenUrl: function clickShortenUrl() {
|
||||
return thisTime
|
||||
.findByCssSelector('button.shorten-button')
|
||||
.click();
|
||||
},
|
||||
|
||||
clickCopyToClipboard: function clickCopyToClipboard() {
|
||||
return thisTime
|
||||
.findByCssSelector('button.clipboard-button')
|
||||
.click();
|
||||
},
|
||||
|
||||
getShareCaption: function getShareCaption() {
|
||||
return thisTime
|
||||
.findByCssSelector('div.form-group > label')
|
||||
.getVisibleText();
|
||||
},
|
||||
|
||||
getSharedUrl: function getSharedUrl() {
|
||||
return thisTime
|
||||
.findByCssSelector('.url')
|
||||
.getProperty('baseURI');
|
||||
},
|
||||
|
||||
getShortenedUrl: function getShortenedUrl() {
|
||||
return thisTime
|
||||
.findByCssSelector('.url')
|
||||
.getProperty('value');
|
||||
}
|
||||
|
||||
};
|
||||
|
|
|
@ -8,7 +8,8 @@ var url = require('url');
|
|||
* {
|
||||
* protocol: 'http',
|
||||
* hostname: 'localhost',
|
||||
* port: 9220
|
||||
* port: 9220,
|
||||
* auth: shield.kibanaUser.username + ':' + shield.kibanaUser.password
|
||||
* }
|
||||
* @param {object} app The params to append
|
||||
* example:
|
||||
|
@ -31,3 +32,10 @@ getUrl.noAuth = function getUrlNoAuth(config, app) {
|
|||
});
|
||||
return getUrl(config, app);
|
||||
};
|
||||
|
||||
getUrl.baseUrl = function getBaseUrl(config) {
|
||||
config = _.pick(config, function (val, param) {
|
||||
return param !== 'auth' & param !== 'pathname' & param !== 'hash';
|
||||
});
|
||||
return url.format(config);
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue