kibana/x-pack/test/accessibility/apps/transform.ts
Spencer f466ebf1a3
[esArchiver] drop support for --dir, use repo-relative paths instead (#101345)
Co-authored-by: spalger <spalger@users.noreply.github.com>
2021-06-08 17:37:42 -04:00

262 lines
11 KiB
TypeScript

/*
* 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 ({ getService }: FtrProviderContext) {
const a11y = getService('a11y');
const transform = getService('transform');
describe('transform', () => {
const esArchiver = getService('esArchiver');
before(async () => {
await transform.securityCommon.createTransformRoles();
await transform.securityCommon.createTransformUsers();
});
after(async () => {
await transform.securityCommon.cleanTransformUsers();
await transform.securityCommon.cleanTransformRoles();
});
describe('for user with full Transform access', function () {
before(async () => {
await transform.securityUI.loginAsTransformPowerUser();
});
after(async () => {
await transform.securityUI.logout();
});
describe('with no transforms created', function () {
it('Transform management page', async () => {
await transform.navigation.navigateTo();
await a11y.testAppSnapshot();
});
});
describe('with data loaded', function () {
const ecIndexPattern = 'ft_ecommerce';
const pivotGroupByEntries = [
{
identifier: 'terms(category)',
label: 'category',
},
{
identifier: 'date_histogram(order_date)',
label: 'order_date',
intervalLabel: '1m',
},
];
const pivotAggregationEntries = [
{
identifier: 'avg(products.base_price)',
label: 'products.base_price.avg',
},
{
identifier: 'avg(taxful_total_price)',
label: 'taxful_total_price.avg',
},
];
const pivotTransformId = `ec_pivot_${Date.now()}`;
const pivotTransformDescription = 'ecommerce batch pivot transform';
const pivotTransformDestinationIndex = `user-${pivotTransformId}`;
const latestTransformUniqueKeys = [
{
identifier: 'geoip.country_iso_code',
label: 'geoip.country_iso_code',
},
];
const latestTransformSortField = {
identifier: 'order_date',
label: 'order_date',
};
const latestTransformId = `ec_latest_${Date.now()}`;
const latestTransformDescription = 'ecommerce batch latest transform';
const latestTransformDestinationIndex = `user-${latestTransformId}`;
before(async () => {
await esArchiver.loadIfNeeded('x-pack/test/functional/es_archives/ml/ecommerce');
await transform.testResources.createIndexPatternIfNeeded(ecIndexPattern, 'order_date');
await transform.testResources.setKibanaTimeZoneToUTC();
});
after(async () => {
await transform.api.cleanTransformIndices();
await transform.api.deleteIndices(pivotTransformDestinationIndex);
await transform.api.deleteIndices(latestTransformDestinationIndex);
await transform.testResources.deleteIndexPatternByTitle(pivotTransformDestinationIndex);
await transform.testResources.deleteIndexPatternByTitle(latestTransformDestinationIndex);
await transform.testResources.deleteIndexPatternByTitle(ecIndexPattern);
await esArchiver.unload('x-pack/test/functional/es_archives/ml/ecommerce');
await transform.testResources.resetKibanaTimeZone();
});
it('create transform select index pattern modal', async () => {
await transform.navigation.navigateTo();
await transform.management.startTransformCreation();
await a11y.testAppSnapshot();
});
it('create transform configuration step source preview', async () => {
await transform.testExecution.logTestStep(
'transform creation selects the source data and loads the Transform wizard page'
);
await transform.sourceSelection.selectSource(ecIndexPattern);
await transform.testExecution.logTestStep('loads the index preview');
await transform.wizard.assertIndexPreviewLoaded();
await transform.testExecution.logTestStep('displays an empty transform preview');
await transform.wizard.assertTransformPreviewEmpty();
await a11y.testAppSnapshot();
});
it('create pivot transform configuration step transform preview', async () => {
await transform.testExecution.logTestStep('adding pivot transform group by entries');
for (const [index, entry] of pivotGroupByEntries.entries()) {
await transform.wizard.addGroupByEntry(
index,
entry.identifier,
entry.label,
entry.intervalLabel
);
}
await transform.testExecution.logTestStep('adds pivot transform aggregation entries');
await transform.wizard.addAggregationEntries(pivotAggregationEntries);
await transform.wizard.assertPivotPreviewLoaded();
await a11y.testAppSnapshot();
});
it('create pivot transform configuration step JSON editor', async () => {
await transform.testExecution.logTestStep('displays the JSON pivot configuration');
await transform.wizard.assertAdvancedPivotEditorSwitchExists();
await transform.wizard.enableAdvancedPivotEditor();
await a11y.testAppSnapshot();
});
it('create pivot transform details step', async () => {
await transform.wizard.advanceToDetailsStep();
await transform.testExecution.logTestStep('inputs the transform id');
await transform.wizard.assertTransformIdInputExists();
await transform.wizard.setTransformId(pivotTransformId);
await transform.testExecution.logTestStep('inputs the transform description');
await transform.wizard.assertTransformDescriptionInputExists();
await transform.wizard.setTransformDescription(pivotTransformDescription);
await transform.testExecution.logTestStep('inputs the destination index');
await transform.wizard.assertDestinationIndexInputExists();
await transform.wizard.setDestinationIndex(pivotTransformDestinationIndex);
await a11y.testAppSnapshot();
});
it('create pivot transform create step', async () => {
await transform.wizard.advanceToCreateStep();
await transform.testExecution.logTestStep('displays the create and start button');
await transform.wizard.assertCreateAndStartButtonExists();
await a11y.testAppSnapshot();
});
it('runs the pivot transform and displays management page', async () => {
await transform.testExecution.logTestStep('creates the transform');
await transform.wizard.createTransform();
await transform.testExecution.logTestStep('starts the transform and finishes processing');
await transform.wizard.startTransform();
await transform.wizard.waitForProgressBarComplete();
await transform.testExecution.logTestStep('returns to the management page');
await transform.wizard.returnToManagement();
await transform.testExecution.logTestStep('displays the transforms table');
await transform.management.assertTransformsTableExists();
await a11y.testAppSnapshot();
});
it('create latest transform configuration step source preview', async () => {
await transform.navigation.navigateTo();
await transform.management.startTransformCreation();
await transform.testExecution.logTestStep(
'selects the source data and loads the Transform wizard page'
);
await transform.sourceSelection.selectSource(ecIndexPattern);
await transform.wizard.assertIndexPreviewLoaded();
await transform.wizard.assertTransformPreviewEmpty();
await transform.testExecution.logTestStep('sets latest transform method');
await transform.wizard.selectTransformFunction('latest');
await a11y.testAppSnapshot();
});
it('create latest transform configuration step transform preview', async () => {
await transform.testExecution.logTestStep('adding latest transform unique keys');
for (const { identifier, label } of latestTransformUniqueKeys) {
await transform.wizard.assertUniqueKeysInputExists();
await transform.wizard.assertUniqueKeysInputValue([]);
await transform.wizard.addUniqueKeyEntry(identifier, label);
}
await transform.testExecution.logTestStep('adds latest transform sort field');
await transform.wizard.assertSortFieldInputExists();
await transform.wizard.setSortFieldValue(
latestTransformSortField.identifier,
latestTransformSortField.label
);
await transform.wizard.assertPivotPreviewLoaded();
await a11y.testAppSnapshot();
});
it('create latest transform details step', async () => {
await transform.wizard.advanceToDetailsStep();
await transform.testExecution.logTestStep('inputs the transform id');
await transform.wizard.assertTransformIdInputExists();
await transform.wizard.setTransformId(latestTransformId);
await transform.testExecution.logTestStep('inputs the transform description');
await transform.wizard.assertTransformDescriptionInputExists();
await transform.wizard.setTransformDescription(latestTransformDescription);
await transform.testExecution.logTestStep('inputs the destination index');
await transform.wizard.assertDestinationIndexInputExists();
await transform.wizard.setDestinationIndex(latestTransformDestinationIndex);
await a11y.testAppSnapshot();
});
it('create latest transform create step', async () => {
await transform.wizard.advanceToCreateStep();
await transform.testExecution.logTestStep('displays the create and start button');
await transform.wizard.assertCreateAndStartButtonExists();
await a11y.testAppSnapshot();
});
it('runs the latest transform and displays management page', async () => {
await transform.testExecution.logTestStep('creates the transform');
await transform.wizard.createTransform();
await transform.testExecution.logTestStep('starts the transform and finishes processing');
await transform.wizard.startTransform();
await transform.wizard.waitForProgressBarComplete();
await transform.testExecution.logTestStep('returns to the management page');
await transform.wizard.returnToManagement();
await transform.testExecution.logTestStep('displays the transforms table');
await transform.management.assertTransformsTableExists();
await a11y.testAppSnapshot();
});
});
});
});
}