From f6b8e1e8a3f2ebf01f0f17530ff91e68b655fb4b Mon Sep 17 00:00:00 2001
From: Kamil Mielnik <kamil@kamilmielnik.com>
Date: Wed, 6 Nov 2024 22:32:35 +0700
Subject: [PATCH] Fix flaky datamodel test (#49583)

* Remove @flaky tag

* Fix flake

* Try typing delay instead

* Improve comment

* Bring back original solution
---
 .../admin/datamodel/datamodel.cy.spec.js      | 29 +++++++++----------
 1 file changed, 14 insertions(+), 15 deletions(-)

diff --git a/e2e/test/scenarios/admin/datamodel/datamodel.cy.spec.js b/e2e/test/scenarios/admin/datamodel/datamodel.cy.spec.js
index 9ee4d8f8f35..de985c4cb09 100644
--- a/e2e/test/scenarios/admin/datamodel/datamodel.cy.spec.js
+++ b/e2e/test/scenarios/admin/datamodel/datamodel.cy.spec.js
@@ -67,8 +67,11 @@ describe("scenarios > admin > datamodel > field > field type", () => {
     });
   }
 
-  function searchFieldType(type) {
-    cy.findByPlaceholderText("Find...").type(type);
+  function searchFieldType(value) {
+    // .type() is flaky when used for ListSearchField - typed characters can
+    // sometimes get rearranged while typing.
+    // Unclear why. Possibly because it's rendered as a virtualized list item.
+    cy.findByPlaceholderText("Find...").invoke("val", value).trigger("blur");
   }
 
   function getFKTargetField(targetField) {
@@ -100,23 +103,19 @@ describe("scenarios > admin > datamodel > field > field type", () => {
     cy.intercept("PUT", "/api/field/*").as("fieldUpdate");
   });
 
-  it(
-    "should let you change the type to 'No semantic type'",
-    { tags: "@flaky" },
-    () => {
-      visitAlias("@ORDERS_PRODUCT_ID_URL");
-      cy.wait(["@metadata", "@metadata"]);
+  it("should let you change the type to 'No semantic type'", () => {
+    visitAlias("@ORDERS_PRODUCT_ID_URL");
+    cy.wait(["@metadata", "@metadata"]);
 
-      setFieldType({ oldValue: "Foreign Key", newValue: "No semantic type" });
+    setFieldType({ oldValue: "Foreign Key", newValue: "No semantic type" });
 
-      waitAndAssertOnResponse("fieldUpdate");
+    waitAndAssertOnResponse("fieldUpdate");
 
-      cy.reload();
-      cy.wait("@metadata");
+    cy.reload();
+    cy.wait("@metadata");
 
-      getFieldType("No semantic type");
-    },
-  );
+    getFieldType("No semantic type");
+  });
 
   it("should let you change the type to 'Foreign Key' and choose the target field", () => {
     visitAlias("@ORDERS_QUANTITY_URL");
-- 
GitLab