(&mut self)
| 505 | } |
| 506 | |
| 507 | fn discover_local_browser(&mut self) -> Result<(), Error> { |
| 508 | let mut download_browser = self.is_force_browser_download(); |
| 509 | if download_browser && self.is_safari() { |
| 510 | self.get_logger().debug( |
| 511 | "Force browser download requested for Safari, but downloads are not supported; using local discovery", |
| 512 | ); |
| 513 | download_browser = false; |
| 514 | } |
| 515 | if !download_browser && !self.is_electron() { |
| 516 | let major_browser_version = self.get_major_browser_version(); |
| 517 | let original_browser_path = self.get_browser_path().to_string(); |
| 518 | match self.discover_browser_version()? { |
| 519 | Some(discovered_version) => { |
| 520 | if !self.is_safari() { |
| 521 | self.get_logger().debug(format!( |
| 522 | "Detected browser: {} {}", |
| 523 | self.get_browser_name(), |
| 524 | discovered_version |
| 525 | )); |
| 526 | } |
| 527 | if self.is_browser_version_specific() |
| 528 | && !self.get_browser_version().eq(&discovered_version) |
| 529 | { |
| 530 | if !original_browser_path.is_empty() { |
| 531 | self.set_fallback_driver_from_cache(false); |
| 532 | return Err(anyhow!(format!( |
| 533 | "The browser at {} has version {} but {} {} was requested; \ |
| 534 | remove --browser-path to allow a browser download", |
| 535 | original_browser_path, |
| 536 | discovered_version, |
| 537 | self.get_browser_name(), |
| 538 | self.get_browser_version(), |
| 539 | ))); |
| 540 | } |
| 541 | download_browser = true; |
| 542 | } else { |
| 543 | let discovered_major_browser_version = self |
| 544 | .get_major_version(&discovered_version) |
| 545 | .unwrap_or_default(); |
| 546 | |
| 547 | if self.is_browser_version_stable() || self.is_browser_version_unstable() { |
| 548 | let online_browser_version = self.request_browser_version()?; |
| 549 | if online_browser_version.is_some() { |
| 550 | let major_online_browser_version = |
| 551 | self.get_major_version(&online_browser_version.unwrap())?; |
| 552 | if discovered_major_browser_version |
| 553 | .eq(&major_online_browser_version) |
| 554 | { |
| 555 | self.get_logger().debug(format!( |
| 556 | "Discovered online {} version ({}) is the same as the detected local {} version", |
| 557 | self.get_browser_name(), |
| 558 | discovered_major_browser_version, |
| 559 | self.get_browser_name(), |
| 560 | )); |
| 561 | self.set_browser_version(discovered_version); |
| 562 | } else { |
| 563 | self.get_logger().debug(format!( |
| 564 | "Discovered online {} version ({}) is different to the detected local {} version ({})", |
no test coverage detected