Skip to content

Commit

Permalink
Functional tests for the Getting Started page (elastic#11850)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
ycombinator committed May 23, 2017
1 parent 192b2ea commit 099178a
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -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()"
Expand Down
78 changes: 78 additions & 0 deletions test/functional/apps/management/_getting_started.js
Original file line number Diff line number Diff line change
@@ -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);
});
});
});
});
};
1 change: 1 addition & 0 deletions test/functional/apps/management/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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'));
});

}
4 changes: 4 additions & 0 deletions test/functional/page_objects/common_page.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
9 changes: 8 additions & 1 deletion test/functional/page_objects/getting_started_page.js
Original file line number Diff line number Diff line change
@@ -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');
Expand All @@ -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();
Expand Down

0 comments on commit 099178a

Please sign in to comment.