Improve visualization tests (#20782) (#20932)

* Improve tests for histogram, tag cloud, input controls and enable lab mode.

* enable skipped tests

* Update shakespeare test navigation to visualize

* Add sleep to shakespeare test

* Skip shakespeare test for now, it is not clear why it is failing and does not fail locally, need the other tests to run in CI

* Revert selector for selectAggregation, re-enable shakespeare test

* skip vega spec text test, was not fixed with changes

* Enable only visualize tests to run, need to see results and it's being blocked by other test failures

* Enable all tests again, visualization tests all passed

* Skipping sample data test due to bug #20807, let's see if rest of the tests pass
This commit is contained in:
liza-mae 2018-07-18 09:08:50 -06:00 committed by GitHub
parent a51af838b4
commit 0b39582294
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 79 additions and 48 deletions

View file

@ -59,7 +59,7 @@ export default function ({ getService, getPageObjects }) {
*/
it('should create initial vertical bar chart', async function () {
log.debug('create shakespeare vertical bar chart');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
await PageObjects.visualize.clickVerticalBarChart();
await PageObjects.visualize.clickNewSearch('shakes*');
await PageObjects.visualize.waitForVisualization();
@ -107,6 +107,7 @@ export default function ({ getService, getPageObjects }) {
*/
it('should configure Terms aggregation on play_name', async function () {
await PageObjects.visualize.clickBucket('X-Axis');
await PageObjects.common.sleep(1000);
log.debug('Aggregation = Terms');
await PageObjects.visualize.selectAggregation('Terms');
aggIndex = aggIndex + 1;

View file

@ -33,7 +33,7 @@ export default function ({ getService, getPageObjects }) {
const toTime = '2015-09-23 18:31:44.000';
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickAreaChart');
await PageObjects.visualize.clickAreaChart();
log.debug('clickNewSearch');

View file

@ -33,7 +33,7 @@ export default function ({ getService, getPageObjects }) {
before(async function () {
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickDataTable');
await PageObjects.visualize.clickDataTable();
log.debug('clickNewSearch');
@ -90,7 +90,7 @@ export default function ({ getService, getPageObjects }) {
});
it('should show correct data for a data table with date histogram', async () => {
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
await PageObjects.visualize.clickDataTable();
await PageObjects.visualize.clickNewSearch();
await PageObjects.header.setAbsoluteRange(fromTime, toTime);
@ -110,7 +110,7 @@ export default function ({ getService, getPageObjects }) {
});
it('should show correct data for a data table with date histogram', async () => {
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
await PageObjects.visualize.clickDataTable();
await PageObjects.visualize.clickNewSearch();
await PageObjects.header.setAbsoluteRange(fromTime, toTime);
@ -131,6 +131,7 @@ export default function ({ getService, getPageObjects }) {
it('should correctly filter for applied time filter on the main timefield', async () => {
await filterBar.addFilter('@timestamp', 'is between', ['2015-09-19', '2015-09-21']);
await PageObjects.header.waitUntilLoadingHasFinished();
await PageObjects.common.sleep(1000);
const data = await PageObjects.visualize.getTableVisData();
expect(data.trim().split('\n')).to.be.eql([
'2015-09-20', '4,757',

View file

@ -29,7 +29,7 @@ export default ({ getService, getPageObjects }) => {
beforeEach(async () => {
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
await PageObjects.visualize.waitForVisualizationSelectPage();
});

View file

@ -30,7 +30,7 @@ export default function ({ getService, getPageObjects }) {
before(async function () {
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickGauge');
await PageObjects.visualize.clickGauge();
await PageObjects.visualize.clickNewSearch();

View file

@ -30,7 +30,7 @@ export default function ({ getService, getPageObjects }) {
before(async function () {
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickHeatmapChart');
await PageObjects.visualize.clickHeatmapChart();
await PageObjects.visualize.clickNewSearch();

View file

@ -30,7 +30,7 @@ export default function ({ getService, getPageObjects }) {
const toTime = '2015-09-23 18:31:44.000';
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickDataTable');
await PageObjects.visualize.clickDataTable();
await PageObjects.visualize.clickNewSearch();

View file

@ -30,14 +30,13 @@ export default function ({ getService, getPageObjects }) {
describe('input control visualization', () => {
before(async () => {
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
await PageObjects.visualize.clickInputControlVis();
// set time range to time with no documents - input controls do not use time filter be default
await PageObjects.header.setAbsoluteRange('2017-01-01', '2017-01-02');
await PageObjects.visualize.clickVisEditorTab('controls');
await PageObjects.visualize.addInputControl();
await PageObjects.visualize.setComboBox('indexPatternSelect-0', 'logstash');
await PageObjects.common.sleep(1000); // give time for index-pattern to be fetched
await PageObjects.visualize.setComboBox('fieldSelect-0', FIELD_NAME);
await PageObjects.visualize.clickGo();
await PageObjects.header.waitUntilLoadingHasFinished();
@ -76,7 +75,7 @@ export default function ({ getService, getPageObjects }) {
});
it('should add filter pill when submit button is clicked', async () => {
await testSubjects.click('inputControlSubmitBtn');
await PageObjects.visualize.inputControlSubmit();
const hasFilter = await filterBar.hasFilter(FIELD_NAME, 'ios');
expect(hasFilter).to.equal(true);
@ -85,7 +84,8 @@ export default function ({ getService, getPageObjects }) {
it('should replace existing filter pill(s) when new item is selected', async () => {
await PageObjects.visualize.clearComboBox('listControlSelect0');
await PageObjects.visualize.setComboBox('listControlSelect0', 'osx');
await testSubjects.click('inputControlSubmitBtn');
await PageObjects.visualize.inputControlSubmit();
await PageObjects.common.sleep(1000);
const hasOldFilter = await filterBar.hasFilter(FIELD_NAME, 'ios');
const hasNewFilter = await filterBar.hasFilter(FIELD_NAME, 'osx');
@ -103,11 +103,11 @@ export default function ({ getService, getPageObjects }) {
it('should clear form when Clear button is clicked but not remove filter pill', async () => {
await PageObjects.visualize.setComboBox('listControlSelect0', 'ios');
await testSubjects.click('inputControlSubmitBtn');
await PageObjects.visualize.inputControlSubmit();
const hasFilterBeforeClearBtnClicked = await filterBar.hasFilter(FIELD_NAME, 'ios');
expect(hasFilterBeforeClearBtnClicked).to.equal(true);
await testSubjects.click('inputControlClearBtn');
await PageObjects.visualize.inputControlClear();
const hasValue = await PageObjects.visualize.doesComboBoxHaveSelectedOptions('listControlSelect0');
expect(hasValue).to.equal(false);
@ -116,7 +116,7 @@ export default function ({ getService, getPageObjects }) {
});
it('should remove filter pill when cleared form is submitted', async () => {
await testSubjects.click('inputControlSubmitBtn');
await PageObjects.visualize.inputControlSubmit();
const hasFilter = await filterBar.hasFilter(FIELD_NAME, 'ios');
expect(hasFilter).to.equal(false);
});
@ -184,13 +184,12 @@ export default function ({ getService, getPageObjects }) {
describe('dynamic options', () => {
beforeEach(async () => {
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
await PageObjects.visualize.clickInputControlVis();
await PageObjects.visualize.clickVisEditorTab('controls');
await PageObjects.visualize.addInputControl();
await PageObjects.visualize.setComboBox('indexPatternSelect-0', 'logstash');
await PageObjects.common.sleep(1000); // give time for index-pattern to be fetched
await PageObjects.visualize.setComboBox('fieldSelect-0', 'geo.src');
await PageObjects.visualize.clickGo();
@ -228,18 +227,16 @@ export default function ({ getService, getPageObjects }) {
describe('chained controls', () => {
before(async () => {
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
await PageObjects.visualize.clickInputControlVis();
await PageObjects.visualize.clickVisEditorTab('controls');
await PageObjects.visualize.addInputControl();
await PageObjects.visualize.setComboBox('indexPatternSelect-0', 'logstash');
await PageObjects.common.sleep(1000); // give time for index-pattern to be fetched
await PageObjects.visualize.setComboBox('fieldSelect-0', 'geo.src');
await PageObjects.visualize.addInputControl();
await PageObjects.visualize.setComboBox('indexPatternSelect-1', 'logstash');
await PageObjects.common.sleep(1000); // give time for index-pattern to be fetched
await PageObjects.visualize.setComboBox('fieldSelect-1', 'clientip');
await PageObjects.visualize.setSelectByOptionText('parentSelect-1', 'geo.src');
@ -266,7 +263,7 @@ export default function ({ getService, getPageObjects }) {
it('should create a seperate filter pill for parent control and child control', async () => {
await PageObjects.visualize.setComboBox('listControlSelect1', '14.61.182.136');
await testSubjects.click('inputControlSubmitBtn');
await PageObjects.visualize.inputControlSubmit();
const hasParentControlFilter = await filterBar.hasFilter('geo.src', 'BR');
expect(hasParentControlFilter).to.equal(true);

View file

@ -28,7 +28,7 @@ export default function ({ getService, getPageObjects }) {
const fromTime = '2015-09-19 06:31:44.000';
const toTime = '2015-09-23 18:31:44.000';
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
await PageObjects.visualize.clickVerticalBarChart();
await PageObjects.visualize.clickNewSearch();

View file

@ -24,7 +24,7 @@ export default function ({ getService, getPageObjects }) {
const PageObjects = getPageObjects(['common', 'header', 'discover', 'settings']);
// Flaky: https://github.com/elastic/kibana/issues/19743
describe.skip('visualize lab mode', () => {
describe('visualize lab mode', () => {
it('disabling does not break loading saved searches', async () => {
await PageObjects.common.navigateToUrl('discover', '');

View file

@ -32,7 +32,7 @@ export default function ({ getService, getPageObjects }) {
const toTime = '2015-09-23 18:31:44.000';
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickLineChart');
await PageObjects.visualize.clickLineChart();
await PageObjects.visualize.clickNewSearch();

View file

@ -19,12 +19,11 @@
import expect from 'expect.js';
export default function ({ getPageObjects, getService }) {
const retry = getService('retry');
export default function ({ getPageObjects }) {
const PageObjects = getPageObjects(['common', 'discover', 'visualize', 'header']);
// Blocked by: https://github.com/elastic/kibana/issues/19750
describe.skip('visualize app', function describeIndexTests() {
describe('visualize app', function describeIndexTests() {
const fromTime = '2015-09-19 06:31:44.000';
const toTime = '2015-09-23 18:31:44.000';
@ -38,11 +37,7 @@ export default function ({ getPageObjects, getService }) {
});
it('should create a visualization from a saved search', async () => {
retry.try(async () => {
// Sometimes navigation to the page fails, so we have this in a retry
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.waitForVisualizationSelectPage();
});
await PageObjects.visualize.navigateToNewVisualization();
await PageObjects.visualize.clickDataTable();
await PageObjects.visualize.clickSavedSearch(savedSearchName);
await PageObjects.header.setAbsoluteRange(fromTime, toTime);

View file

@ -30,7 +30,7 @@ export default function ({ getPageObjects, getService }) {
describe('visualize app', async () => {
before(async function () {
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
await PageObjects.visualize.clickMarkdownWidget();
await PageObjects.visualize.setMarkdownTxt(markdown);
await PageObjects.visualize.clickGo();

View file

@ -30,7 +30,7 @@ export default function ({ getService, getPageObjects }) {
before(async function () {
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickMetric');
await PageObjects.visualize.clickMetric();
await PageObjects.visualize.clickNewSearch();

View file

@ -30,7 +30,7 @@ export default function ({ getService, getPageObjects }) {
before(async function () {
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickPieChart');
await PageObjects.visualize.clickPieChart();
await PageObjects.visualize.clickNewSearch();
@ -92,7 +92,7 @@ export default function ({ getService, getPageObjects }) {
it('should show other and missing bucket', async function () {
const expectedTableData = [ 'win 8', 'win xp', 'win 7', 'ios', 'Missing', 'Other' ];
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickPieChart');
await PageObjects.visualize.clickPieChart();
await PageObjects.visualize.clickNewSearch();
@ -157,6 +157,7 @@ export default function ({ getService, getPageObjects }) {
await PageObjects.visualize.toggleDisabledAgg(2);
await PageObjects.visualize.clickGo();
await PageObjects.header.waitUntilLoadingHasFinished();
await PageObjects.common.sleep(2000);
const expectedTableData = [
'0', 'win 7', 'win xp', 'win 8', 'ios', 'osx', '40,000', 'win 8', 'ios', 'win 7', 'win xp', 'osx', '80,000',

View file

@ -31,7 +31,7 @@ export default function ({ getService, getPageObjects }) {
const toTime = '2015-09-23 18:31:44.000';
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickLineChart');
await PageObjects.visualize.clickLineChart();
await PageObjects.visualize.clickNewSearch();

View file

@ -32,7 +32,7 @@ export default function ({ getService, getPageObjects }) {
before(async function () {
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickRegionMap');
await PageObjects.visualize.clickRegionMap();
await PageObjects.visualize.clickNewSearch();

View file

@ -35,14 +35,16 @@ export default function ({ getService, getPageObjects }) {
before(async function () {
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickTagCloud');
await PageObjects.visualize.clickTagCloud();
await PageObjects.visualize.clickNewSearch();
log.debug('Set absolute time range from \"' + fromTime + '\" to \"' + toTime + '\"');
await PageObjects.header.setAbsoluteRange(fromTime, toTime);
await PageObjects.common.sleep(1000);
log.debug('select Tags');
await PageObjects.visualize.clickBucket('Tags');
await PageObjects.common.sleep(1000);
log.debug('Click aggregation Terms');
await PageObjects.visualize.selectAggregation('Terms');
log.debug('Click field machine.ram');
@ -142,7 +144,7 @@ export default function ({ getService, getPageObjects }) {
await PageObjects.settings.openControlsByName(termsField);
await PageObjects.settings.setFieldFormat('bytes');
await PageObjects.settings.controlChangeSave();
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
await PageObjects.visualize.loadSavedVisualization(vizName1);
await PageObjects.header.waitUntilLoadingHasFinished();
await PageObjects.header.setAbsoluteRange(fromTime, toTime);

View file

@ -40,7 +40,7 @@ export default function ({ getService, getPageObjects }) {
const toTime = '2015-09-23 18:31:44.000';
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickTileMap');
await PageObjects.visualize.clickTileMap();
await PageObjects.visualize.clickNewSearch();
@ -71,7 +71,7 @@ export default function ({ getService, getPageObjects }) {
const toTime = '2015-09-23 18:31:44.000';
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickTileMap');
await PageObjects.visualize.clickTileMap();
await PageObjects.visualize.clickNewSearch();

View file

@ -150,7 +150,7 @@ export default function ({ getService, getPageObjects }) {
expect(text).to.be('1442901600000');
});
it.skip('should allow printing raw value of data', async () => {
it('should allow printing raw value of data', async () => {
await PageObjects.visualBuilder.enterMarkdown('{{ count.data.raw.[0].[1] }}');
const text = await PageObjects.visualBuilder.getMarkdownText();
expect(text).to.be('6');

View file

@ -26,7 +26,7 @@ export default function ({ getService, getPageObjects }) {
describe('visualize app', () => {
before(async () => {
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickVega');
await PageObjects.visualize.clickVega();
});

View file

@ -31,7 +31,7 @@ export default function ({ getService, getPageObjects }) {
const initBarChart = async () => {
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
log.debug('clickVerticalBarChart');
await PageObjects.visualize.clickVerticalBarChart();
await PageObjects.visualize.clickNewSearch();

View file

@ -32,7 +32,7 @@ export function VisualBuilderPageProvider({ getService, getPageObjects }) {
const fromTime = '2015-09-19 06:31:44.000';
const toTime = '2015-09-22 18:31:44.000';
log.debug('navigateToApp visualize');
await PageObjects.common.navigateToUrl('visualize', 'new');
await PageObjects.visualize.navigateToNewVisualization();
await PageObjects.header.waitUntilLoadingHasFinished();
log.debug('clickVisualBuilderChart');
await find.clickByPartialLinkText('Visual Builder');

View file

@ -34,8 +34,20 @@ export function VisualizePageProvider({ getService, getPageObjects }) {
class VisualizePage {
async navigateToNewVisualization() {
log.debug('navigateToApp visualize new');
await PageObjects.common.navigateToUrl('visualize', 'new');
await this.waitForVisualizationSelectPage();
await PageObjects.header.waitUntilLoadingHasFinished();
}
async waitForVisualizationSelectPage() {
await testSubjects.find('visualizeSelectTypePage');
await retry.try(async () => {
const visualizeSelectTypePage = await testSubjects.find('visualizeSelectTypePage');
if (!visualizeSelectTypePage.isDisplayed()) {
throw new Error('wait for visualization select page');
}
});
}
async clickAreaChart() {
@ -112,6 +124,7 @@ export function VisualizePageProvider({ getService, getPageObjects }) {
async selectTagCloudTag(tagDisplayText) {
await testSubjects.click(tagDisplayText);
await PageObjects.header.waitUntilLoadingHasFinished();
}
async getTextTag() {
@ -236,12 +249,14 @@ export function VisualizePageProvider({ getService, getPageObjects }) {
async setComboBox(comboBoxSelector, value) {
const comboBox = await testSubjects.find(comboBoxSelector);
await this.setComboBoxElement(comboBox, value);
await PageObjects.common.sleep(1000);
}
async setComboBoxElement(element, value) {
const input = await element.findByTagName('input');
await input.clearValue();
await input.type(value);
await PageObjects.common.sleep(500);
await find.clickByCssSelector('.euiComboBoxOption');
await this.closeComboBoxOptionsList(element);
}
@ -251,6 +266,7 @@ export function VisualizePageProvider({ getService, getPageObjects }) {
const input = await comboBox.findByTagName('input');
await input.clearValue();
await input.type(value);
await PageObjects.common.sleep(500);
await this.closeComboBoxOptionsList(comboBox);
}
@ -319,6 +335,17 @@ export function VisualizePageProvider({ getService, getPageObjects }) {
async addInputControl() {
await testSubjects.click('inputControlEditorAddBtn');
await PageObjects.header.waitUntilLoadingHasFinished();
}
async inputControlSubmit() {
await testSubjects.click('inputControlSubmitBtn');
await PageObjects.header.waitUntilLoadingHasFinished();
}
async inputControlClear() {
await testSubjects.click('inputControlClearBtn');
await PageObjects.header.waitUntilLoadingHasFinished();
}
async checkCheckbox(selector) {
@ -448,6 +475,7 @@ export function VisualizePageProvider({ getService, getPageObjects }) {
const chartString = await chart.getVisibleText();
if (chartString === bucketName) {
await chart.click();
await PageObjects.common.sleep(500);
}
}
const getChartTypesPromises = chartTypes.map(getChartType);
@ -462,6 +490,7 @@ export function VisualizePageProvider({ getService, getPageObjects }) {
await input.type(myString);
await remote.pressKeys('\uE006');
});
await PageObjects.common.sleep(500);
}
async toggleOpenEditor(index, toState = 'true') {
@ -548,6 +577,7 @@ export function VisualizePageProvider({ getService, getPageObjects }) {
await input.type(fieldValue);
await remote.pressKeys('\uE006');
});
await PageObjects.common.sleep(500);
}
async selectFieldById(fieldValue, id) {
@ -581,6 +611,7 @@ export function VisualizePageProvider({ getService, getPageObjects }) {
const input = await find.byCssSelector('input[name="interval"]');
await input.clearValue();
await input.type(newValue + '');
await PageObjects.common.sleep(1000);
}
async setSize(newValue) {
@ -591,6 +622,7 @@ export function VisualizePageProvider({ getService, getPageObjects }) {
async toggleDisabledAgg(agg) {
await testSubjects.click(`aggregationEditor${agg} disableAggregationBtn`);
await PageObjects.header.waitUntilLoadingHasFinished();
}
async toggleOtherBucket() {
@ -635,10 +667,12 @@ export function VisualizePageProvider({ getService, getPageObjects }) {
async clickVisEditorTab(tabName) {
await testSubjects.click('visEditorTab' + tabName);
await PageObjects.header.waitUntilLoadingHasFinished();
}
async selectWMS() {
await find.clickByCssSelector('input[name="wms.enabled"]');
await PageObjects.header.waitUntilLoadingHasFinished();
}
async ensureSavePanelOpen() {