Skip to content

Commit 73cfa22

Browse files
[rust] Support for Chromium (#12511) (#12890)
[rust] Detect chromium browser in path (#12511) Co-authored-by: Titus Fortner <titusfortner@users.noreply.github.com>
1 parent ecfa9c4 commit 73cfa22

File tree

8 files changed

+42
-15
lines changed

8 files changed

+42
-15
lines changed

rust/src/chrome.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,10 @@ impl SeleniumManager for ChromeManager {
211211
self.browser_name
212212
}
213213

214+
fn get_browser_names_in_path(&self) -> Vec<&str> {
215+
vec![self.get_browser_name(), "chromium-browser", "chromium"]
216+
}
217+
214218
fn get_http_client(&self) -> &Client {
215219
&self.http_client
216220
}

rust/src/edge.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ impl SeleniumManager for EdgeManager {
6969
self.browser_name
7070
}
7171

72+
fn get_browser_names_in_path(&self) -> Vec<&str> {
73+
vec![self.get_browser_name()]
74+
}
75+
7276
fn get_http_client(&self) -> &Client {
7377
&self.http_client
7478
}

rust/src/firefox.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,10 @@ impl SeleniumManager for FirefoxManager {
209209
self.browser_name
210210
}
211211

212+
fn get_browser_names_in_path(&self) -> Vec<&str> {
213+
vec![self.get_browser_name()]
214+
}
215+
212216
fn get_http_client(&self) -> &Client {
213217
&self.http_client
214218
}

rust/src/grid.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ impl SeleniumManager for GridManager {
7474
self.browser_name
7575
}
7676

77+
fn get_browser_names_in_path(&self) -> Vec<&str> {
78+
vec![self.get_browser_name()]
79+
}
80+
7781
fn get_http_client(&self) -> &Client {
7882
&self.http_client
7983
}

rust/src/iexplorer.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ impl SeleniumManager for IExplorerManager {
7979
self.browser_name
8080
}
8181

82+
fn get_browser_names_in_path(&self) -> Vec<&str> {
83+
vec![self.get_browser_name()]
84+
}
85+
8286
fn get_http_client(&self) -> &Client {
8387
&self.http_client
8488
}

rust/src/lib.rs

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ pub trait SeleniumManager {
111111

112112
fn get_browser_name(&self) -> &str;
113113

114+
fn get_browser_names_in_path(&self) -> Vec<&str>;
115+
114116
fn get_http_client(&self) -> &Client;
115117

116118
fn set_http_client(&mut self, http_client: Client);
@@ -229,20 +231,9 @@ pub trait SeleniumManager {
229231
Some(Path::new(&canon_browser_path).to_path_buf())
230232
} else {
231233
// Check browser in PATH
232-
let browser_name = self.get_browser_name();
233-
self.get_logger()
234-
.trace(format!("Checking {} in PATH", browser_name));
235234
let browser_in_path = self.find_browser_in_path();
236235
if let Some(path) = &browser_in_path {
237-
let canon_browser_path = self.canonicalize_path(path.clone());
238-
self.get_logger().debug(format!(
239-
"Found {} in PATH: {}",
240-
browser_name, &canon_browser_path
241-
));
242-
self.set_browser_path(canon_browser_path);
243-
} else {
244-
self.get_logger()
245-
.debug(format!("{} not found in PATH", browser_name));
236+
self.set_browser_path(path_to_string(path));
246237
}
247238
browser_in_path
248239
}
@@ -392,10 +383,18 @@ pub trait SeleniumManager {
392383
}
393384

394385
fn find_browser_in_path(&self) -> Option<PathBuf> {
395-
let browser_path = self.execute_which_in_shell(self.get_browser_name());
396-
if let Some(path) = browser_path {
397-
return Some(Path::new(&path).to_path_buf());
386+
for browser_name in self.get_browser_names_in_path().iter() {
387+
self.get_logger()
388+
.trace(format!("Checking {} in PATH", browser_name));
389+
let browser_path = self.execute_which_in_shell(browser_name);
390+
if let Some(path) = browser_path {
391+
self.get_logger()
392+
.debug(format!("Found {} in PATH: {}", browser_name, &path));
393+
return Some(Path::new(&path).to_path_buf());
394+
}
398395
}
396+
self.get_logger()
397+
.debug(format!("{} not found in PATH", self.get_browser_name()));
399398
None
400399
}
401400

rust/src/safari.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ impl SeleniumManager for SafariManager {
6262
self.browser_name
6363
}
6464

65+
fn get_browser_names_in_path(&self) -> Vec<&str> {
66+
vec![self.get_browser_name()]
67+
}
68+
6569
fn get_http_client(&self) -> &Client {
6670
&self.http_client
6771
}

rust/src/safaritp.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,10 @@ impl SeleniumManager for SafariTPManager {
6868
self.browser_name
6969
}
7070

71+
fn get_browser_names_in_path(&self) -> Vec<&str> {
72+
vec![self.get_browser_name()]
73+
}
74+
7175
fn get_http_client(&self) -> &Client {
7276
&self.http_client
7377
}

0 commit comments

Comments
 (0)