mirror of
https://github.com/elastic/kibana.git
synced 2025-04-23 17:28:26 -04:00
Paramaterized Discover tests (#129684)
* Migrated Discover visualize tests to use CCS. * Fixed. * Forgot to add the config file to the functional tests command, * Fixed nits in PR. * Removed unused references. * Removed unused references. * Removed test file that was removed in the merge. * Added saved_queries test to run when CCS is enabled and put test that wasn't supposed to be removed back. * Used conditional in index pattern.
This commit is contained in:
parent
9cc736dfc8
commit
fbd38a7b22
14 changed files with 103 additions and 412 deletions
|
@ -8,8 +8,8 @@
|
|||
|
||||
require('../src/setup_node_env');
|
||||
require('@kbn/test').runTestsCli([
|
||||
require.resolve('../test/functional/config.ccs.ts'),
|
||||
require.resolve('../test/functional/config.js'),
|
||||
require.resolve('../test/functional_ccs/config.ts'),
|
||||
require.resolve('../test/plugin_functional/config.ts'),
|
||||
require.resolve('../test/ui_capabilities/newsfeed_err/config.ts'),
|
||||
require.resolve('../test/new_visualize_flow/config.ts'),
|
||||
|
|
|
@ -14,10 +14,22 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
|||
const kibanaServer = getService('kibanaServer');
|
||||
const esArchiver = getService('esArchiver');
|
||||
const security = getService('security');
|
||||
const config = getService('config');
|
||||
const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker']);
|
||||
const defaultIndexPatternString = config.get('esTestCluster.ccs')
|
||||
? 'ftr-remote:logstash-*'
|
||||
: 'logstash-*';
|
||||
const defaultSettings = {
|
||||
defaultIndex: 'logstash-*',
|
||||
defaultIndex: defaultIndexPatternString,
|
||||
};
|
||||
const localArchiveDirectory = 'test/functional/fixtures/kbn_archiver/discover';
|
||||
const remoteArchiveDirectory = 'test/functional/fixtures/kbn_archiver/ccs/discover';
|
||||
const esNode = config.get('esTestCluster.ccs')
|
||||
? getService('remoteEsArchiver' as 'esArchiver')
|
||||
: esArchiver;
|
||||
const kbnDirectory = config.get('esTestCluster.ccs')
|
||||
? remoteArchiveDirectory
|
||||
: localArchiveDirectory;
|
||||
|
||||
const createDataView = async (dataViewName: string) => {
|
||||
await PageObjects.discover.clickIndexPatternActions();
|
||||
|
@ -32,9 +44,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
|||
describe('discover integration with data view editor', function describeIndexTests() {
|
||||
before(async function () {
|
||||
await security.testUser.setRoles(['kibana_admin', 'test_logstash_reader']);
|
||||
await esArchiver.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional');
|
||||
await esNode.loadIfNeeded('test/functional/fixtures/es_archiver/logstash_functional');
|
||||
await kibanaServer.savedObjects.clean({ types: ['saved-search', 'index-pattern'] });
|
||||
await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover');
|
||||
await kibanaServer.importExport.load(kbnDirectory);
|
||||
await kibanaServer.uiSettings.replace(defaultSettings);
|
||||
await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings();
|
||||
await PageObjects.common.navigateToApp('discover');
|
||||
|
@ -42,12 +54,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
|||
|
||||
after(async () => {
|
||||
await security.testUser.restoreDefaults();
|
||||
await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover');
|
||||
await kibanaServer.importExport.unload(kbnDirectory);
|
||||
await kibanaServer.savedObjects.clean({ types: ['saved-search', 'index-pattern'] });
|
||||
});
|
||||
|
||||
it('allows creating a new data view', async function () {
|
||||
const dataViewToCreate = 'logstash';
|
||||
const dataViewToCreate = config.get('esTestCluster.ccs') ? 'ftr-remote:logstash' : 'logstash';
|
||||
await createDataView(dataViewToCreate);
|
||||
await PageObjects.header.waitUntilLoadingHasFinished();
|
||||
await retry.waitForWithTimeout(
|
||||
|
|
|
@ -13,7 +13,6 @@ import { FtrProviderContext } from '../../ftr_provider_context';
|
|||
export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
||||
const retry = getService('retry');
|
||||
const log = getService('log');
|
||||
const esArchiver = getService('esArchiver');
|
||||
const kibanaServer = getService('kibanaServer');
|
||||
const PageObjects = getPageObjects(['common', 'discover', 'timePicker']);
|
||||
const browser = getService('browser');
|
||||
|
@ -21,9 +20,30 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
|||
const queryBar = getService('queryBar');
|
||||
const savedQueryManagementComponent = getService('savedQueryManagementComponent');
|
||||
const testSubjects = getService('testSubjects');
|
||||
const defaultSettings = {
|
||||
defaultIndex: 'logstash-*',
|
||||
const config = getService('config');
|
||||
const localArchiveDirectories = {
|
||||
nested: 'test/functional/fixtures/kbn_archiver/date_nested.json',
|
||||
discover: 'test/functional/fixtures/kbn_archiver/discover.json',
|
||||
};
|
||||
const remoteArchiveDirectories = {
|
||||
nested: 'test/functional/fixtures/kbn_archiver/ccs/date_nested.json',
|
||||
discover: 'test/functional/fixtures/kbn_archiver/ccs/discover.json',
|
||||
};
|
||||
const logstashIndexPatternString = config.get('esTestCluster.ccs')
|
||||
? 'ftr-remote:logstash-*'
|
||||
: 'logstash-*';
|
||||
const dateNestedIndexPattern = config.get('esTestCluster.ccs')
|
||||
? 'ftr-remote:date-nested'
|
||||
: 'date-nested';
|
||||
const defaultSettings = {
|
||||
defaultIndex: logstashIndexPatternString,
|
||||
};
|
||||
const esNode = config.get('esTestCluster.ccs')
|
||||
? getService('remoteEsArchiver' as 'esArchiver')
|
||||
: getService('esArchiver');
|
||||
const kbnArchives = config.get('esTestCluster.ccs')
|
||||
? remoteArchiveDirectories
|
||||
: localArchiveDirectories;
|
||||
|
||||
const from = 'Sep 20, 2015 @ 08:00:00.000';
|
||||
const to = 'Sep 21, 2015 @ 08:00:00.000';
|
||||
|
@ -34,7 +54,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
|||
log.debug('set up a query with filters to save');
|
||||
await PageObjects.common.setTime({ from, to });
|
||||
await PageObjects.common.navigateToApp('discover');
|
||||
await PageObjects.discover.selectIndexPattern('logstash-*');
|
||||
await PageObjects.discover.selectIndexPattern(logstashIndexPatternString);
|
||||
await retry.try(async function tryingForTime() {
|
||||
const hitCount = await PageObjects.discover.getHitCount();
|
||||
expect(hitCount).to.be('4,731');
|
||||
|
@ -59,12 +79,10 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
|||
log.debug('load kibana index with default index pattern');
|
||||
await kibanaServer.savedObjects.clean({ types: ['search', 'index-pattern', 'query'] });
|
||||
|
||||
await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover.json');
|
||||
await kibanaServer.importExport.load(
|
||||
'test/functional/fixtures/kbn_archiver/date_nested.json'
|
||||
);
|
||||
await esArchiver.load('test/functional/fixtures/es_archiver/date_nested');
|
||||
await esArchiver.load('test/functional/fixtures/es_archiver/logstash_functional');
|
||||
await kibanaServer.importExport.load(kbnArchives.discover);
|
||||
await kibanaServer.importExport.load(kbnArchives.nested);
|
||||
await esNode.load('test/functional/fixtures/es_archiver/date_nested');
|
||||
await esNode.load('test/functional/fixtures/es_archiver/logstash_functional');
|
||||
|
||||
await kibanaServer.uiSettings.replace(defaultSettings);
|
||||
log.debug('discover');
|
||||
|
@ -72,12 +90,12 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
|||
});
|
||||
|
||||
after(async () => {
|
||||
await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover');
|
||||
await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/date_nested');
|
||||
await kibanaServer.importExport.unload(kbnArchives.discover);
|
||||
await kibanaServer.importExport.unload(kbnArchives.nested);
|
||||
await kibanaServer.savedObjects.clean({ types: ['search', 'index-pattern', 'query'] });
|
||||
await kibanaServer.savedObjects.clean({ types: ['search', 'query'] });
|
||||
await esArchiver.unload('test/functional/fixtures/es_archiver/date_nested');
|
||||
await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional');
|
||||
await esNode.unload('test/functional/fixtures/es_archiver/date_nested');
|
||||
await esNode.unload('test/functional/fixtures/es_archiver/logstash_functional');
|
||||
await PageObjects.common.unsetTime();
|
||||
});
|
||||
|
||||
|
@ -102,14 +120,14 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
|||
expect(await filterBar.hasFilter('extension.raw', 'jpg')).to.be(false);
|
||||
expect(await queryBar.getQueryString()).to.eql('');
|
||||
|
||||
await PageObjects.discover.selectIndexPattern('date-nested');
|
||||
await PageObjects.discover.selectIndexPattern(dateNestedIndexPattern);
|
||||
|
||||
expect(await filterBar.hasFilter('extension.raw', 'jpg')).to.be(false);
|
||||
expect(await queryBar.getQueryString()).to.eql('');
|
||||
|
||||
await PageObjects.discover.selectIndexPattern('logstash-*');
|
||||
await PageObjects.discover.selectIndexPattern(logstashIndexPatternString);
|
||||
const currentDataView = await PageObjects.discover.getCurrentlySelectedDataView();
|
||||
expect(currentDataView).to.be('logstash-*');
|
||||
expect(currentDataView).to.be(logstashIndexPatternString);
|
||||
await retry.try(async function tryingForTime() {
|
||||
const hitCount = await PageObjects.discover.getHitCount();
|
||||
expect(hitCount).to.be('4,731');
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
||||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
import { FtrProviderContext } from '../../ftr_provider_context';
|
||||
|
||||
export default function ({ getService, loadTestFile }: FtrProviderContext) {
|
||||
const esArchiver = getService('esArchiver');
|
||||
const browser = getService('browser');
|
||||
const config = getService('config');
|
||||
|
||||
describe('discover app', function () {
|
||||
this.tags('ciGroup6');
|
||||
|
@ -23,38 +23,43 @@ export default function ({ getService, loadTestFile }: FtrProviderContext) {
|
|||
await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional');
|
||||
});
|
||||
|
||||
loadTestFile(require.resolve('./_saved_queries'));
|
||||
loadTestFile(require.resolve('./_discover'));
|
||||
loadTestFile(require.resolve('./_discover_histogram'));
|
||||
loadTestFile(require.resolve('./_doc_table'));
|
||||
loadTestFile(require.resolve('./_doc_table_newline'));
|
||||
loadTestFile(require.resolve('./_filter_editor'));
|
||||
loadTestFile(require.resolve('./_errors'));
|
||||
loadTestFile(require.resolve('./_field_data'));
|
||||
loadTestFile(require.resolve('./_field_data_with_fields_api'));
|
||||
loadTestFile(require.resolve('./_shared_links'));
|
||||
loadTestFile(require.resolve('./_sidebar'));
|
||||
loadTestFile(require.resolve('./_source_filters'));
|
||||
loadTestFile(require.resolve('./_large_string'));
|
||||
loadTestFile(require.resolve('./_inspector'));
|
||||
loadTestFile(require.resolve('./_classic_table_doc_navigation'));
|
||||
loadTestFile(require.resolve('./_date_nanos'));
|
||||
loadTestFile(require.resolve('./_date_nanos_mixed'));
|
||||
loadTestFile(require.resolve('./_indexpattern_without_timefield'));
|
||||
loadTestFile(require.resolve('./_discover_fields_api'));
|
||||
loadTestFile(require.resolve('./_data_grid'));
|
||||
loadTestFile(require.resolve('./_data_grid_context'));
|
||||
loadTestFile(require.resolve('./_data_grid_field_data'));
|
||||
loadTestFile(require.resolve('./_data_grid_doc_navigation'));
|
||||
loadTestFile(require.resolve('./_data_grid_doc_table'));
|
||||
loadTestFile(require.resolve('./_indexpattern_with_unmapped_fields'));
|
||||
loadTestFile(require.resolve('./_runtime_fields_editor'));
|
||||
loadTestFile(require.resolve('./_huge_fields'));
|
||||
loadTestFile(require.resolve('./_date_nested'));
|
||||
loadTestFile(require.resolve('./_search_on_page_load'));
|
||||
loadTestFile(require.resolve('./_chart_hidden'));
|
||||
loadTestFile(require.resolve('./_context_encoded_url_param'));
|
||||
loadTestFile(require.resolve('./_data_view_editor'));
|
||||
loadTestFile(require.resolve('./_empty_state'));
|
||||
if (config.get('esTestCluster.ccs')) {
|
||||
loadTestFile(require.resolve('./_data_view_editor'));
|
||||
loadTestFile(require.resolve('./_saved_queries'));
|
||||
} else {
|
||||
loadTestFile(require.resolve('./_saved_queries'));
|
||||
loadTestFile(require.resolve('./_discover'));
|
||||
loadTestFile(require.resolve('./_discover_histogram'));
|
||||
loadTestFile(require.resolve('./_doc_table'));
|
||||
loadTestFile(require.resolve('./_doc_table_newline'));
|
||||
loadTestFile(require.resolve('./_filter_editor'));
|
||||
loadTestFile(require.resolve('./_errors'));
|
||||
loadTestFile(require.resolve('./_field_data'));
|
||||
loadTestFile(require.resolve('./_field_data_with_fields_api'));
|
||||
loadTestFile(require.resolve('./_shared_links'));
|
||||
loadTestFile(require.resolve('./_sidebar'));
|
||||
loadTestFile(require.resolve('./_source_filters'));
|
||||
loadTestFile(require.resolve('./_large_string'));
|
||||
loadTestFile(require.resolve('./_inspector'));
|
||||
loadTestFile(require.resolve('./_classic_table_doc_navigation'));
|
||||
loadTestFile(require.resolve('./_date_nanos'));
|
||||
loadTestFile(require.resolve('./_date_nanos_mixed'));
|
||||
loadTestFile(require.resolve('./_indexpattern_without_timefield'));
|
||||
loadTestFile(require.resolve('./_discover_fields_api'));
|
||||
loadTestFile(require.resolve('./_data_grid'));
|
||||
loadTestFile(require.resolve('./_data_grid_context'));
|
||||
loadTestFile(require.resolve('./_data_grid_field_data'));
|
||||
loadTestFile(require.resolve('./_data_grid_doc_navigation'));
|
||||
loadTestFile(require.resolve('./_data_grid_doc_table'));
|
||||
loadTestFile(require.resolve('./_indexpattern_with_unmapped_fields'));
|
||||
loadTestFile(require.resolve('./_runtime_fields_editor'));
|
||||
loadTestFile(require.resolve('./_huge_fields'));
|
||||
loadTestFile(require.resolve('./_date_nested'));
|
||||
loadTestFile(require.resolve('./_search_on_page_load'));
|
||||
loadTestFile(require.resolve('./_chart_hidden'));
|
||||
loadTestFile(require.resolve('./_context_encoded_url_param'));
|
||||
loadTestFile(require.resolve('./_data_view_editor'));
|
||||
loadTestFile(require.resolve('./_empty_state'));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -7,8 +7,10 @@
|
|||
*/
|
||||
|
||||
import { FtrConfigProviderContext } from '@kbn/test';
|
||||
import { services } from './services';
|
||||
import { RemoteEsArchiverProvider } from './services/remote_es/remote_es_archiver';
|
||||
import { RemoteEsProvider } from './services/remote_es/remote_es';
|
||||
|
||||
// eslint-disable-next-line import/no-default-export
|
||||
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
|
||||
const functionalConfig = await readConfigFile(require.resolve('../functional/config'));
|
||||
|
||||
|
@ -17,7 +19,11 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
|
|||
|
||||
testFiles: [require.resolve('./apps/discover')],
|
||||
|
||||
services,
|
||||
services: {
|
||||
...functionalConfig.get('services'),
|
||||
remoteEs: RemoteEsProvider,
|
||||
remoteEsArchiver: RemoteEsArchiverProvider,
|
||||
},
|
||||
|
||||
junit: {
|
||||
reportName: 'Kibana CCS Tests',
|
|
@ -9,7 +9,7 @@
|
|||
import { Client } from '@elastic/elasticsearch';
|
||||
|
||||
import { systemIndicesSuperuser, createRemoteEsClientForFtrConfig } from '@kbn/test';
|
||||
import { FtrProviderContext } from '../ftr_provider_context';
|
||||
import { FtrProviderContext } from '../../ftr_provider_context';
|
||||
|
||||
/**
|
||||
* Kibana-specific @elastic/elasticsearch client instance.
|
|
@ -7,10 +7,10 @@
|
|||
*/
|
||||
|
||||
import { EsArchiver } from '@kbn/es-archiver';
|
||||
import { FtrProviderContext } from '../ftr_provider_context';
|
||||
import { FtrProviderContext } from '../../ftr_provider_context';
|
||||
|
||||
export function RemoteEsArchiverProvider({ getService }: FtrProviderContext): EsArchiver {
|
||||
const remoteEs = getService('remoteEs');
|
||||
const remoteEs = getService('remoteEs' as 'es');
|
||||
const log = getService('log');
|
||||
const kibanaServer = getService('kibanaServer');
|
||||
|
|
@ -1,70 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
||||
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
||||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
import { FtrProviderContext } from '../../ftr_provider_context';
|
||||
|
||||
export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
||||
const retry = getService('retry');
|
||||
const testSubjects = getService('testSubjects');
|
||||
const kibanaServer = getService('kibanaServer');
|
||||
const remoteEsArchiver = getService('remoteEsArchiver');
|
||||
|
||||
const security = getService('security');
|
||||
const PageObjects = getPageObjects(['common', 'discover', 'header', 'timePicker']);
|
||||
|
||||
const createDataView = async (dataViewName: string) => {
|
||||
await PageObjects.discover.clickIndexPatternActions();
|
||||
await PageObjects.discover.clickCreateNewDataView();
|
||||
await testSubjects.setValue('createIndexPatternNameInput', dataViewName, {
|
||||
clearWithKeyboard: true,
|
||||
typeCharByChar: true,
|
||||
});
|
||||
await testSubjects.click('saveIndexPatternButton');
|
||||
};
|
||||
|
||||
describe('discover integration with data view editor', function describeIndexTests() {
|
||||
before(async function () {
|
||||
await security.testUser.setRoles([
|
||||
'kibana_admin',
|
||||
'test_logstash_reader',
|
||||
'ccs_remote_search',
|
||||
]);
|
||||
await remoteEsArchiver.loadIfNeeded(
|
||||
'test/functional/fixtures/es_archiver/logstash_functional'
|
||||
);
|
||||
await kibanaServer.savedObjects.clean({ types: ['saved-search', 'index-pattern'] });
|
||||
// The test creates the 'ftr-remote:logstash*" data view but we have to load the discover_ccs
|
||||
// which contains ftr-remote:logstash-* otherwise, discover will redirect us to another page.
|
||||
await kibanaServer.importExport.load('test/functional/fixtures/kbn_archiver/discover_ccs');
|
||||
await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings();
|
||||
await PageObjects.common.navigateToApp('discover');
|
||||
});
|
||||
|
||||
after(async () => {
|
||||
await security.testUser.restoreDefaults();
|
||||
await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover_ccs');
|
||||
await kibanaServer.savedObjects.clean({ types: ['saved-search', 'index-pattern'] });
|
||||
});
|
||||
|
||||
it('use ccs to create a new data view', async function () {
|
||||
const dataViewToCreate = 'ftr-remote:logstash';
|
||||
await createDataView(dataViewToCreate);
|
||||
await PageObjects.header.waitUntilLoadingHasFinished();
|
||||
await retry.waitForWithTimeout(
|
||||
'data view selector to include a newly created dataview',
|
||||
5000,
|
||||
async () => {
|
||||
const dataViewTitle = await PageObjects.discover.getCurrentlySelectedDataView();
|
||||
// data view editor will add wildcard symbol by default
|
||||
// so we need to include it in our original title when comparing
|
||||
return dataViewTitle === `${dataViewToCreate}*`;
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
}
|
|
@ -1,29 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
||||
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
||||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
import { FtrProviderContext } from '../../ftr_provider_context';
|
||||
|
||||
export default function ({ getService, loadTestFile }: FtrProviderContext) {
|
||||
const esArchiver = getService('esArchiver');
|
||||
const browser = getService('browser');
|
||||
|
||||
describe('discover app css', function () {
|
||||
this.tags('ciGroup6');
|
||||
|
||||
before(async () => {
|
||||
await browser.setWindowSize(1300, 800);
|
||||
});
|
||||
|
||||
loadTestFile(require.resolve('./data_view_ccs'));
|
||||
loadTestFile(require.resolve('./saved_queries_ccs'));
|
||||
|
||||
after(async () => {
|
||||
await esArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional');
|
||||
});
|
||||
});
|
||||
}
|
|
@ -1,221 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
||||
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
||||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
import expect from '@kbn/expect';
|
||||
|
||||
import { FtrProviderContext } from '../../ftr_provider_context';
|
||||
|
||||
export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
||||
const retry = getService('retry');
|
||||
const log = getService('log');
|
||||
const remoteEsArchiver = getService('remoteEsArchiver');
|
||||
const kibanaServer = getService('kibanaServer');
|
||||
const PageObjects = getPageObjects(['common', 'discover', 'timePicker']);
|
||||
const browser = getService('browser');
|
||||
const filterBar = getService('filterBar');
|
||||
const queryBar = getService('queryBar');
|
||||
const savedQueryManagementComponent = getService('savedQueryManagementComponent');
|
||||
const testSubjects = getService('testSubjects');
|
||||
const defaultSettings = {
|
||||
defaultIndex: 'logstash-*',
|
||||
};
|
||||
|
||||
const setUpQueriesWithFilters = async () => {
|
||||
// set up a query with filters and a time filter
|
||||
log.debug('set up a query with filters to save');
|
||||
const from = 'Sep 20, 2015 @ 08:00:00.000';
|
||||
const to = 'Sep 21, 2015 @ 08:00:00.000';
|
||||
await PageObjects.common.setTime({ from, to });
|
||||
await PageObjects.common.navigateToApp('discover');
|
||||
await filterBar.addFilter('extension.raw', 'is one of', 'jpg');
|
||||
await queryBar.setQuery('response:200');
|
||||
};
|
||||
|
||||
describe('saved queries saved objects', function describeIndexTests() {
|
||||
before(async function () {
|
||||
log.debug('load kibana index with default index pattern');
|
||||
await kibanaServer.savedObjects.clean({ types: ['search', 'index-pattern'] });
|
||||
|
||||
await kibanaServer.importExport.load(
|
||||
'test/functional/fixtures/kbn_archiver/discover_ccs.json'
|
||||
);
|
||||
await kibanaServer.importExport.load(
|
||||
'test/functional/fixtures/kbn_archiver/date_nested_ccs.json'
|
||||
);
|
||||
await remoteEsArchiver.load('test/functional/fixtures/es_archiver/date_nested');
|
||||
await remoteEsArchiver.load('test/functional/fixtures/es_archiver/logstash_functional');
|
||||
|
||||
await kibanaServer.uiSettings.replace(defaultSettings);
|
||||
log.debug('discover');
|
||||
await PageObjects.common.navigateToApp('discover');
|
||||
await PageObjects.timePicker.setDefaultAbsoluteRange();
|
||||
});
|
||||
|
||||
after(async () => {
|
||||
await kibanaServer.importExport.unload('test/functional/fixtures/kbn_archiver/discover_ccs');
|
||||
await kibanaServer.importExport.unload(
|
||||
'test/functional/fixtures/kbn_archiver/date_nested_ccs'
|
||||
);
|
||||
await remoteEsArchiver.unload('test/functional/fixtures/es_archiver/date_nested');
|
||||
await remoteEsArchiver.unload('test/functional/fixtures/es_archiver/logstash_functional');
|
||||
await PageObjects.common.unsetTime();
|
||||
});
|
||||
|
||||
describe('saved query selection', () => {
|
||||
before(async () => await setUpQueriesWithFilters());
|
||||
|
||||
it(`should unselect saved query when navigating to a 'new'`, async function () {
|
||||
await savedQueryManagementComponent.saveNewQuery(
|
||||
'test-unselect-saved-query',
|
||||
'mock',
|
||||
true,
|
||||
true
|
||||
);
|
||||
|
||||
await queryBar.submitQuery();
|
||||
|
||||
expect(await filterBar.hasFilter('extension.raw', 'jpg')).to.be(true);
|
||||
expect(await queryBar.getQueryString()).to.eql('response:200');
|
||||
|
||||
await PageObjects.discover.clickNewSearchButton();
|
||||
|
||||
expect(await filterBar.hasFilter('extension.raw', 'jpg')).to.be(false);
|
||||
expect(await queryBar.getQueryString()).to.eql('');
|
||||
|
||||
await PageObjects.discover.selectIndexPattern('ftr-remote:date-nested');
|
||||
|
||||
expect(await filterBar.hasFilter('extension.raw', 'jpg')).to.be(false);
|
||||
expect(await queryBar.getQueryString()).to.eql('');
|
||||
|
||||
await PageObjects.discover.selectIndexPattern('ftr-remote:logstash-*');
|
||||
|
||||
expect(await filterBar.hasFilter('extension.raw', 'jpg')).to.be(false);
|
||||
expect(await queryBar.getQueryString()).to.eql('');
|
||||
|
||||
// reset state
|
||||
await savedQueryManagementComponent.deleteSavedQuery('test-unselect-saved-query');
|
||||
});
|
||||
});
|
||||
|
||||
describe('saved query management component functionality', function () {
|
||||
before(async () => await setUpQueriesWithFilters());
|
||||
|
||||
it('should show the saved query management component when there are no saved queries', async () => {
|
||||
await savedQueryManagementComponent.openSavedQueryManagementComponent();
|
||||
const descriptionText = await testSubjects.getVisibleText('saved-query-management-popover');
|
||||
expect(descriptionText).to.eql(
|
||||
'Saved Queries\nThere are no saved queries. Save query text and filters that you want to use again.\nSave current query'
|
||||
);
|
||||
});
|
||||
|
||||
it('should allow a query to be saved via the saved objects management component', async () => {
|
||||
await savedQueryManagementComponent.saveNewQuery(
|
||||
'OkResponse',
|
||||
'200 responses for .jpg over 24 hours',
|
||||
true,
|
||||
true
|
||||
);
|
||||
await savedQueryManagementComponent.savedQueryExistOrFail('OkResponse');
|
||||
await savedQueryManagementComponent.savedQueryTextExist('response:200');
|
||||
});
|
||||
|
||||
it('reinstates filters and the time filter when a saved query has filters and a time filter included', async () => {
|
||||
await PageObjects.timePicker.setDefaultAbsoluteRange();
|
||||
await savedQueryManagementComponent.clearCurrentlyLoadedQuery();
|
||||
await savedQueryManagementComponent.loadSavedQuery('OkResponse');
|
||||
const timePickerValues = await PageObjects.timePicker.getTimeConfigAsAbsoluteTimes();
|
||||
expect(await filterBar.hasFilter('extension.raw', 'jpg')).to.be(true);
|
||||
expect(timePickerValues.start).to.not.eql(PageObjects.timePicker.defaultStartTime);
|
||||
expect(timePickerValues.end).to.not.eql(PageObjects.timePicker.defaultEndTime);
|
||||
});
|
||||
|
||||
it('preserves the currently loaded query when the page is reloaded', async () => {
|
||||
await browser.refresh();
|
||||
const timePickerValues = await PageObjects.timePicker.getTimeConfigAsAbsoluteTimes();
|
||||
expect(await filterBar.hasFilter('extension.raw', 'jpg')).to.be(true);
|
||||
expect(timePickerValues.start).to.not.eql(PageObjects.timePicker.defaultStartTime);
|
||||
expect(timePickerValues.end).to.not.eql(PageObjects.timePicker.defaultEndTime);
|
||||
await retry.waitFor(
|
||||
'the right hit count',
|
||||
async () => (await PageObjects.discover.getHitCount()) === '2,792'
|
||||
);
|
||||
expect(await savedQueryManagementComponent.getCurrentlyLoadedQueryID()).to.be('OkResponse');
|
||||
});
|
||||
|
||||
it('allows saving changes to a currently loaded query via the saved query management component', async () => {
|
||||
await queryBar.setQuery('response:404');
|
||||
await savedQueryManagementComponent.updateCurrentlyLoadedQuery('OkResponse', false, false);
|
||||
await savedQueryManagementComponent.savedQueryExistOrFail('OkResponse');
|
||||
await savedQueryManagementComponent.clearCurrentlyLoadedQuery();
|
||||
expect(await queryBar.getQueryString()).to.eql('');
|
||||
await savedQueryManagementComponent.loadSavedQuery('OkResponse');
|
||||
expect(await queryBar.getQueryString()).to.eql('response:404');
|
||||
});
|
||||
|
||||
it('allows saving the currently loaded query as a new query', async () => {
|
||||
await savedQueryManagementComponent.saveCurrentlyLoadedAsNewQuery(
|
||||
'OkResponseCopy',
|
||||
'200 responses',
|
||||
false,
|
||||
false
|
||||
);
|
||||
await savedQueryManagementComponent.savedQueryExistOrFail('OkResponseCopy');
|
||||
});
|
||||
|
||||
it('allows deleting the currently loaded saved query in the saved query management component and clears the query', async () => {
|
||||
await savedQueryManagementComponent.deleteSavedQuery('OkResponseCopy');
|
||||
await savedQueryManagementComponent.savedQueryMissingOrFail('OkResponseCopy');
|
||||
expect(await queryBar.getQueryString()).to.eql('');
|
||||
});
|
||||
|
||||
it('does not allow saving a query with a non-unique name', async () => {
|
||||
// this check allows this test to run stand alone, also should fix occacional flakiness
|
||||
const savedQueryExists = await savedQueryManagementComponent.savedQueryExist('OkResponse');
|
||||
if (!savedQueryExists) {
|
||||
await savedQueryManagementComponent.saveNewQuery(
|
||||
'OkResponse',
|
||||
'200 responses for .jpg over 24 hours',
|
||||
true,
|
||||
true
|
||||
);
|
||||
await savedQueryManagementComponent.clearCurrentlyLoadedQuery();
|
||||
}
|
||||
await savedQueryManagementComponent.saveNewQueryWithNameError('OkResponse');
|
||||
});
|
||||
|
||||
it('resets any changes to a loaded query on reloading the same saved query', async () => {
|
||||
await savedQueryManagementComponent.loadSavedQuery('OkResponse');
|
||||
await queryBar.setQuery('response:503');
|
||||
await savedQueryManagementComponent.loadSavedQuery('OkResponse');
|
||||
expect(await queryBar.getQueryString()).to.eql('response:404');
|
||||
});
|
||||
|
||||
it('allows clearing the currently loaded saved query', async () => {
|
||||
await savedQueryManagementComponent.loadSavedQuery('OkResponse');
|
||||
await savedQueryManagementComponent.clearCurrentlyLoadedQuery();
|
||||
expect(await queryBar.getQueryString()).to.eql('');
|
||||
});
|
||||
|
||||
it('allows clearing if non default language was remembered in localstorage', async () => {
|
||||
await queryBar.switchQueryLanguage('lucene');
|
||||
await PageObjects.common.navigateToApp('discover'); // makes sure discovered is reloaded without any state in url
|
||||
await queryBar.expectQueryLanguageOrFail('lucene'); // make sure lucene is remembered after refresh (comes from localstorage)
|
||||
await savedQueryManagementComponent.loadSavedQuery('OkResponse');
|
||||
await queryBar.expectQueryLanguageOrFail('kql');
|
||||
await savedQueryManagementComponent.clearCurrentlyLoadedQuery();
|
||||
await queryBar.expectQueryLanguageOrFail('lucene');
|
||||
});
|
||||
|
||||
it('changing language removes saved query', async () => {
|
||||
await savedQueryManagementComponent.loadSavedQuery('OkResponse');
|
||||
await queryBar.switchQueryLanguage('lucene');
|
||||
expect(await queryBar.getQueryString()).to.eql('');
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
||||
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
||||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
import { GenericFtrProviderContext } from '@kbn/test';
|
||||
import { services } from './services';
|
||||
import { pageObjects } from '../functional/page_objects';
|
||||
|
||||
export type FtrProviderContext = GenericFtrProviderContext<typeof services, typeof pageObjects>;
|
|
@ -1,17 +0,0 @@
|
|||
/*
|
||||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
||||
* or more contributor license agreements. Licensed under the Elastic License
|
||||
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
||||
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
||||
* Side Public License, v 1.
|
||||
*/
|
||||
|
||||
import { services as functionalServices } from '../../functional/services';
|
||||
import { RemoteEsProvider } from './remote_es';
|
||||
import { RemoteEsArchiverProvider } from './remote_es_archiver';
|
||||
|
||||
export const services = {
|
||||
...functionalServices,
|
||||
remoteEs: RemoteEsProvider,
|
||||
remoteEsArchiver: RemoteEsArchiverProvider,
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue