Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Paramaterized Discover tests #129684

Merged
merged 11 commits into from
Apr 13, 2022
2 changes: 1 addition & 1 deletion scripts/functional_tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -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'),
Expand Down
22 changes: 17 additions & 5 deletions test/functional/apps/discover/_data_view_editor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -32,22 +44,22 @@ 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');
});

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(
Expand Down
48 changes: 33 additions & 15 deletions test/functional/apps/discover/_saved_queries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,37 @@ 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');
const filterBar = getService('filterBar');
const queryBar = getService('queryBar');
const savedQueryManagementComponent = getService('savedQueryManagementComponent');
const testSubjects = getService('testSubjects');
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 defaultIndexPatternString = config.get('esTestCluster.ccs')
? 'ftr-remote:logstash-*'
: 'logstash-*';
const dateNestedIndexPattern = config.get('esTestCluster.ccs')
? 'ftr-remote:date-nested'
: 'date-nested';
const defaultSettings = {
defaultIndex: 'logstash-*',
defaultIndex: defaultIndexPatternString,
};
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';
Expand Down Expand Up @@ -59,25 +79,23 @@ 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');
await PageObjects.common.navigateToApp('discover');
});

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();
});

Expand All @@ -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(defaultIndexPatternString);
const currentDataView = await PageObjects.discover.getCurrentlySelectedDataView();
expect(currentDataView).to.be('logstash-*');
expect(currentDataView).to.be(defaultIndexPatternString);
await retry.try(async function tryingForTime() {
const hitCount = await PageObjects.discover.getHitCount();
expect(hitCount).to.be('4,731');
Expand Down
72 changes: 38 additions & 34 deletions test/functional/apps/discover/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand All @@ -23,38 +23,42 @@ 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('./_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'));
} else {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this check necessary? because I think you've prepared _data_view_editor .ts to work with CCS and non-CCS configuration, but that if check would only run it with CCS config?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The check is necessary. The test is run in both configs at line 61, this same file is run if the config is not CCS. When CCS is enabled, we only want the CCS tests to run. I did, however, miss the saved_queries test so I will add that to work when ccs is enabled and push.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, yes I missed that, thanks for the clarification ! 👍

loadTestFile(require.resolve('./_saved_queries'));
cuff-links marked this conversation as resolved.
Show resolved Hide resolved
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('./_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'));
}
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -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'));

Expand All @@ -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',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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');

Expand Down
70 changes: 0 additions & 70 deletions test/functional_ccs/apps/discover/data_view_ccs.ts

This file was deleted.

29 changes: 0 additions & 29 deletions test/functional_ccs/apps/discover/index.ts

This file was deleted.

Loading