[Infra] Attempt to fix flaky test (#192091)

fixes [#191806](https://github.com/elastic/kibana/issues/191806)

## Summary

It was a weird problem that could only be reproduced by running the
host_view test after the node_details test. The cause was that the
synthtrace data was not fully cleaned in between tests
This commit is contained in:
Carlos Crespo 2024-09-06 13:08:03 +02:00 committed by GitHub
parent 6bef58096f
commit 7ad92ba86f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 64 additions and 67 deletions

View file

@ -27,8 +27,6 @@ export class InfraSynthtraceEsClient extends SynthtraceEsClient<InfraDocument> {
'metrics-kubernetes*',
'metrics-docker*',
'metrics-aws*',
'metricbeat-*',
'logs-*',
];
}
}

View file

@ -74,11 +74,16 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
describe('Home page', function () {
this.tags('includeFirefox');
let synthEsClient: InfraSynthtraceEsClient;
before(async () => {
synthEsClient = await getInfraSynthtraceEsClient(esClient);
await kibanaServer.savedObjects.cleanStandardList();
return synthEsClient.clean();
});
after(() => synthEsClient.clean());
describe('without metrics present', () => {
it('renders an empty data prompt and redirects to the onboarding page', async () => {
await pageObjects.common.navigateToApp('infraOps');
@ -110,10 +115,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
});
describe('with metrics present', () => {
let synthEsClient: InfraSynthtraceEsClient;
before(async () => {
synthEsClient = await getInfraSynthtraceEsClient(esClient);
await synthEsClient.clean();
await synthEsClient.index([
generateHostData({
from: DATE_WITH_HOSTS_DATA_FROM,
@ -134,10 +136,8 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
await pageObjects.common.navigateToApp('infraOps');
await pageObjects.infraHome.waitForLoading();
});
after(async () => {
await browser.removeLocalStorageItem(KUBERNETES_TOUR_STORAGE_KEY);
await synthEsClient.clean();
});
after(async () => browser.removeLocalStorageItem(KUBERNETES_TOUR_STORAGE_KEY));
it('renders the correct page title', async () => {
await pageObjects.header.waitUntilLoadingHasFinished();

View file

@ -298,15 +298,38 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
(await pageObjects.infraHostsView.isKPIChartsLoaded())
);
// Failing: See https://github.com/elastic/kibana/issues/191806
describe.skip('Hosts View', function () {
describe('Hosts View', function () {
let synthEsInfraClient: InfraSynthtraceEsClient;
let syntEsLogsClient: LogsSynthtraceEsClient;
let synthtraceApmClient: ApmSynthtraceEsClient;
before(async () => {
synthEsInfraClient = await getInfraSynthtraceEsClient(esClient);
syntEsLogsClient = await getLogsSynthtraceEsClient(esClient);
const version = (await apmSynthtraceKibanaClient.installApmPackage()).version;
synthtraceApmClient = await getApmSynthtraceEsClient({
client: esClient,
packageVersion: version,
});
return Promise.all([
synthtraceApmClient.clean(),
synthEsInfraClient.clean(),
syntEsLogsClient.clean(),
]);
});
after(async () => {
return Promise.all([
apmSynthtraceKibanaClient.uninstallApmPackage(),
synthtraceApmClient.clean(),
synthEsInfraClient.clean(),
syntEsLogsClient.clean(),
]);
});
describe('#Onboarding', function () {
before(async () => {
synthEsInfraClient = await getInfraSynthtraceEsClient(esClient);
await synthEsInfraClient.clean();
await pageObjects.common.navigateToApp(HOSTS_VIEW_PATH);
});
@ -325,14 +348,11 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
});
describe('#With data', function () {
let synthtraceApmClient: ApmSynthtraceEsClient;
before(async () => {
synthEsInfraClient = await getInfraSynthtraceEsClient(esClient);
syntEsLogsClient = await getLogsSynthtraceEsClient(esClient);
const version = (await apmSynthtraceKibanaClient.installApmPackage()).version;
synthtraceApmClient = await getApmSynthtraceEsClient({
client: esClient,
packageVersion: version,
const hosts = generateHostData({
from: DATE_WITH_HOSTS_DATA_FROM,
to: DATE_WITH_HOSTS_DATA_TO,
hosts: SYNTH_HOSTS,
});
const services = generateAddServicesToExistingHost({
@ -350,26 +370,15 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
await browser.setWindowSize(1600, 1200);
return Promise.all([
await Promise.all([
synthEsInfraClient.index(hosts),
synthtraceApmClient.index(services),
synthEsInfraClient.index(
generateHostData({
from: DATE_WITH_HOSTS_DATA_FROM,
to: DATE_WITH_HOSTS_DATA_TO,
hosts: SYNTH_HOSTS,
})
),
syntEsLogsClient.index(logs),
]);
});
after(async () => {
return Promise.all([
apmSynthtraceKibanaClient.uninstallApmPackage(),
synthtraceApmClient.clean(),
synthEsInfraClient.clean(),
browser.removeLocalStorageItem(HOSTS_LINK_LOCAL_STORAGE_KEY),
]);
return browser.removeLocalStorageItem(HOSTS_LINK_LOCAL_STORAGE_KEY);
});
describe('#Single Host Flyout', () => {

View file

@ -15,11 +15,12 @@ export default ({ loadTestFile }: FtrProviderContext) => {
describe('Metrics UI', function () {
loadTestFile(require.resolve('./home_page'));
loadTestFile(require.resolve('./metrics_source_configuration'));
loadTestFile(require.resolve('./metrics_anomalies'));
loadTestFile(require.resolve('./metrics_explorer'));
loadTestFile(require.resolve('./node_details'));
loadTestFile(require.resolve('./hosts_view'));
// keep this test last as it can potentially break other tests
loadTestFile(require.resolve('./metrics_source_configuration'));
});
describe('Logs UI', function () {

View file

@ -31,17 +31,22 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
const kibanaServer = getService('kibanaServer');
describe('Infrastructure Source Configuration', function () {
before(async () => kibanaServer.savedObjects.cleanStandardList());
after(async () => kibanaServer.savedObjects.cleanStandardList());
before(async () =>
Promise.all([
esArchiver.load('x-pack/test/functional/es_archives/infra/alerts'),
esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs'),
kibanaServer.savedObjects.cleanStandardList(),
])
);
after(async () =>
Promise.all([
esArchiver.unload('x-pack/test/functional/es_archives/infra/alerts'),
esArchiver.unload('x-pack/test/functional/es_archives/infra/metrics_and_logs'),
kibanaServer.savedObjects.cleanStandardList(),
])
);
describe('with metrics present', () => {
before(async () =>
esArchiver.load('x-pack/test/functional/es_archives/infra/metrics_and_logs')
);
after(async () =>
esArchiver.unload('x-pack/test/functional/es_archives/infra/metrics_and_logs')
);
it('renders the waffle map', async () => {
await pageObjects.common.navigateToApp('infraOps');
await pageObjects.infraHome.goToTime(DATE_WITH_DATA);

View file

@ -139,19 +139,16 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
let synthEsClient: InfraSynthtraceEsClient;
before(async () => {
synthEsClient = await getInfraSynthtraceEsClient(esClient);
await synthEsClient.clean();
await kibanaServer.savedObjects.cleanStandardList();
await browser.setWindowSize(1600, 1200);
return synthEsClient.clean();
});
after(async () => {
await synthEsClient.clean();
});
after(() => synthEsClient.clean());
describe('#Asset Type: host', () => {
before(async () => {
synthEsClient = await getInfraSynthtraceEsClient(esClient);
await synthEsClient.clean();
await synthEsClient.index(
generateHostData({
from: DATE_WITH_HOSTS_DATA_FROM,
@ -159,20 +156,15 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
hosts: HOSTS,
})
);
await navigateToNodeDetails('host-1', 'host', {
name: 'host-1',
});
await pageObjects.header.waitUntilLoadingHasFinished();
await pageObjects.timePicker.setAbsoluteRange(
START_HOST_DATE.format(DATE_PICKER_FORMAT),
END_HOST_DATE.format(DATE_PICKER_FORMAT)
);
});
after(async () => {
await synthEsClient.clean();
});
after(() => synthEsClient.clean());
it('preserves selected tab between page reloads', async () => {
await testSubjects.missingOrFail('infraAssetDetailsMetadataTable');
@ -633,8 +625,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
describe('#Asset type: host with kubernetes section', () => {
before(async () => {
synthEsClient = await getInfraSynthtraceEsClient(esClient);
await synthEsClient.clean();
await synthEsClient.index(
generateHostsWithK8sNodeData({
from: DATE_WITH_HOSTS_DATA_FROM,
@ -651,9 +641,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
);
});
after(async () => {
await synthEsClient.clean();
});
after(() => synthEsClient.clean());
describe('Overview Tab', () => {
before(async () => {
@ -727,8 +715,6 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
describe('#Asset Type: container', () => {
before(async () => {
synthEsClient = await getInfraSynthtraceEsClient(esClient);
await synthEsClient.clean();
await synthEsClient.index(
generateDockerContainersData({
from: DATE_WITH_DOCKER_DATA_FROM,
@ -744,9 +730,7 @@ export default ({ getPageObjects, getService }: FtrProviderContext) => {
);
});
after(async () => {
await synthEsClient.clean();
});
after(() => synthEsClient.clean());
describe('when container asset view is disabled', () => {
before(async () => {