Address saved_object_tagging flakiness (#170114)

## Summary

Fixes:
* https://github.com/elastic/kibana/issues/89958
* https://github.com/elastic/kibana/issues/150249
* https://github.com/elastic/kibana/issues/167812
* https://github.com/elastic/kibana/issues/167560

Uses same strategy as Stratoula's
[PR](https://github.com/elastic/kibana/pull/167599). It also adds a
"click" step to make sure the form control has the focus (as we do with
the other form controls on the same `fillForm` method).

The tests above fail cause the logic fails to clean the default tag
colour before entering a new one, resulting in:

![image](e753aa64-4132-4094-af01-c17d91223172)

Also fixes:
* https://github.com/elastic/kibana/issues/163817

[This
one](https://buildkite.com/elastic/kibana-on-merge/builds/36347#018b0068-ec42-47de-804d-b63a42b5b3e2)
is looks like a lost click on the Delete modal confirm button (modal
still present after 30s):


![image](b2025b45-5030-4b6a-95f9-58d77fd3d2ea)
This commit is contained in:
Gerard Soldevila 2023-10-30 22:21:27 +01:00 committed by GitHub
parent d7ab75ffc5
commit 036918d017
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 65 additions and 22 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

@ -27,8 +27,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
);
});
// FLAKY: https://github.com/elastic/kibana/issues/163817
describe.skip('bulk delete', () => {
describe('bulk delete', () => {
it('deletes multiple tags', async () => {
const initialDisplayedTags = await tagManagementPage.getDisplayedTagNames();
await tagManagementPage.selectTagByName('tag-1');

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,
}
);