From 7db2a578d4ca8ff84590e4c98158e6a76fb27dff Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Fri, 13 Mar 2026 08:09:56 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Optimize=20Product=20Search=20to=20?= =?UTF-8?q?avoid=20N+1=20Element=20Lookup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaced stream-based product filtering with a single XPath locator in StandAloneTest and ProductCatalogue. This reduces WebDriver round-trips from O(N) to O(1). Co-authored-by: Mitesh411 <6998472+Mitesh411@users.noreply.github.com> --- .../org/miteshdandade/pageobjects/ProductCatalogue.java | 7 +++---- src/test/java/org/miteshdandade/tests/StandAloneTest.java | 6 +----- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/miteshdandade/pageobjects/ProductCatalogue.java b/src/main/java/org/miteshdandade/pageobjects/ProductCatalogue.java index afd562a..649d16f 100644 --- a/src/main/java/org/miteshdandade/pageobjects/ProductCatalogue.java +++ b/src/main/java/org/miteshdandade/pageobjects/ProductCatalogue.java @@ -48,12 +48,11 @@ public WebElement getProductByName(String productName) public void addProductToCart(String productName) { - WebElement prod = getProductByName(productName); - prod.findElement(addToCart).click(); + By productAddToCart = By.xpath("//div[contains(@class,'mb-3') and .//b[text()='" + productName + "']]//button[last()]"); + waitForElementToAppear(productAddToCart); + driver.findElement(productAddToCart).click(); waitForElementToAppear(toastMessage); waitForElementToDisappear(spinner); - - } } diff --git a/src/test/java/org/miteshdandade/tests/StandAloneTest.java b/src/test/java/org/miteshdandade/tests/StandAloneTest.java index 47f857b..2a3c301 100644 --- a/src/test/java/org/miteshdandade/tests/StandAloneTest.java +++ b/src/test/java/org/miteshdandade/tests/StandAloneTest.java @@ -28,11 +28,7 @@ public static void main(String[] args) { driver.findElement(By.id("login")).click(); WebDriverWait wait = new WebDriverWait(driver,Duration.ofSeconds(5)); wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector(".mb-3"))); - List products = driver.findElements(By.cssSelector(".mb-3")); - - WebElement prod = products.stream().filter(product-> - product.findElement(By.cssSelector("b")).getText().equals(productName)).findFirst().orElse(null); - prod.findElement(By.cssSelector(".card-body button:last-of-type")).click(); + driver.findElement(By.xpath("//div[contains(@class,'mb-3') and .//b[text()='" + productName + "']]//button[last()]")).click(); wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("#toast-container")));