[AO] Fix failed functional test - Observability alerts Alerts table Flyout Can be closed (#148882)

Closes #145835

## Summary

Fix `Observability alerts Alerts table Flyout Can be closed` by retrying
closing flyout if it is still open. This issue happens rarely (only once
in the main and 3 times in other branches during the last 3 months -
[link](cb7380fb-67fe-5c41-873d-003d1a407dad?_g=(filters:!(('$state':(store:globalState),meta:(alias:!n,disabled:!f,index:'1f96f3c7-e086-5f46-a8e0-40d2b811928c',key:failure.name,negate:!f,params:(query:'ObservabilityApp%20Observability%20alerts%20Alerts%20table%20Flyout%20Can%20be%20closed'),type:phrase),query:(match_phrase:(failure.name:'ObservabilityApp%20Observability%20alerts%20Alerts%20table%20Flyout%20Can%20be%20closed')))),refreshInterval:(pause:!t,value:0),time:(from:now-30d%2Fd,to:now))))

By checking the
[logs](https://buildkite.com/elastic/kibana-on-merge/builds/23841), it
seems in these cases, it checks to see if the flyout is closed but for
some reason, it is still open, so I added a retry based on @spalger 's
suggestion.

Flaky test runner[200]:
https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/1746
Flaky test runner[50]:
https://buildkite.com/elastic/kibana-flaky-test-suite-runner/builds/1750
(After last commit)
This commit is contained in:
Maryam Saeidi 2023-01-18 09:49:52 +01:00 committed by GitHub
parent 5d6d5bb58b
commit 26d0cc8ff0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 6 deletions

View file

@ -17,12 +17,11 @@ export class FlyoutService extends FtrService {
public async close(dataTestSubj: string): Promise<void> {
this.log.debug('Closing flyout', dataTestSubj);
const flyoutElement = await this.testSubjects.find(dataTestSubj);
const closeBtn = await flyoutElement.findByCssSelector('[aria-label*="Close"]');
await closeBtn.click();
await this.retry.waitFor(
'flyout closed',
async () => !(await this.testSubjects.exists(dataTestSubj, { timeout: 1000 }))
);
await this.retry.try(async () => {
const closeBtn = await flyoutElement.findByCssSelector('[aria-label*="Close"]');
await closeBtn.click();
await this.testSubjects.missingOrFail(dataTestSubj);
});
}
public async ensureClosed(dataTestSubj: string): Promise<void> {

View file

@ -466,6 +466,7 @@ export class WebElementWrapper {
* @return {Promise<WebElementWrapper>}
*/
public async findByCssSelector(selector: string) {
this.logger.debug(`WebElementWrapper.findByCssSelector(${selector})`);
return await this.retryCall(async function findByCssSelector(wrapper) {
return wrapper._wrap(
await wrapper._webElement.findElement(wrapper.By.css(selector)),