Functional tests for the Getting Started page (#11850)

* Adding some more functionality to the Getting Started page object

* Using optOut method from Getting Started page object

* Adding functional tests for Getting Started page

This set of tests specifically tests the scenarios under which a user should or should not get redirected to the Getting Started page

* Adding log.debug message

* Conforming to HTML style guide

* Using new GettingStarted page object methods + opting out

* Adding test for nav being shown

* Removing unnecessary line

* Navigate to Discover expecting to be redirected to the Getting Started page

* Trying beforeEach instead of before

* Remove LS data index + load empty kibana index

* Removing unnecessary line

* Fixing order of operations
This commit is contained in:
Shaunak Kashyap 2017-05-23 07:09:04 -07:00
parent 83758f499a
commit ae16cb325e
5 changed files with 95 additions and 2 deletions

View file

@ -1,4 +1,7 @@
<div class="kuiViewContent gettingStartedContent" data-test-subj="gettingStartedContainer">
<div
class="kuiViewContent gettingStartedContent"
data-test-subj="gettingStartedContainer"
>
<div
ng-if="!gettingStarted.hasOptedOut()"

View file

@ -0,0 +1,78 @@
import expect from 'expect.js';
export default ({ getService, getPageObjects }) => {
const kibanaServer = getService('kibanaServer');
const esArchiver = getService('esArchiver');
const remote = getService('remote');
const log = getService('log');
const PageObjects = getPageObjects(['common', 'gettingStarted']);
describe('Getting Started page', () => {
describe('when no index patterns exist', () => {
beforeEach(async () => {
// delete .kibana index and then wait for Kibana to re-create it
await esArchiver.unload('logstash_functional');
await esArchiver.load('empty_kibana');
});
describe('when user has not opted out of Getting Started page', () => {
beforeEach(async () => {
// First, we navigate to *somewhere* in Kibana so the browser loads up Kibana. This allows us...
await PageObjects.common.navigateToUrl('discover', '');
// ... to remove the Getting Started page opt-out flag from local storage for the Kibana domain
await remote.deleteLocalStorageItem('kibana.isGettingStartedOptedOut');
});
it('redirects to the Getting Started page', async () => {
await PageObjects.common.navigateToUrl('discover', '');
await PageObjects.common.waitUntilUrlIncludes('getting_started');
const isLoaded = await PageObjects.gettingStarted.doesContainerExist();
expect(isLoaded).to.be(true);
});
});
describe('when user has opted out of Getting Started page', () => {
beforeEach(async () => {
await PageObjects.gettingStarted.optOut();
});
it('does not redirect to the Getting Started page', async () => {
await PageObjects.common.navigateToUrl('discover', '');
const isLoaded = await PageObjects.gettingStarted.doesContainerExist();
expect(isLoaded).to.be(false);
});
});
});
describe('when index patterns exist', () => {
beforeEach(async () => {
log.debug('load kibana index with default index pattern');
await esArchiver.load('discover');
await kibanaServer.uiSettings.replace({
'dateFormat:tz':'UTC',
'defaultIndex':'logstash-*'
});
});
it('does not redirect to the Getting Started page', async () => {
await PageObjects.common.navigateToUrl('discover', '');
const isLoaded = await PageObjects.gettingStarted.doesContainerExist();
expect(isLoaded).to.be(false);
});
describe('when a user directly navigates to the Getting Started page', () => {
beforeEach(async () => {
await PageObjects.gettingStarted.navigateTo();
});
it('the kibana chrome (which contains the global nav) is visible', async () => {
const isChromeVisible = await PageObjects.common.isChromeVisible();
expect(isChromeVisible).to.be(true);
});
});
});
});
};

View file

@ -24,6 +24,7 @@ export default function ({ getService, loadTestFile }) {
loadTestFile(require.resolve('./_scripted_fields'));
loadTestFile(require.resolve('./_index_pattern_filter'));
loadTestFile(require.resolve('./_scripted_fields_filter'));
loadTestFile(require.resolve('./_getting_started'));
});
}

View file

@ -266,6 +266,10 @@ export function CommonPageProvider({ getService, getPageObjects, getPageObject }
log.debug(`exists? ${exists}`);
return exists;
}
async isChromeVisible() {
return await testSubjects.exists('kibanaChrome');
}
}
return new CommonPage();

View file

@ -1,9 +1,11 @@
export function GettingStartedPageProvider({ getService }) {
export function GettingStartedPageProvider({ getService, getPageObjects }) {
const log = getService('log');
const retry = getService('retry');
const testSubjects = getService('testSubjects');
const PageObjects = getPageObjects(['common']);
class GettingStartedPage {
async doesContainerExist() {
return await testSubjects.exists('gettingStartedContainer');
@ -18,6 +20,11 @@ export function GettingStartedPageProvider({ getService }) {
}
});
}
async navigateTo() {
log.debug('Navigating directly to Getting Started page');
await PageObjects.common.navigateToUrl('settings', 'kibana/getting_started');
}
}
return new GettingStartedPage();