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

[RAC] [Observability] Expand Observability alerts page functional tests #111297

Merged
Original file line number Diff line number Diff line change
Expand Up @@ -127,9 +127,9 @@ export function AlertsFlyout({
];

return (
<EuiFlyout onClose={onClose} size="s">
<EuiFlyout onClose={onClose} size="s" data-test-subj="alertsFlyout">
<EuiFlyoutHeader>
<EuiTitle size="m">
<EuiTitle size="m" data-test-subj="alertsFlyoutTitle">
<h2>{alertData.fields[ALERT_RULE_NAME]}</h2>
</EuiTitle>
<EuiSpacer size="s" />
Expand All @@ -141,13 +141,27 @@ export function AlertsFlyout({
compressed={true}
type="responsiveColumn"
listItems={overviewListItems}
titleProps={
{
'data-test-subj': 'alertsFlyoutDescriptionListTitle',
} as any // NOTE / TODO: This "any" is a temporary workaround: https://github.com/elastic/eui/issues/5148
}
descriptionProps={
{
'data-test-subj': 'alertsFlyoutDescriptionListDescription',
} as any // NOTE / TODO: This "any" is a temporary workaround: https://github.com/elastic/eui/issues/5148
}
/>
</EuiFlyoutBody>
{alertData.link && !isInApp && (
<EuiFlyoutFooter>
<EuiFlexGroup justifyContent="flexEnd">
<EuiFlexItem grow={false}>
<EuiButton href={prepend && prepend(alertData.link)} fill>
<EuiButton
href={prepend && prepend(alertData.link)}
data-test-subj="alertsFlyoutViewInAppButton"
fill
>
View in app
</EuiButton>
</EuiFlexItem>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,7 @@ function ObservabilityActions({
iconType="expand"
color="text"
onClick={() => setFlyoutAlert(alert)}
data-test-subj="toggleFlyoutButton"
/>
</EuiFlexItem>
<EuiFlexItem>
Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,12 @@
}
}
},
"id": {
"type": "keyword"
"instance": {
"properties": {
"id": {
"type": "keyword"
}
}
},
"reason": {
"type": "keyword"
Expand Down Expand Up @@ -325,8 +329,12 @@
}
}
},
"id": {
"type": "keyword"
"instance": {
"properties": {
"id": {
"type": "keyword"
}
}
},
"reason": {
"type": "keyword"
Expand Down Expand Up @@ -561,8 +569,12 @@
}
}
},
"id": {
"type": "keyword"
"instance": {
"properties": {
"id": {
"type": "keyword"
}
}
},
"reason": {
"type": "keyword"
Expand Down
123 changes: 123 additions & 0 deletions x-pack/test/functional/services/observability/alerts.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
/*
* 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 querystring from 'querystring';
import { FtrProviderContext } from '../../ftr_provider_context';
import { WebElementWrapper } from '../../../../../test/functional/services/lib/web_element_wrapper';

// Based on the x-pack/test/functional/es_archives/observability/alerts archive.
const DATE_WITH_DATA = {
rangeFrom: '2021-09-01T13:36:22.109Z',
rangeTo: '2021-09-03T13:36:22.109Z',
};

export function ObservabilityAlertsProvider({ getPageObjects, getService }: FtrProviderContext) {
const testSubjects = getService('testSubjects');
const pageObjects = getPageObjects(['common']);

const navigateToTimeWithData = async () => {
return await pageObjects.common.navigateToUrlWithBrowserHistory(
'observability',
'/alerts',
`?${querystring.stringify(DATE_WITH_DATA)}`
);
};

const getTableCells = async () => {
// NOTE: This isn't ideal, but EuiDataGrid doesn't really have the concept of "rows"
return await testSubjects.findAll('dataGridRowCell');
};

const getTableOrFail = async () => {
return await testSubjects.existOrFail('events-viewer-panel');
};

const getNoDataStateOrFail = async () => {
return await testSubjects.existOrFail('events-container-loading-false');
};

// Query Bar
const getQueryBar = async () => {
return await testSubjects.find('queryInput');
};

const getQuerySubmitButton = async () => {
return await testSubjects.find('querySubmitButton');
};

const clearQueryBar = async () => {
return await (await getQueryBar()).clearValueWithKeyboard({ charByChar: true });
};

const typeInQueryBar = async (query: string) => {
return await (await getQueryBar()).type(query);
};

const submitQuery = async (query: string) => {
await typeInQueryBar(query);
return await (await getQuerySubmitButton()).click();
};

// Flyout
const getToggleFlyoutButton = async () => {
return await testSubjects.find('toggleFlyoutButton');
};

const toggleFlyout = async () => {
await (await getToggleFlyoutButton()).click();
return await pageObjects.common.sleep(2500); // Wait for the animation
};

const getAlertsFlyout = async () => {
return await testSubjects.find('alertsFlyout');
};

const getAlertsFlyoutOrFail = async () => {
return await testSubjects.existOrFail('alertsFlyout');
};

const getAlertsFlyoutTitle = async () => {
return await testSubjects.find('alertsFlyoutTitle');
};

const closeAlertsFlyout = async () => {
const flyout = await getAlertsFlyout();
return await (await testSubjects.findDescendant('euiFlyoutCloseButton', flyout)).click();
};

const getAlertsFlyoutViewInAppButtonOrFail = async () => {
return await testSubjects.existOrFail('alertsFlyoutViewInAppButton');
};

const getAlertsFlyoutDescriptionListTitles = async (): Promise<WebElementWrapper[]> => {
const flyout = await getAlertsFlyout();
return await testSubjects.findAllDescendant('alertsFlyoutDescriptionListTitle', flyout);
};

const getAlertsFlyoutDescriptionListDescriptions = async (): Promise<WebElementWrapper[]> => {
const flyout = await getAlertsFlyout();
return await testSubjects.findAllDescendant('alertsFlyoutDescriptionListDescription', flyout);
};

return {
clearQueryBar,
typeInQueryBar,
submitQuery,
getTableCells,
getTableOrFail,
getNoDataStateOrFail,
toggleFlyout,
getAlertsFlyout,
getAlertsFlyoutTitle,
closeAlertsFlyout,
navigateToTimeWithData,
getAlertsFlyoutOrFail,
getAlertsFlyoutViewInAppButtonOrFail,
getAlertsFlyoutDescriptionListTitles,
getAlertsFlyoutDescriptionListDescriptions,
};
}
3 changes: 3 additions & 0 deletions x-pack/test/functional/services/observability/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,14 @@

import { FtrProviderContext } from '../../ftr_provider_context';
import { ObservabilityUsersProvider } from './users';
import { ObservabilityAlertsProvider } from './alerts';

export function ObservabilityProvider(context: FtrProviderContext) {
const users = ObservabilityUsersProvider(context);
const alerts = ObservabilityAlertsProvider(context);

return {
users,
alerts,
};
}
Loading