@@ -237,43 +237,47 @@ pub trait SeleniumManager {
237237 ) ) ) ;
238238 }
239239
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 ( ) ) ;
262256 }
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 ( ) ) ;
264267
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+ }
277281 }
278282 }
279283 }
@@ -715,6 +719,14 @@ pub trait SeleniumManager {
715719 self . is_stable ( self . get_browser_version ( ) )
716720 }
717721
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+
718730 fn setup ( & mut self ) -> Result < PathBuf , Error > {
719731 let mut driver_in_path = None ;
720732 let mut driver_in_path_version = None ;
0 commit comments