visual builder should set vis.initialized when ready (#13779)

* tsvb needs to set vis.initialized

* adding visual builder integration test
This commit is contained in:
Peter Pisljar 2017-08-31 08:57:34 +02:00 committed by ppisljar
parent 220b39f7ec
commit a62bfe82ee
7 changed files with 84 additions and 0 deletions

View file

@ -15,6 +15,7 @@ function ReactEditorControllerProvider(Private, localStorage, config) {
const autoApply = localStorage.get(AUTO_APPLY_KEY);
vis.autoApply = autoApply != null ? autoApply : true;
vis.initialized = true;
}
render(visData) {

View file

@ -0,0 +1,47 @@
import expect from 'expect.js';
export default function ({ getService, getPageObjects }) {
const log = getService('log');
const PageObjects = getPageObjects(['common', 'visualize', 'header', 'settings', 'visualBuilder']);
describe('visualize app', function describeIndexTests() {
before(function () {
const fromTime = '2015-09-19 06:31:44.000';
const toTime = '2015-09-22 18:31:44.000';
log.debug('navigateToApp visualize');
return PageObjects.common.navigateToUrl('visualize', 'new')
.then(function () {
log.debug('clickVisualBuilderChart');
return PageObjects.visualize.clickVisualBuilder();
})
.then(function setAbsoluteRange() {
log.debug('Set absolute time range from \"' + fromTime + '\" to \"' + toTime + '\"');
return PageObjects.header.setAbsoluteRange(fromTime, toTime);
})
.then(function () {
return PageObjects.header.waitUntilLoadingHasFinished();
})
.then(function sleep() {
return PageObjects.common.sleep(1003);
})
.then(function clickMetric() {
return PageObjects.visualBuilder.clickMetric();
});
});
describe('Visual Builder chart', function indexPatternCreation() {
it('should show correct data', function () {
const expectedMetricValue = '156';
return PageObjects.visualBuilder.getMetricValue()
.then(function (value) {
log.debug(`metric value: ${value}`);
expect(value).to.eql(expectedMetricValue);
});
});
});
});
}

View file

@ -28,6 +28,7 @@ export default function ({ getService, loadTestFile }) {
loadTestFile(require.resolve('./_heatmap_chart'));
loadTestFile(require.resolve('./_point_series_options'));
loadTestFile(require.resolve('./_markdown_vis'));
loadTestFile(require.resolve('./_tsvb_chart'));
loadTestFile(require.resolve('./_shared_item'));
});
}

View file

@ -10,6 +10,7 @@ import {
SettingsPageProvider,
MonitoringPageProvider,
PointSeriesPageProvider,
VisualBuilderPageProvider,
} from './page_objects';
import {
@ -48,6 +49,7 @@ export default async function ({ readConfigFile }) {
settings: SettingsPageProvider,
monitoring: MonitoringPageProvider,
pointSeries: PointSeriesPageProvider,
visualBuilder: VisualBuilderPageProvider,
},
services: {
es: commonConfig.get('services.es'),

View file

@ -9,3 +9,4 @@ export { VisualizePageProvider } from './visualize_page';
export { SettingsPageProvider } from './settings_page';
export { MonitoringPageProvider } from './monitoring_page';
export { PointSeriesPageProvider } from './point_series_page';
export { VisualBuilderPageProvider } from './visual_builder_page';

View file

@ -0,0 +1,28 @@
export function VisualBuilderPageProvider({ getService }) {
const config = getService('config');
const find = getService('find');
const log = getService('log');
const defaultFindTimeout = config.get('timeouts.find');
class VisualBuilderPage {
async clickMetric() {
const nav = await find.allByCssSelector('.vis_editor__vis_picker-label', defaultFindTimeout);
log.debug('found navigation items: ' + nav.length);
await Promise.all(nav.map(async function (link) {
const text = await link.getVisibleText();
log.debug('nav text:' + text);
if (text === 'Metric') {
await link.click();
}
}));
}
async getMetricValue() {
const metricValue = await find.byCssSelector('.rhythm_metric__primary-value');
return metricValue.getVisibleText();
}
}
return new VisualBuilderPage();
}

View file

@ -54,6 +54,10 @@ export function VisualizePageProvider({ getService, getPageObjects }) {
await find.clickByPartialLinkText('Tag Cloud');
}
async clickVisualBuilder() {
await find.clickByPartialLinkText('Visual Builder');
}
async getTextTag() {
const elements = await find.allByCssSelector('text');
return await Promise.all(elements.map(async element => await element.getVisibleText()));