diff --git a/cypress/integration/control_link.js b/cypress/integration/control_link.js index 2e2cf92deb..4c0587b009 100644 --- a/cypress/integration/control_link.js +++ b/cypress/integration/control_link.js @@ -58,13 +58,12 @@ context("Control Link", () => { true ); - cy.intercept("POST", "/api/method/frappe.desk.search.search_link").as("search_link"); - cy.get(".frappe-control[data-fieldname=link] input").focus().as("input"); - cy.wait("@search_link"); - cy.wait(500); + // Wait for dropdown to appear (request might be cached) + cy.get("@input").parent().findByRole("listbox").should("be.visible"); + cy.wait(200); cy.get("@input").type("todo for link", { delay: 100 }); - cy.wait("@search_link"); + // Wait for dropdown to update with search results cy.wait(500); cy.get("@input").parent().findByRole("listbox").should("be.visible"); cy.get("@input").type("{enter}"); @@ -81,10 +80,10 @@ context("Control Link", () => { get_dialog_with_link().as("dialog"); cy.intercept("/api/method/frappe.client.validate_link*").as("validate_link"); - cy.intercept("POST", "/api/method/frappe.desk.search.search_link").as("search_link"); cy.get(".frappe-control[data-fieldname=link] input").focus().as("input"); - cy.wait("@search_link"); - cy.wait(500); + // Wait for dropdown to appear (request might be cached) + cy.get("@input").parent().findByRole("listbox").should("be.visible"); + cy.wait(200); cy.get("@input").type("invalid value", { delay: 100 }).blur(); cy.wait("@validate_link"); cy.get("@input").should("have.value", ""); @@ -94,11 +93,11 @@ context("Control Link", () => { get_dialog_with_link().as("dialog"); cy.intercept("/api/method/frappe.client.validate_link*").as("validate_link"); - cy.intercept("POST", "/api/method/frappe.desk.search.search_link").as("search_link"); cy.get(".frappe-control[data-fieldname=link] input").focus().as("input"); - cy.wait("@search_link"); - cy.wait(500); + // Wait for dropdown to appear (request might be cached) + cy.get("@input").parent().findByRole("listbox").should("be.visible"); + cy.wait(200); cy.get("@input").type(" ", { delay: 100 }).blur(); cy.wait("@validate_link"); cy.get("@input").should("have.value", ""); @@ -112,12 +111,11 @@ context("Control Link", () => { it("should show open link button", () => { get_dialog_with_link().as("dialog"); - cy.intercept("POST", "/api/method/frappe.desk.search.search_link").as("search_link"); - cy.get("@todos").then((todos) => { cy.get(".frappe-control[data-fieldname=link] input").focus().as("input"); - cy.wait("@search_link"); - cy.wait(500); + // Wait for dropdown to appear (request might be cached) + cy.get("@input").parent().findByRole("listbox").should("be.visible"); + cy.wait(200); cy.get("@input").type(todos[0], { delay: 100 }).blur(); // not waiting for validate_link because it will not get called cy.get("@input").trigger("mouseover"); @@ -156,13 +154,12 @@ context("Control Link", () => { } }); - cy.intercept("POST", "/api/method/frappe.desk.search.search_link").as("search_link"); - cy.get(".frappe-control[data-fieldname=link] input").focus().as("input"); - cy.wait("@search_link"); - cy.wait(500); + // Wait for dropdown to appear (request might be cached) + cy.get("@input").parent().findByRole("listbox").should("be.visible"); + cy.wait(200); cy.get("@input").type("todo for link", { delay: 100 }); - cy.wait("@search_link"); + // Wait for dropdown to update with search results cy.wait(500); cy.get(".frappe-control[data-fieldname=link] ul").should("be.visible"); cy.get("@input").type("{enter}"); @@ -182,7 +179,6 @@ context("Control Link", () => { it("should update dependant fields (via fetch_from)", () => { cy.get("@todos").then((todos) => { cy.visit(`/desk/todo/${todos[0]}`); - cy.intercept("POST", "/api/method/frappe.desk.search.search_link").as("search_link"); cy.intercept("/api/method/frappe.client.validate_link*").as("validate_link"); cy.fill_field("assigned_by", cy.config("testUser"), "Link"); @@ -211,7 +207,9 @@ context("Control Link", () => { // set valid value again cy.get("@input").clear().focus(); - cy.wait("@search_link"); + // Wait for dropdown to appear (request might be cached) + cy.get("@input").parent().findByRole("listbox").should("be.visible"); + cy.wait(200); cy.get("@input").type(cy.config("testUser"), { delay: 100 }).blur(); cy.wait("@validate_link"); @@ -280,12 +278,13 @@ context("Control Link", () => { cy.wait(500); get_dialog_with_gender_link().as("dialog"); - cy.intercept("POST", "/api/method/frappe.desk.search.search_link").as("search_link"); cy.get(".frappe-control[data-fieldname=link] input").focus().as("input"); - cy.wait("@search_link"); + // Wait for dropdown to appear (request might be cached) + cy.get("@input").parent().findByRole("listbox").should("be.visible"); + cy.wait(200); cy.get("@input").type("Sonstiges", { delay: 100 }); - cy.wait("@search_link"); + // Wait for dropdown to update with search results cy.wait(500); cy.get(".frappe-control[data-fieldname=link] ul").should("be.visible"); cy.get(".frappe-control[data-fieldname=link] input").type("{enter}"); @@ -312,12 +311,13 @@ context("Control Link", () => { cy.wait(1000); get_dialog_with_gender_link().as("dialog"); - cy.intercept("POST", "/api/method/frappe.desk.search.search_link").as("search_link"); cy.get(".frappe-control[data-fieldname=link] input").focus().as("input"); - cy.wait("@search_link"); + // Wait for dropdown to appear (request might be cached) + cy.get("@input").parent().findByRole("listbox").should("be.visible"); + cy.wait(200); cy.get("@input").type("Non-Conforming", { delay: 100 }); - cy.wait("@search_link"); + // Wait for dropdown to update with search results cy.wait(500); cy.get(".frappe-control[data-fieldname=link] ul").should("be.visible"); cy.get(".frappe-control[data-fieldname=link] input").type("{enter}"); diff --git a/cypress/integration/form_builder.js b/cypress/integration/form_builder.js index 8677710bc4..37780eefce 100644 --- a/cypress/integration/form_builder.js +++ b/cypress/integration/form_builder.js @@ -50,14 +50,14 @@ context("Form Builder", () => { cy.get(".modal-body .filter-action-buttons .add-filter").click(); cy.wait(100); - cy.intercept("POST", "/api/method/frappe.desk.search.search_link").as("search_link"); cy.get(".modal-body .filter-box .list_filter .filter-field .link-field input") .focus() .as("input"); - cy.wait("@search_link"); - cy.wait(500); + // Wait for dropdown to appear (request might be cached) + cy.get("@input").parent().findByRole("listbox").should("be.visible"); + cy.wait(200); cy.get("@input").type("Male", { delay: 100 }); - cy.wait("@search_link"); + // Wait for dropdown to update with search results cy.wait(500); cy.get("@input").type("{enter}", { delay: 100 }); cy.get("@input").blur(); @@ -97,8 +97,6 @@ context("Form Builder", () => { }); it("Add Table field and check if columns are rendered", () => { - cy.intercept("POST", "/api/method/frappe.desk.search.search_link").as("search_link"); - cy.visit(`/app/doctype/${doctype_name}`); cy.findByRole("tab", { name: "Form" }).click(); @@ -127,7 +125,8 @@ context("Form Builder", () => { .click() .as("input"); cy.get("@input").clear({ force: true }).type("Web Form Field", { delay: 200 }); - cy.wait("@search_link"); + // Wait for dropdown to appear and selection to complete + cy.wait(500); cy.get(last_field).click({ force: true }); diff --git a/cypress/support/commands.js b/cypress/support/commands.js index f774dc9872..b7fa6d1003 100644 --- a/cypress/support/commands.js +++ b/cypress/support/commands.js @@ -172,13 +172,12 @@ Cypress.Commands.add("fill_field", (fieldname, value, fieldtype = "Data") => { } if (["Link", "Dynamic Link"].includes(fieldtype)) { - cy.intercept("POST", "/api/method/frappe.desk.search.search_link").as("search_link"); cy.get("@input").clear().focus(); - cy.wait("@search_link"); + // Wait for dropdown to appear (request might be cached, so don't wait for network) cy.get("@input").parent().findByRole("listbox").as("dropdown"); cy.get("@dropdown").should("be.visible"); cy.get("@input").type(value, { delay: 100 }); - cy.wait("@search_link"); + // Wait for dropdown to update with search results cy.get("@dropdown") .should("be.visible") .find("div[role='option']")