[8.11] Address saved_object_tagging flakiness (#170114) (#170190)

# Backport

This will backport the following commits from `main` to `8.11`:
- [Address saved_object_tagging flakiness
(#170114)](https://github.com/elastic/kibana/pull/170114)

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

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

<!--BACKPORT [{"author":{"name":"Gerard
Soldevila","email":"gerard.soldevila@elastic.co"},"sourceCommit":{"committedDate":"2023-10-30T21:21:27Z","message":"Address
saved_object_tagging flakiness (#170114)\n\n##
Summary\r\n\r\nFixes:\r\n*
https://github.com/elastic/kibana/issues/89958\r\n*
https://github.com/elastic/kibana/issues/150249\r\n*
https://github.com/elastic/kibana/issues/167812\r\n*
https://github.com/elastic/kibana/issues/167560\r\n\r\nUses same
strategy as
Stratoula's\r\n[PR](https://github.com/elastic/kibana/pull/167599). It
also adds a\r\n\"click\" step to make sure the form control has the
focus (as we do with\r\nthe other form controls on the same `fillForm`
method).\r\n\r\nThe tests above fail cause the logic fails to clean the
default tag\r\ncolour before entering a new one, resulting
in:\r\n\r\n![image](e753aa64-4132-4094-af01-c17d91223172)\r\n\r\nAlso
fixes:\r\n*
https://github.com/elastic/kibana/issues/163817\r\n\r\n[This\r\none](https://buildkite.com/elastic/kibana-on-merge/builds/36347#018b0068-ec42-47de-804d-b63a42b5b3e2)\r\nis
looks like a lost click on the Delete modal confirm button
(modal\r\nstill present after
30s):\r\n\r\n\r\n![image](b2025b45-5030-4b6a-95f9-58d77fd3d2ea)","sha":"036918d017c9d1ee20467f5ced9934f944d9ff00","branchLabelMapping":{"^v8.12.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Team:Core","release_note:skip","test-failure-flaky","Team:SharedUX","backport:prev-minor","v8.12.0"],"number":170114,"url":"https://github.com/elastic/kibana/pull/170114","mergeCommit":{"message":"Address
saved_object_tagging flakiness (#170114)\n\n##
Summary\r\n\r\nFixes:\r\n*
https://github.com/elastic/kibana/issues/89958\r\n*
https://github.com/elastic/kibana/issues/150249\r\n*
https://github.com/elastic/kibana/issues/167812\r\n*
https://github.com/elastic/kibana/issues/167560\r\n\r\nUses same
strategy as
Stratoula's\r\n[PR](https://github.com/elastic/kibana/pull/167599). It
also adds a\r\n\"click\" step to make sure the form control has the
focus (as we do with\r\nthe other form controls on the same `fillForm`
method).\r\n\r\nThe tests above fail cause the logic fails to clean the
default tag\r\ncolour before entering a new one, resulting
in:\r\n\r\n![image](e753aa64-4132-4094-af01-c17d91223172)\r\n\r\nAlso
fixes:\r\n*
https://github.com/elastic/kibana/issues/163817\r\n\r\n[This\r\none](https://buildkite.com/elastic/kibana-on-merge/builds/36347#018b0068-ec42-47de-804d-b63a42b5b3e2)\r\nis
looks like a lost click on the Delete modal confirm button
(modal\r\nstill present after
30s):\r\n\r\n\r\n![image](b2025b45-5030-4b6a-95f9-58d77fd3d2ea)","sha":"036918d017c9d1ee20467f5ced9934f944d9ff00"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v8.12.0","labelRegex":"^v8.12.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/170114","number":170114,"mergeCommit":{"message":"Address
saved_object_tagging flakiness (#170114)\n\n##
Summary\r\n\r\nFixes:\r\n*
https://github.com/elastic/kibana/issues/89958\r\n*
https://github.com/elastic/kibana/issues/150249\r\n*
https://github.com/elastic/kibana/issues/167812\r\n*
https://github.com/elastic/kibana/issues/167560\r\n\r\nUses same
strategy as
Stratoula's\r\n[PR](https://github.com/elastic/kibana/pull/167599). It
also adds a\r\n\"click\" step to make sure the form control has the
focus (as we do with\r\nthe other form controls on the same `fillForm`
method).\r\n\r\nThe tests above fail cause the logic fails to clean the
default tag\r\ncolour before entering a new one, resulting
in:\r\n\r\n![image](e753aa64-4132-4094-af01-c17d91223172)\r\n\r\nAlso
fixes:\r\n*
https://github.com/elastic/kibana/issues/163817\r\n\r\n[This\r\none](https://buildkite.com/elastic/kibana-on-merge/builds/36347#018b0068-ec42-47de-804d-b63a42b5b3e2)\r\nis
looks like a lost click on the Delete modal confirm button
(modal\r\nstill present after
30s):\r\n\r\n\r\n![image](b2025b45-5030-4b6a-95f9-58d77fd3d2ea)","sha":"036918d017c9d1ee20467f5ced9934f944d9ff00"}}]}]
BACKPORT-->

Co-authored-by: Gerard Soldevila <gerard.soldevila@elastic.co>
This commit is contained in:
Kibana Machine 2023-10-30 18:21:46 -04:00 committed by GitHub
parent 3330ca0d62
commit c0bd22725d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 64 additions and 20 deletions

View file

@ -387,6 +387,12 @@ export class CommonPageObject extends FtrService {
this.log.debug('Clicking modal confirm');
// make sure this data-test-subj 'confirmModalTitleText' exists because we're going to wait for it to be gone later
await this.testSubjects.exists('confirmModalTitleText');
// make sure button is enabled before clicking it
// (and conveniently give UI enough time to bind a handler to it)
const isEnabled = await this.testSubjects.isEnabled('confirmModalConfirmButton');
if (!isEnabled) {
throw new Error('Modal confirm button is not enabled');
}
await this.testSubjects.click('confirmModalConfirmButton');
if (ensureHidden) {
await this.ensureModalOverlayHidden();

View file

@ -65,6 +65,7 @@ class TagModal extends FtrService {
});
}
if (fields.color !== undefined) {
await this.testSubjects.click('~createModalField-color');
await this.testSubjects.setValue('~createModalField-color', fields.color, {
clearWithKeyboard,
});

View file

@ -15,8 +15,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
const tagManagementPage = PageObjects.tagManagement;
// FLAKY: https://github.com/elastic/kibana/issues/167812
describe.skip('create tag', () => {
describe('create tag', () => {
let tagModal: typeof tagManagementPage['tagModal'];
before(async () => {
@ -45,7 +44,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
description: 'I just added this tag',
color: '#FF00CC',
},
{ submit: true }
{
submit: true,
clearWithKeyboard: true,
}
);
await tagModal.waitUntilClosed();
await tagManagementPage.waitUntilTableIsLoaded();
@ -65,7 +67,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
description: 'The name will fails validation',
color: '#FF00CC',
},
{ submit: true }
{
submit: true,
clearWithKeyboard: true,
}
);
expect(await tagModal.isOpened()).to.be(true);
@ -84,7 +89,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
description: 'The name will fails validation',
color: '#FF00CC',
},
{ submit: true }
{
submit: true,
clearWithKeyboard: true,
}
);
expect(await tagModal.isOpened()).to.be(true);
@ -94,7 +102,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
{
name: 'valid name',
},
{ submit: true }
{
submit: true,
clearWithKeyboard: true,
}
);
await tagModal.waitUntilClosed();
@ -114,7 +125,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
description: 'I will not add this tag',
color: '#FF00CC',
},
{ submit: false }
{
submit: false,
clearWithKeyboard: true,
}
);
await tagModal.clickCancel();
await tagModal.waitUntilClosed();

View file

@ -118,6 +118,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
},
{
submit: true,
clearWithKeyboard: true,
}
);

View file

@ -52,8 +52,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
});
};
// Failing: See https://github.com/elastic/kibana/issues/150249
describe.skip('discover integration', () => {
describe('discover integration', () => {
before(async () => {
await kibanaServer.importExport.load(
'x-pack/test/saved_object_tagging/common/fixtures/es_archiver/discover/data.json'
@ -143,6 +142,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
},
{
submit: true,
clearWithKeyboard: true,
}
);
expect(await tagModal.isOpened()).to.be(false);

View file

@ -15,8 +15,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
const tagManagementPage = PageObjects.tagManagement;
// Failing: See https://github.com/elastic/kibana/issues/167560
describe.skip('edit tag', () => {
describe('edit tag', () => {
let tagModal: typeof tagManagementPage['tagModal'];
before(async () => {
@ -56,7 +55,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
description: 'This was edited',
color: '#FFCC00',
},
{ submit: true }
{
submit: true,
clearWithKeyboard: true,
}
);
await tagModal.waitUntilClosed();
await tagManagementPage.waitUntilTableIsLoaded();
@ -79,7 +81,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
{
name: 'a',
},
{ submit: true }
{
submit: true,
clearWithKeyboard: true,
}
);
expect(await tagModal.isOpened()).to.be(true);
@ -98,7 +103,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
description: 'edited description',
color: '#FF00CC',
},
{ submit: true }
{
submit: true,
clearWithKeyboard: true,
}
);
expect(await tagModal.isOpened()).to.be(true);
@ -108,7 +116,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
{
name: 'edited name',
},
{ submit: true }
{
submit: true,
clearWithKeyboard: true,
}
);
await tagModal.waitUntilClosed();
@ -130,7 +141,10 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
description: 'I will not add this tag',
color: '#FF00CC',
},
{ submit: false }
{
submit: false,
clearWithKeyboard: true,
}
);
await tagModal.clickCancel();
await tagModal.waitUntilClosed();
@ -153,13 +167,16 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
it('should disable save button if no property is changed', async () => {
await tagModal.openEdit('tag-3');
await tagModal.fillForm(tag3Unmodified, { submit: false });
await tagModal.fillForm(tag3Unmodified, { submit: false, clearWithKeyboard: true });
expect(await tagModal.isConfirmDisabled()).to.be(true);
});
it('should enable save button if name is changed', async () => {
await tagModal.openEdit('tag-3');
await tagModal.fillForm({ ...tag3Unmodified, name: 'changed name' }, { submit: false });
await tagModal.fillForm(
{ ...tag3Unmodified, name: 'changed name' },
{ submit: false, clearWithKeyboard: true }
);
expect(await tagModal.isConfirmDisabled()).to.be(false);
});
it('should enable save button if description is changed', async () => {
@ -167,14 +184,17 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
await tagModal.fillForm(
{ ...tag3Unmodified, description: 'changed description' },
{ submit: false }
{ submit: false, clearWithKeyboard: true }
);
expect(await tagModal.isConfirmDisabled()).to.be(false);
});
it('should enable save button if color is changed', async () => {
await tagModal.openEdit('tag-3');
await tagModal.fillForm({ ...tag3Unmodified, color: '#FF0000' }, { submit: false });
await tagModal.fillForm(
{ ...tag3Unmodified, color: '#FF0000' },
{ submit: false, clearWithKeyboard: true }
);
expect(await tagModal.isConfirmDisabled()).to.be(false);
});
});

View file

@ -98,6 +98,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
},
{
submit: true,
clearWithKeyboard: true,
}
);

View file

@ -173,6 +173,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
},
{
submit: true,
clearWithKeyboard: true,
}
);