From 94f0f5ccaef58c700909c277bb9616ce9af701eb Mon Sep 17 00:00:00 2001
From: delta456 <swstkbaranwal@gmail.com>
Date: Tue, 17 Sep 2024 15:36:58 +0530
Subject: [PATCH 1/3] selenium manager: check invalid browser version

---
 rust/src/lib.rs             | 6 +++++-
 rust/tests/browser_tests.rs | 9 +++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/rust/src/lib.rs b/rust/src/lib.rs
index ae050adc125c8..0878daf898ae1 100644
--- a/rust/src/lib.rs
+++ b/rust/src/lib.rs
@@ -487,7 +487,11 @@ pub trait SeleniumManager {
                             discovered_major_browser_version,
                             major_browser_version,
                         ));
-                        download_browser = true;
+                        self.set_fallback_driver_from_cache(false);
+                        return Err(anyhow!(format!(
+                            "Invalid version {} provided",
+                            major_browser_version
+                        )));
                     } else {
                         self.set_browser_version(discovered_version);
                     }
diff --git a/rust/tests/browser_tests.rs b/rust/tests/browser_tests.rs
index 10fd138491029..e1dd2d83230dc 100644
--- a/rust/tests/browser_tests.rs
+++ b/rust/tests/browser_tests.rs
@@ -160,3 +160,12 @@ fn invalid_browser_path_test() {
     .code(DATAERR)
     .failure();
 }
+
+#[test]
+fn invalid_browser_version_test() {
+    let mut cmd = get_selenium_manager();
+    cmd.args(["--browser", "chrome", "--browser-version", "bad-version"])
+        .assert()
+        .code(DATAERR)
+        .failure();
+}

From e725eebaa5591f2ffa733a8e7a154731fddbda81 Mon Sep 17 00:00:00 2001
From: delta456 <swstkbaranwal@gmail.com>
Date: Fri, 20 Sep 2024 13:52:57 +0530
Subject: [PATCH 2/3] add more checks

---
 rust/src/lib.rs             | 19 ++++++++++++++-----
 rust/tests/browser_tests.rs |  9 +++++++++
 2 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/rust/src/lib.rs b/rust/src/lib.rs
index 0878daf898ae1..a4b2e8d07230b 100644
--- a/rust/src/lib.rs
+++ b/rust/src/lib.rs
@@ -487,11 +487,20 @@ pub trait SeleniumManager {
                             discovered_major_browser_version,
                             major_browser_version,
                         ));
-                        self.set_fallback_driver_from_cache(false);
-                        return Err(anyhow!(format!(
-                            "Invalid version {} provided",
-                            major_browser_version
-                        )));
+                        if self
+                            .request_fixed_browser_version_from_online(
+                                major_browser_version.as_str(),
+                            )
+                            .is_err()
+                        {
+                            self.set_fallback_driver_from_cache(false);
+                            return Err(anyhow!(format!(
+                                "Invalid {} version provided: {}",
+                                self.get_browser_name(),
+                                major_browser_version
+                            )));
+                        }
+                        download_browser = true;
                     } else {
                         self.set_browser_version(discovered_version);
                     }
diff --git a/rust/tests/browser_tests.rs b/rust/tests/browser_tests.rs
index e1dd2d83230dc..9140f23900b2e 100644
--- a/rust/tests/browser_tests.rs
+++ b/rust/tests/browser_tests.rs
@@ -169,3 +169,12 @@ fn invalid_browser_version_test() {
         .code(DATAERR)
         .failure();
 }
+
+#[test]
+fn valid_browser_version_pass_test() {
+    let mut cmd = get_selenium_manager();
+    cmd.args(["--browser", "chrome", "--browser-version", "127"])
+        .assert()
+        .code(0)
+        .success();
+}

From 51d082a73781a121b0342d0a6d526bd7c1b93260 Mon Sep 17 00:00:00 2001
From: delta456 <swstkbaranwal@gmail.com>
Date: Tue, 1 Oct 2024 00:38:25 +0530
Subject: [PATCH 3/3] apply suggestions from reviewer

---
 rust/src/lib.rs             | 18 ++++--------------
 rust/tests/browser_tests.rs | 18 ------------------
 2 files changed, 4 insertions(+), 32 deletions(-)

diff --git a/rust/src/lib.rs b/rust/src/lib.rs
index a4b2e8d07230b..751f092029e6d 100644
--- a/rust/src/lib.rs
+++ b/rust/src/lib.rs
@@ -487,19 +487,6 @@ pub trait SeleniumManager {
                             discovered_major_browser_version,
                             major_browser_version,
                         ));
-                        if self
-                            .request_fixed_browser_version_from_online(
-                                major_browser_version.as_str(),
-                            )
-                            .is_err()
-                        {
-                            self.set_fallback_driver_from_cache(false);
-                            return Err(anyhow!(format!(
-                                "Invalid {} version provided: {}",
-                                self.get_browser_name(),
-                                major_browser_version
-                            )));
-                        }
                         download_browser = true;
                     } else {
                         self.set_browser_version(discovered_version);
@@ -763,7 +750,10 @@ pub trait SeleniumManager {
         // Download browser if necessary
         match self.download_browser_if_necessary(&original_browser_version) {
             Ok(_) => {}
-            Err(err) => self.check_error_with_driver_in_path(&use_driver_in_path, err)?,
+            Err(err) => {
+                self.set_fallback_driver_from_cache(false);
+                self.check_error_with_driver_in_path(&use_driver_in_path, err)?
+            }
         }
 
         // With the discovered browser version, discover the proper driver version using online endpoints
diff --git a/rust/tests/browser_tests.rs b/rust/tests/browser_tests.rs
index 9140f23900b2e..10fd138491029 100644
--- a/rust/tests/browser_tests.rs
+++ b/rust/tests/browser_tests.rs
@@ -160,21 +160,3 @@ fn invalid_browser_path_test() {
     .code(DATAERR)
     .failure();
 }
-
-#[test]
-fn invalid_browser_version_test() {
-    let mut cmd = get_selenium_manager();
-    cmd.args(["--browser", "chrome", "--browser-version", "bad-version"])
-        .assert()
-        .code(DATAERR)
-        .failure();
-}
-
-#[test]
-fn valid_browser_version_pass_test() {
-    let mut cmd = get_selenium_manager();
-    cmd.args(["--browser", "chrome", "--browser-version", "127"])
-        .assert()
-        .code(0)
-        .success();
-}