@@ -237,43 +237,47 @@ pub trait SeleniumManager {
237
237
) ) ) ;
238
238
}
239
239
240
- // Browser version is checked in the local metadata
241
- match get_browser_version_from_metadata (
242
- & metadata. browsers ,
243
- self . get_browser_name ( ) ,
244
- & major_browser_version,
245
- ) {
246
- Some ( version) => {
247
- self . get_logger ( ) . trace ( format ! (
248
- "Browser with valid TTL. Getting {} version from metadata" ,
249
- self . get_browser_name( )
250
- ) ) ;
251
- browser_version = version;
252
- self . set_browser_version ( browser_version. clone ( ) ) ;
253
- }
254
- _ => {
255
- // If not in metadata, discover version using online metadata
256
- if self . is_browser_version_stable ( ) || self . is_browser_version_empty ( ) {
257
- browser_version =
258
- self . request_latest_browser_version_from_online ( original_browser_version) ?;
259
- } else {
260
- browser_version =
261
- self . request_fixed_browser_version_from_online ( original_browser_version) ?;
240
+ if self . is_version_specific ( original_browser_version) {
241
+ browser_version = original_browser_version. to_string ( ) ;
242
+ } else {
243
+ // Browser version is checked in the local metadata
244
+ match get_browser_version_from_metadata (
245
+ & metadata. browsers ,
246
+ self . get_browser_name ( ) ,
247
+ & major_browser_version,
248
+ ) {
249
+ Some ( version) => {
250
+ self . get_logger ( ) . trace ( format ! (
251
+ "Browser with valid TTL. Getting {} version from metadata" ,
252
+ self . get_browser_name( )
253
+ ) ) ;
254
+ browser_version = version;
255
+ self . set_browser_version ( browser_version. clone ( ) ) ;
262
256
}
263
- self . set_browser_version ( browser_version. clone ( ) ) ;
257
+ _ => {
258
+ // If not in metadata, discover version using online metadata
259
+ if self . is_browser_version_stable ( ) || self . is_browser_version_empty ( ) {
260
+ browser_version = self
261
+ . request_latest_browser_version_from_online ( original_browser_version) ?;
262
+ } else {
263
+ browser_version = self
264
+ . request_fixed_browser_version_from_online ( original_browser_version) ?;
265
+ }
266
+ self . set_browser_version ( browser_version. clone ( ) ) ;
264
267
265
- let browser_ttl = self . get_ttl ( ) ;
266
- if browser_ttl > 0
267
- && !self . is_browser_version_empty ( )
268
- && !self . is_browser_version_stable ( )
269
- {
270
- metadata. browsers . push ( create_browser_metadata (
271
- self . get_browser_name ( ) ,
272
- & major_browser_version,
273
- & browser_version,
274
- browser_ttl,
275
- ) ) ;
276
- write_metadata ( & metadata, self . get_logger ( ) , cache_path) ;
268
+ let browser_ttl = self . get_ttl ( ) ;
269
+ if browser_ttl > 0
270
+ && !self . is_browser_version_empty ( )
271
+ && !self . is_browser_version_stable ( )
272
+ {
273
+ metadata. browsers . push ( create_browser_metadata (
274
+ self . get_browser_name ( ) ,
275
+ & major_browser_version,
276
+ & browser_version,
277
+ browser_ttl,
278
+ ) ) ;
279
+ write_metadata ( & metadata, self . get_logger ( ) , cache_path) ;
280
+ }
277
281
}
278
282
}
279
283
}
@@ -715,6 +719,14 @@ pub trait SeleniumManager {
715
719
self . is_stable ( self . get_browser_version ( ) )
716
720
}
717
721
722
+ fn is_version_specific ( & self , version : & str ) -> bool {
723
+ version. contains ( "." )
724
+ }
725
+
726
+ fn is_browser_version_specific ( & self ) -> bool {
727
+ self . is_version_specific ( self . get_browser_version ( ) )
728
+ }
729
+
718
730
fn setup ( & mut self ) -> Result < PathBuf , Error > {
719
731
let mut driver_in_path = None ;
720
732
let mut driver_in_path_version = None ;
0 commit comments