[ftr] split serverless config to speedup test run on CI (#168195)

## Summary

After [164798](https://github.com/elastic/kibana/pull/164798) was merged
CI singnificantly slowed down because f these FTR groups:

```
x-pack/test_serverless/functional/test_suites/security/common_configs/config.group2.ts: 75.6 minutes
x-pack/test_serverless/functional/test_suites/search/common_configs/config.group2.ts: 75 minutes
x-pack/test_serverless/functional/test_suites/observability/common_configs/config.group2.ts: 74.7 minutes
```

This PR splits each group into 3.
This commit is contained in:
Dzmitry Lemechko 2023-10-06 22:23:11 +02:00 committed by GitHub
parent 6c5603c952
commit d05349bf5f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
28 changed files with 179 additions and 25 deletions

View file

@ -412,16 +412,22 @@ enabled:
- x-pack/test_serverless/functional/test_suites/observability/config.examples.ts
- x-pack/test_serverless/functional/test_suites/observability/common_configs/config.group1.ts
- x-pack/test_serverless/functional/test_suites/observability/common_configs/config.group2.ts
- x-pack/test_serverless/functional/test_suites/observability/common_configs/config.group3.ts
- x-pack/test_serverless/functional/test_suites/observability/common_configs/config.group4.ts
- x-pack/test_serverless/functional/test_suites/observability/config.screenshots.ts
- x-pack/test_serverless/functional/test_suites/search/config.ts
- x-pack/test_serverless/functional/test_suites/search/config.examples.ts
- x-pack/test_serverless/functional/test_suites/search/config.screenshots.ts
- x-pack/test_serverless/functional/test_suites/search/common_configs/config.group1.ts
- x-pack/test_serverless/functional/test_suites/search/common_configs/config.group2.ts
- x-pack/test_serverless/functional/test_suites/search/common_configs/config.group3.ts
- x-pack/test_serverless/functional/test_suites/search/common_configs/config.group4.ts
- x-pack/test_serverless/functional/test_suites/security/config.ts
- x-pack/test_serverless/functional/test_suites/security/config.examples.ts
- x-pack/test_serverless/functional/test_suites/security/common_configs/config.group1.ts
- x-pack/test_serverless/functional/test_suites/security/common_configs/config.group2.ts
- x-pack/test_serverless/functional/test_suites/security/common_configs/config.group3.ts
- x-pack/test_serverless/functional/test_suites/security/common_configs/config.group4.ts
- x-pack/performance/journeys/ecommerce_dashboard.ts
- x-pack/performance/journeys/ecommerce_dashboard_map_only.ts
- x-pack/performance/journeys/flight_dashboard.ts

View file

@ -13,7 +13,7 @@ export default ({ getService, loadTestFile, getPageObjects }: FtrProviderContext
const log = getService('log');
const esArchiver = getService('esArchiver');
const kibanaServer = getService('kibanaServer');
const PageObjects = getPageObjects(['timePicker']);
const PageObjects = getPageObjects(['timePicker', 'svlCommonPage']);
const config = getService('config');
let remoteEsArchiver;
@ -53,19 +53,21 @@ export default ({ getService, loadTestFile, getPageObjects }: FtrProviderContext
}
await esNode.load(esArchive);
// changing the timepicker default here saves us from having to set it in Discover (~8s)
await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings();
await kibanaServer.uiSettings.update({
defaultIndex: indexPatternString,
'dateFormat:tz': 'UTC',
});
await kibanaServer.importExport.load(fixtureDirs.lensBasic);
await kibanaServer.importExport.load(fixtureDirs.lensDefault);
await PageObjects.svlCommonPage.login();
// changing the timepicker default here saves us from having to set it in Discover (~8s)
await PageObjects.timePicker.setDefaultAbsoluteRangeViaUiSettings();
});
after(async () => {
await esArchiver.unload(esArchive);
await PageObjects.timePicker.resetDefaultAbsoluteRangeViaUiSettings();
await PageObjects.svlCommonPage.forceLogout();
await kibanaServer.importExport.unload(fixtureDirs.lensBasic);
await kibanaServer.importExport.unload(fixtureDirs.lensDefault);
await kibanaServer.savedObjects.cleanStandardList();

View file

@ -5,18 +5,20 @@
* 2.0.
*/
import { FtrProviderContext } from '../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../ftr_provider_context';
export default ({ loadTestFile, getPageObject }: FtrProviderContext) => {
const svlCommonPage = getPageObject('svlCommonPage');
describe('Visualizations', function () {
describe('Visualizations - Group 2', function () {
before(async () => {
await svlCommonPage.login();
});
loadTestFile(require.resolve('./group1'));
after(async () => {
await svlCommonPage.forceLogout();
});
loadTestFile(require.resolve('./open_in_lens/agg_based'));
loadTestFile(require.resolve('./open_in_lens/tsvb'));
});
};

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']);

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']);

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']);

View file

@ -6,7 +6,7 @@
*/
import { EsArchiver } from '@kbn/es-archiver';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ loadTestFile, getService, getPageObjects }: FtrProviderContext) {
const browser = getService('browser');

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']);

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']);

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']);

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']);

View file

@ -0,0 +1,24 @@
/*
* 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; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { FtrProviderContext } from '../../../../ftr_provider_context';
export default ({ loadTestFile, getPageObject }: FtrProviderContext) => {
const svlCommonPage = getPageObject('svlCommonPage');
describe('Visualizations - Group 3', function () {
before(async () => {
await svlCommonPage.login();
});
after(async () => {
await svlCommonPage.forceLogout();
});
loadTestFile(require.resolve('./open_in_lens/tsvb'));
});
};

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const { lens, timePicker, dashboard, canvas } = getPageObjects([

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']);

View file

@ -6,7 +6,7 @@
*/
import { EsArchiver } from '@kbn/es-archiver';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ loadTestFile, getService, getPageObjects }: FtrProviderContext) {
const browser = getService('browser');

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']);

View file

@ -13,7 +13,7 @@
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']);

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']);

View file

@ -6,7 +6,7 @@
*/
import expect from '@kbn/expect';
import { FtrProviderContext } from '../../../../../ftr_provider_context';
import { FtrProviderContext } from '../../../../../../ftr_provider_context';
export default function ({ getPageObjects, getService }: FtrProviderContext) {
const { lens, timePicker, dashboard } = getPageObjects(['lens', 'timePicker', 'dashboard']);

View file

@ -12,7 +12,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
return {
...baseTestConfig.getAll(),
testFiles: [require.resolve('../../common/visualizations')],
testFiles: [require.resolve('../../common/visualizations/group1')],
junit: {
reportName: 'Serverless Observability Functional Tests - Common Group 2',
},

View file

@ -0,0 +1,20 @@
/*
* 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; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { FtrConfigProviderContext } from '@kbn/test';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const baseTestConfig = await readConfigFile(require.resolve('../config.ts'));
return {
...baseTestConfig.getAll(),
testFiles: [require.resolve('../../common/visualizations/group2')],
junit: {
reportName: 'Serverless Observability Functional Tests - Common Group 3',
},
};
}

View file

@ -0,0 +1,20 @@
/*
* 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; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { FtrConfigProviderContext } from '@kbn/test';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const baseTestConfig = await readConfigFile(require.resolve('../config.ts'));
return {
...baseTestConfig.getAll(),
testFiles: [require.resolve('../../common/visualizations/group3')],
junit: {
reportName: 'Serverless Observability Functional Tests - Common Group 4',
},
};
}

View file

@ -12,7 +12,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
return {
...baseTestConfig.getAll(),
testFiles: [require.resolve('../../common/visualizations')],
testFiles: [require.resolve('../../common/visualizations/group1')],
junit: {
reportName: 'Serverless Search Functional Tests - Common Group 2',
},

View file

@ -0,0 +1,20 @@
/*
* 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; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { FtrConfigProviderContext } from '@kbn/test';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const baseTestConfig = await readConfigFile(require.resolve('../config.ts'));
return {
...baseTestConfig.getAll(),
testFiles: [require.resolve('../../common/visualizations/group2')],
junit: {
reportName: 'Serverless Search Functional Tests - Common Group 2',
},
};
}

View file

@ -0,0 +1,20 @@
/*
* 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; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { FtrConfigProviderContext } from '@kbn/test';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const baseTestConfig = await readConfigFile(require.resolve('../config.ts'));
return {
...baseTestConfig.getAll(),
testFiles: [require.resolve('../../common/visualizations/group3')],
junit: {
reportName: 'Serverless Search Functional Tests - Common Group 2',
},
};
}

View file

@ -12,7 +12,7 @@ export default async function ({ readConfigFile }: FtrConfigProviderContext) {
return {
...baseTestConfig.getAll(),
testFiles: [require.resolve('../../common/visualizations')],
testFiles: [require.resolve('../../common/visualizations/group1')],
junit: {
reportName: 'Serverless Security Functional Tests - Common Group 2',
},

View file

@ -0,0 +1,20 @@
/*
* 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; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { FtrConfigProviderContext } from '@kbn/test';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const baseTestConfig = await readConfigFile(require.resolve('../config.ts'));
return {
...baseTestConfig.getAll(),
testFiles: [require.resolve('../../common/visualizations/group2')],
junit: {
reportName: 'Serverless Security Functional Tests - Common Group 3',
},
};
}

View file

@ -0,0 +1,20 @@
/*
* 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; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import { FtrConfigProviderContext } from '@kbn/test';
export default async function ({ readConfigFile }: FtrConfigProviderContext) {
const baseTestConfig = await readConfigFile(require.resolve('../config.ts'));
return {
...baseTestConfig.getAll(),
testFiles: [require.resolve('../../common/visualizations/group3')],
junit: {
reportName: 'Serverless Security Functional Tests - Common Group 4',
},
};
}