[8.6] [DOCS] Automate transform rule screenshots (#151087) (#151779)

# Backport

This will backport the following commits from `main` to `8.6`:
- [[DOCS] Automate transform rule screenshots
(#151087)](https://github.com/elastic/kibana/pull/151087)

<!--- Backport version: 8.9.7 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sqren/backport)

<!--BACKPORT [{"author":{"name":"Lisa
Cawley","email":"lcawley@elastic.co"},"sourceCommit":{"committedDate":"2023-02-20T12:29:39Z","message":"[DOCS]
Automate transform rule screenshots
(#151087)","sha":"6f4cbe21ccabf80b08e27acd54d82bdbd2d2ddb0","branchLabelMapping":{"^v8.8.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","Feature:Transforms","docs","backport:prev-minor","v8.7.0","v8.6.2","v8.8.0"],"number":151087,"url":"https://github.com/elastic/kibana/pull/151087","mergeCommit":{"message":"[DOCS]
Automate transform rule screenshots
(#151087)","sha":"6f4cbe21ccabf80b08e27acd54d82bdbd2d2ddb0"}},"sourceBranch":"main","suggestedTargetBranches":["8.6"],"targetPullRequestStates":[{"branch":"8.7","label":"v8.7.0","labelRegex":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"url":"https://github.com/elastic/kibana/pull/151611","number":151611,"state":"MERGED","mergeCommit":{"sha":"18becb814d9458cd2935adf7158462a361914d63","message":"[8.7]
[DOCS] Automate transform rule screenshots (#151087) (#151611)\n\n#
Backport\n\nThis will backport the following commits from `main` to
`8.7`:\n- [[DOCS] Automate transform rule
screenshots\n(#151087)](https://github.com/elastic/kibana/pull/151087)\n\n<!---
Backport version: 8.9.7 -->\n\n### Questions ?\nPlease refer to the
[Backport
tool\ndocumentation](https://github.com/sqren/backport)\n\n<!--BACKPORT
[{\"author\":{\"name\":\"Lisa\nCawley\",\"email\":\"lcawley@elastic.co\"},\"sourceCommit\":{\"committedDate\":\"2023-02-20T12:29:39Z\",\"message\":\"[DOCS]\nAutomate
transform rule
screenshots\n(#151087)\",\"sha\":\"6f4cbe21ccabf80b08e27acd54d82bdbd2d2ddb0\",\"branchLabelMapping\":{\"^v8.8.0$\":\"main\",\"^v(\\\\d+).(\\\\d+).\\\\d+$\":\"$1.$2\"}},\"sourcePullRequest\":{\"labels\":[\"release_note:skip\",\"Feature:Transforms\",\"docs\",\"backport:prev-minor\",\"v8.7.0\",\"v8.6.2\",\"v8.8.0\"],\"number\":151087,\"url\":\"https://github.com/elastic/kibana/pull/151087\",\"mergeCommit\":{\"message\":\"[DOCS]\nAutomate
transform rule
screenshots\n(#151087)\",\"sha\":\"6f4cbe21ccabf80b08e27acd54d82bdbd2d2ddb0\"}},\"sourceBranch\":\"main\",\"suggestedTargetBranches\":[\"8.7\",\"8.6\"],\"targetPullRequestStates\":[{\"branch\":\"8.7\",\"label\":\"v8.7.0\",\"labelRegex\":\"^v(\\\\d+).(\\\\d+).\\\\d+$\",\"isSourceBranch\":false,\"state\":\"NOT_CREATED\"},{\"branch\":\"8.6\",\"label\":\"v8.6.2\",\"labelRegex\":\"^v(\\\\d+).(\\\\d+).\\\\d+$\",\"isSourceBranch\":false,\"state\":\"NOT_CREATED\"},{\"branch\":\"main\",\"label\":\"v8.8.0\",\"labelRegex\":\"^v8.8.0$\",\"isSourceBranch\":true,\"state\":\"MERGED\",\"url\":\"https://github.com/elastic/kibana/pull/151087\",\"number\":151087,\"mergeCommit\":{\"message\":\"[DOCS]\nAutomate
transform rule
screenshots\n(#151087)\",\"sha\":\"6f4cbe21ccabf80b08e27acd54d82bdbd2d2ddb0\"}}]}]\nBACKPORT-->\n\nCo-authored-by:
Lisa Cawley
<lcawley@elastic.co>"}},{"branch":"8.6","label":"v8.6.2","labelRegex":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v8.8.0","labelRegex":"^v8.8.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/151087","number":151087,"mergeCommit":{"message":"[DOCS]
Automate transform rule screenshots
(#151087)","sha":"6f4cbe21ccabf80b08e27acd54d82bdbd2d2ddb0"}}]}]
BACKPORT-->
This commit is contained in:
Lisa Cawley 2023-02-21 12:12:45 -08:00 committed by GitHub
parent ef9b5b2d80
commit 2ea3206504
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 176 additions and 3 deletions

View file

@ -0,0 +1,59 @@
/*
* 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 expect from '@kbn/expect';
import { FtrProviderContext } from '../../ftr_provider_context';
export function TransformAlertingProvider({ getService }: FtrProviderContext) {
const retry = getService('retry');
const testSubjects = getService('testSubjects');
const comboBox = getService('comboBox');
return {
async selectTransformAlertType() {
await retry.tryForTime(5000, async () => {
await testSubjects.click('transform_health-SelectOption');
await testSubjects.existOrFail(`transformHealthAlertingRuleForm`, { timeout: 1000 });
});
},
async selectTransforms(transformIds: string[]) {
for (const transformId of transformIds) {
await comboBox.set('transformSelection > comboBoxInput', transformId);
}
await this.assertTransformSelection(transformIds);
},
async assertTransformSelection(expectedTransformIds: string[]) {
const comboBoxSelectedOptions = await comboBox.getComboBoxSelectedOptions(
'transformSelection > comboBoxInput'
);
expect(comboBoxSelectedOptions).to.eql(
expectedTransformIds,
`Expected job selection to be '${expectedTransformIds}' (got '${comboBoxSelectedOptions}')`
);
},
async openAddRuleVariable() {
await retry.tryForTime(5000, async () => {
await testSubjects.click('messageAddVariableButton');
await testSubjects.existOrFail('variableMenuButton-alert.actionGroup', { timeout: 1000 });
});
},
async setRuleName(rulename: string) {
await testSubjects.setValue('ruleNameInput', rulename);
},
async clickCancelSaveRuleButton() {
await retry.tryForTime(5000, async () => {
await testSubjects.click('cancelSaveRuleButton');
await testSubjects.existOrFail('confirmModalTitleText', { timeout: 1000 });
await testSubjects.click('confirmModalConfirmButton');
});
},
};
}

View file

@ -18,6 +18,7 @@ import { TransformSourceSelectionProvider } from './source_selection';
import { TransformTableProvider } from './transform_table';
import { TransformTestExecutionProvider } from './test_execution';
import { TransformWizardProvider } from './wizard';
import { TransformAlertingProvider } from './alerting';
import { MachineLearningAPIProvider } from '../ml/api';
import { MachineLearningTestResourcesProvider } from '../ml/test_resources';
@ -36,8 +37,10 @@ export function TransformProvider(context: FtrProviderContext) {
const testExecution = TransformTestExecutionProvider(context);
const testResources = MachineLearningTestResourcesProvider(context, mlApi);
const wizard = TransformWizardProvider(context);
const alerting = TransformAlertingProvider(context);
return {
alerting,
api,
discover,
editFlyout,

View file

@ -7,12 +7,19 @@
import { FtrProviderContext } from '../../ftr_provider_context';
export function TransformNavigationProvider({ getPageObjects }: FtrProviderContext) {
const PageObjects = getPageObjects(['common']);
export function TransformNavigationProvider({ getPageObjects, getService }: FtrProviderContext) {
const pageObjects = getPageObjects(['common']);
const testSubjects = getService('testSubjects');
return {
async navigateTo() {
return await PageObjects.common.navigateToApp('transform');
return await pageObjects.common.navigateToApp('transform');
},
async navigateToRules() {
await pageObjects.common.navigateToApp('triggersActions');
await testSubjects.click('rulesTab');
await testSubjects.existOrFail('rulesList');
},
};
}

View file

@ -11,5 +11,6 @@ export default function ({ loadTestFile }: FtrProviderContext) {
describe('apps', function () {
loadTestFile(require.resolve('./ml_docs'));
loadTestFile(require.resolve('./response_ops_docs'));
loadTestFile(require.resolve('./transform_docs'));
});
}

View file

@ -0,0 +1,36 @@
/*
* 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 { esTestConfig } from '@kbn/test';
import { FtrProviderContext } from '../../ftr_provider_context';
export default function ({ getPageObject, getService, loadTestFile }: FtrProviderContext) {
const browser = getService('browser');
const ml = getService('ml');
const securityPage = getPageObject('security');
describe('transform docs', function () {
this.tags(['transforms']);
before(async () => {
await ml.testResources.setKibanaTimeZoneToUTC();
await ml.testResources.disableKibanaAnnouncements();
await browser.setWindowSize(1920, 1080);
await securityPage.login(
esTestConfig.getUrlParts().username,
esTestConfig.getUrlParts().password
);
});
after(async () => {
await securityPage.forceLogout();
await ml.testResources.resetKibanaTimeZone();
await ml.testResources.resetKibanaAnnouncements();
});
loadTestFile(require.resolve('./transform_alerts'));
});
}

View file

@ -0,0 +1,67 @@
/*
* 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 function ({ getPageObjects, getService }: FtrProviderContext) {
const actions = getService('actions');
const browser = getService('browser');
const commonScreenshots = getService('commonScreenshots');
const testSubjects = getService('testSubjects');
const transform = getService('transform');
const screenshotDirectories = ['transform_docs'];
const pageObjects = getPageObjects(['triggersActionsUI']);
let testTransformId = '';
describe('transform alerts', function () {
before(async () => {
await browser.setWindowSize(1920, 1080);
await actions.api.createConnector({
name: 'server-log-connector',
config: {},
secrets: {},
connectorTypeId: '.server-log',
});
});
after(async () => {
await actions.api.deleteAllConnectors();
});
it('transform rule screenshot', async () => {
await transform.testExecution.logTestStep('navigate to stack management rules');
await transform.navigation.navigateToRules();
await pageObjects.triggersActionsUI.clickCreateAlertButton();
await transform.alerting.setRuleName('transform-health-rule');
await transform.testExecution.logTestStep(
'search for transform rule type and take screenshot'
);
const searchBox = await testSubjects.find('ruleSearchField');
await searchBox.click();
await searchBox.clearValue();
await searchBox.type('transform');
await searchBox.pressKeys(browser.keys.ENTER);
await commonScreenshots.takeScreenshot('transform-rule', screenshotDirectories);
await transform.testExecution.logTestStep('select transform details and take screenshot');
await transform.alerting.selectTransformAlertType();
testTransformId = '*';
await transform.alerting.selectTransforms([testTransformId]);
await commonScreenshots.takeScreenshot('transform-check-config', screenshotDirectories);
await transform.testExecution.logTestStep(
'add server log connector and take action variable screenshot'
);
await testSubjects.click('.server-log-alerting-ActionTypeSelectOption');
await transform.alerting.openAddRuleVariable();
await commonScreenshots.takeScreenshot('transform-alert-actions', screenshotDirectories);
await transform.alerting.clickCancelSaveRuleButton();
});
});
}