diff --git a/test/functional/page_objects/visualize_page.ts b/test/functional/page_objects/visualize_page.ts
index a08b950ce9853..daa8ab00351bd 100644
--- a/test/functional/page_objects/visualize_page.ts
+++ b/test/functional/page_objects/visualize_page.ts
@@ -170,6 +170,11 @@ export class VisualizePageObject extends FtrService {
   }
 
   public async clickVisType(type: string) {
+    // checking for the existence of the control gives the UI more time to bind a click handler
+    // see https://github.com/elastic/kibana/issues/89958
+    if (!(await this.hasVisType(type))) {
+      throw new Error(`The '${type}' visualization type does not exist (visType-${type})`);
+    }
     await this.testSubjects.click(`visType-${type}`);
     await this.header.waitUntilLoadingHasFinished();
   }
diff --git a/x-pack/test/saved_object_tagging/functional/tests/visualize_integration.ts b/x-pack/test/saved_object_tagging/functional/tests/visualize_integration.ts
index b930818a9c500..a7a03a58ba0cf 100644
--- a/x-pack/test/saved_object_tagging/functional/tests/visualize_integration.ts
+++ b/x-pack/test/saved_object_tagging/functional/tests/visualize_integration.ts
@@ -123,8 +123,7 @@ export default function ({ getPageObjects, getService }: FtrProviderContext) {
       });
     });
 
-    // FLAKY: https://github.com/elastic/kibana/issues/89958
-    describe.skip('creating', () => {
+    describe('creating', () => {
       before(async () => {
         await PageObjects.visualize.gotoVisualizationLandingPage();
         // delete all visualizations to create new ones explicitly