Skip to content

Commit 69f8dc6

Browse files
committed
[rust] Selenium Manager support nightly Grid (#13384)
1 parent e23c025 commit 69f8dc6

File tree

2 files changed

+24
-12
lines changed

2 files changed

+24
-12
lines changed

rust/src/grid.rs

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,16 @@ impl SeleniumManager for GridManager {
106106
}
107107

108108
fn request_driver_version(&mut self) -> Result<String, Error> {
109-
let major_browser_version_binding = self.get_major_browser_version();
110-
let major_browser_version = major_browser_version_binding.as_str();
109+
let is_nightly = self.is_nightly(self.get_driver_version());
110+
let major_driver_version_binding = self.get_major_driver_version();
111+
let major_driver_version = major_driver_version_binding.as_str();
111112
let cache_path = self.get_cache_path()?;
112113
let mut metadata = get_metadata(self.get_logger(), &cache_path);
113114

114115
match get_driver_version_from_metadata(
115116
&metadata.drivers,
116117
self.driver_name,
117-
major_browser_version,
118+
major_driver_version,
118119
) {
119120
Some(driver_version) => {
120121
self.log.trace(format!(
@@ -135,8 +136,12 @@ impl SeleniumManager for GridManager {
135136
.into_iter()
136137
.filter(|r| {
137138
r.assets.iter().any(|url| {
138-
url.browser_download_url.contains(GRID_RELEASE)
139-
&& !url.browser_download_url.contains(SNAPSHOT)
139+
if is_nightly {
140+
url.browser_download_url.contains(SNAPSHOT)
141+
} else {
142+
url.browser_download_url.contains(GRID_RELEASE)
143+
&& !url.browser_download_url.contains(SNAPSHOT)
144+
}
140145
})
141146
})
142147
.collect();
@@ -155,15 +160,20 @@ impl SeleniumManager for GridManager {
155160

156161
let index_release =
157162
driver_url.rfind(GRID_RELEASE).unwrap() + GRID_RELEASE.len() + 1;
158-
let driver_version = parse_version(
159-
driver_url.as_str()[index_release..].to_string(),
160-
self.get_logger(),
161-
)?;
163+
let driver_version = if is_nightly {
164+
let index_jar = driver_url.rfind(GRID_EXTENSION).unwrap() - 1;
165+
driver_url.as_str()[index_release..index_jar].to_string()
166+
} else {
167+
parse_version(
168+
driver_url.as_str()[index_release..].to_string(),
169+
self.get_logger(),
170+
)?
171+
};
162172

163173
let driver_ttl = self.get_ttl();
164174
if driver_ttl > 0 {
165175
metadata.drivers.push(create_driver_metadata(
166-
major_browser_version,
176+
major_driver_version,
167177
self.driver_name,
168178
&driver_version,
169179
driver_ttl,

rust/src/lib.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -798,7 +798,9 @@ pub trait SeleniumManager {
798798
}
799799

800800
// With the discovered browser version, discover the proper driver version using online endpoints
801-
if self.get_driver_version().is_empty() {
801+
if self.get_driver_version().is_empty()
802+
|| (self.is_grid() && self.is_nightly(self.get_driver_version()))
803+
{
802804
match self.discover_driver_version() {
803805
Ok(driver_version) => {
804806
self.set_driver_version(driver_version);
@@ -1030,7 +1032,7 @@ pub trait SeleniumManager {
10301032
}
10311033

10321034
let mut release_version = driver_version.to_string();
1033-
if !driver_version.ends_with('0') {
1035+
if !driver_version.ends_with('0') && !self.is_nightly(driver_version) {
10341036
// E.g.: version 4.8.1 is shipped within release 4.8.0
10351037
let error_message = format!(
10361038
"Wrong {} version: '{}'",

0 commit comments

Comments
 (0)