mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
[8.12] [DataViews] Unskip and stabilize functional tests of dataviews management (#173900) (#174046)
# Backport This will backport the following commits from `main` to `8.12`: - [[DataViews] Unskip and stabilize functional tests of dataviews management (#173900)](https://github.com/elastic/kibana/pull/173900) <!--- Backport version: 9.4.3 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sqren/backport) <!--BACKPORT [{"author":{"name":"Matthias Wilhelm","email":"matthias.wilhelm@elastic.co"},"sourceCommit":{"committedDate":"2023-12-28T20:52:11Z","message":"[DataViews] Unskip and stabilize functional tests of dataviews management (#173900)\n\nImproving data view related functional test code to reduce flakiness","sha":"d67c0eff2f304075cf57fd5e2c466e565e098426","branchLabelMapping":{"^v8.13.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["test_ui_functional","Feature:Data Views","release_note:skip","Team:DataDiscovery","backport:prev-minor","v8.13.0"],"title":"[DataViews] Unskip and stabilize functional tests of dataviews management","number":173900,"url":"https://github.com/elastic/kibana/pull/173900","mergeCommit":{"message":"[DataViews] Unskip and stabilize functional tests of dataviews management (#173900)\n\nImproving data view related functional test code to reduce flakiness","sha":"d67c0eff2f304075cf57fd5e2c466e565e098426"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v8.13.0","branchLabelMappingKey":"^v8.13.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/173900","number":173900,"mergeCommit":{"message":"[DataViews] Unskip and stabilize functional tests of dataviews management (#173900)\n\nImproving data view related functional test code to reduce flakiness","sha":"d67c0eff2f304075cf57fd5e2c466e565e098426"}}]}] BACKPORT--> Co-authored-by: Matthias Wilhelm <matthias.wilhelm@elastic.co>
This commit is contained in:
parent
5326b14e68
commit
a8bbcd7a20
9 changed files with 60 additions and 20 deletions
|
@ -257,6 +257,8 @@ const IndexPatternEditorFlyoutContentComponent = ({
|
|||
className="indexPatternEditor__form"
|
||||
error={form.getErrors()}
|
||||
isInvalid={form.isSubmitted && !form.isValid && form.getErrors().length}
|
||||
data-validation-error={form.getErrors().length ? '1' : '0'}
|
||||
data-test-subj="indexPatternEditorForm"
|
||||
>
|
||||
<UseField path="isAdHoc" />
|
||||
{indexPatternTypeSelect}
|
||||
|
|
|
@ -197,6 +197,7 @@ export const TitleField = ({
|
|||
data-test-subj="createIndexPatternTitleInput"
|
||||
append={<TitleDocsPopover />}
|
||||
placeholder="example-*"
|
||||
data-is-validating={field.isValidating ? '1' : '0'}
|
||||
/>
|
||||
</EuiFormRow>
|
||||
);
|
||||
|
|
|
@ -308,8 +308,12 @@ export class DataViewEditorService {
|
|||
getFieldsOptions: GetFieldsOptions,
|
||||
requireTimestampField: boolean
|
||||
) => {
|
||||
const fields = await ensureMinimumTime(this.dataViews.getFieldsForWildcard(getFieldsOptions));
|
||||
return extractTimeFields(fields as DataViewField[], requireTimestampField);
|
||||
try {
|
||||
const fields = await ensureMinimumTime(this.dataViews.getFieldsForWildcard(getFieldsOptions));
|
||||
return extractTimeFields(fields as DataViewField[], requireTimestampField);
|
||||
} catch (e) {
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
private getTimestampOptionsForWildcardCached = async (
|
||||
|
@ -374,7 +378,7 @@ export class DataViewEditorService {
|
|||
);
|
||||
|
||||
// necessary to get new observable value if the field hasn't changed
|
||||
this.loadIndices();
|
||||
await this.loadIndices();
|
||||
|
||||
// Wait until we have fetched the indices.
|
||||
// The result will then be sent to the field validator(s) (when calling await provider(););
|
||||
|
|
|
@ -187,8 +187,7 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
|||
});
|
||||
});
|
||||
|
||||
// FLAKY: https://github.com/elastic/kibana/issues/173625
|
||||
describe.skip('index pattern edit', function () {
|
||||
describe('index pattern edit', function () {
|
||||
it('should update field list', async function () {
|
||||
await PageObjects.settings.editIndexPattern(
|
||||
'kibana_sample_data_flights',
|
||||
|
|
|
@ -24,13 +24,16 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
|||
await PageObjects.settings.clickKibanaIndexPatterns();
|
||||
});
|
||||
|
||||
after(async function () {
|
||||
await kibanaServer.savedObjects.cleanStandardList();
|
||||
});
|
||||
|
||||
beforeEach(async function () {
|
||||
await PageObjects.settings.createIndexPattern('logstash-*');
|
||||
});
|
||||
|
||||
afterEach(async function () {
|
||||
await PageObjects.settings.removeIndexPattern();
|
||||
await kibanaServer.savedObjects.cleanStandardList();
|
||||
});
|
||||
|
||||
it('should filter indexed fields by type', async function () {
|
||||
|
|
|
@ -61,6 +61,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
|||
it('should modify runtime field', async function () {
|
||||
await PageObjects.settings.filterField(fieldName);
|
||||
await testSubjects.click('editFieldFormat');
|
||||
await retry.try(async () => {
|
||||
await testSubjects.existOrFail('flyoutTitle');
|
||||
});
|
||||
await PageObjects.settings.setFieldType('Long');
|
||||
await PageObjects.settings.setFieldScriptWithoutToggle('emit(6);');
|
||||
await PageObjects.settings.toggleRow('formatRow');
|
||||
|
|
|
@ -177,9 +177,20 @@ export class SettingsPageObject extends FtrService {
|
|||
async selectTimeFieldOption(selection: string) {
|
||||
// open dropdown
|
||||
const timefield = await this.getTimeFieldNameField();
|
||||
await timefield.click();
|
||||
await this.browser.pressKeys(selection);
|
||||
await this.browser.pressKeys(this.browser.keys.TAB);
|
||||
const prevValue = await timefield.getAttribute('value');
|
||||
const enabled = await timefield.isEnabled();
|
||||
|
||||
if (prevValue === selection || !enabled) {
|
||||
return;
|
||||
}
|
||||
await this.retry.waitFor('time field dropdown have the right value', async () => {
|
||||
await timefield.click();
|
||||
await timefield.type(this.browser.keys.DELETE, { charByChar: true });
|
||||
await this.browser.pressKeys(selection);
|
||||
await this.browser.pressKeys(this.browser.keys.TAB);
|
||||
const value = await timefield.getAttribute('value');
|
||||
return value === selection;
|
||||
});
|
||||
}
|
||||
|
||||
async getTimeFieldOption(selection: string) {
|
||||
|
@ -192,7 +203,7 @@ export class SettingsPageObject extends FtrService {
|
|||
|
||||
async setNameField(dataViewName: string) {
|
||||
const field = await this.getNameField();
|
||||
await field.clearValue();
|
||||
await field.clearValueWithKeyboard();
|
||||
await field.type(dataViewName);
|
||||
}
|
||||
|
||||
|
@ -486,7 +497,7 @@ export class SettingsPageObject extends FtrService {
|
|||
async allowHiddenClick() {
|
||||
await this.testSubjects.click('toggleAdvancedSetting');
|
||||
const allowHiddenField = await this.testSubjects.find('allowHiddenField');
|
||||
(await allowHiddenField.findByTagName('button')).click();
|
||||
await (await allowHiddenField.findByTagName('button')).click();
|
||||
}
|
||||
|
||||
async createIndexPattern(
|
||||
|
@ -567,19 +578,26 @@ export class SettingsPageObject extends FtrService {
|
|||
throw new Error('No Data View name provided for edit');
|
||||
}
|
||||
|
||||
this.clickEditIndexButton();
|
||||
await this.clickEditIndexButton();
|
||||
await this.header.waitUntilLoadingHasFinished();
|
||||
|
||||
await this.retry.try(async () => {
|
||||
if (dataViewName) {
|
||||
await this.setNameField(dataViewName);
|
||||
}
|
||||
await this.setIndexPatternField(indexPatternName);
|
||||
await this.header.waitUntilLoadingHasFinished();
|
||||
if (timefield) {
|
||||
await this.selectTimeFieldOption(timefield);
|
||||
}
|
||||
const indexPatternSaveBtn = await this.getSaveIndexPatternButton();
|
||||
await indexPatternSaveBtn.click();
|
||||
|
||||
const form = await this.testSubjects.findAll('indexPatternEditorForm');
|
||||
const hasValidationErrors =
|
||||
form.length !== 0 && (await form[0].getAttribute('data-validation-error')) === '1';
|
||||
expect(hasValidationErrors).to.eql(false);
|
||||
});
|
||||
if (dataViewName) {
|
||||
await this.setNameField(dataViewName);
|
||||
}
|
||||
if (timefield) {
|
||||
await this.selectTimeFieldOption(timefield);
|
||||
}
|
||||
await (await this.getSaveIndexPatternButton()).click();
|
||||
|
||||
if (errorCheck) {
|
||||
await this.retry.try(async () => {
|
||||
|
@ -653,6 +671,10 @@ export class SettingsPageObject extends FtrService {
|
|||
const currentName = await field.getAttribute('value');
|
||||
this.log.debug(`setIndexPatternField set to ${currentName}`);
|
||||
expect(currentName).to.eql(indexPatternName);
|
||||
await this.retry.waitFor('validating the given index pattern should be finished', async () => {
|
||||
const isValidating = await field.getAttribute('data-is-validating');
|
||||
return isValidating === '0';
|
||||
});
|
||||
}
|
||||
|
||||
async getCreateIndexPatternGoToStep2Button() {
|
||||
|
|
|
@ -24,13 +24,16 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
|||
await testSubjects.click('app-card-dataViews');
|
||||
});
|
||||
|
||||
after(async function () {
|
||||
await kibanaServer.savedObjects.cleanStandardList();
|
||||
});
|
||||
|
||||
beforeEach(async function () {
|
||||
await PageObjects.settings.createIndexPattern('logstash-*');
|
||||
});
|
||||
|
||||
afterEach(async function () {
|
||||
await PageObjects.settings.removeIndexPattern();
|
||||
await kibanaServer.savedObjects.cleanStandardList();
|
||||
});
|
||||
|
||||
it('should filter indexed fields by type', async function () {
|
||||
|
|
|
@ -61,6 +61,9 @@ export default function ({ getService, getPageObjects }: FtrProviderContext) {
|
|||
it('should modify runtime field', async function () {
|
||||
await PageObjects.settings.filterField(fieldName);
|
||||
await testSubjects.click('editFieldFormat');
|
||||
await retry.try(async () => {
|
||||
await testSubjects.existOrFail('flyoutTitle');
|
||||
});
|
||||
await PageObjects.settings.setFieldType('Long');
|
||||
await PageObjects.settings.setFieldScriptWithoutToggle('emit(6);');
|
||||
await PageObjects.settings.toggleRow('formatRow');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue