From b0560f02c1f994f1eb0794b863aaf9f4e25cc5fd Mon Sep 17 00:00:00 2001 From: Liam Bigelow <40188355+bglw@users.noreply.github.com> Date: Wed, 2 Oct 2024 22:07:41 +1300 Subject: [PATCH 1/2] Improve resilience launch a Chrome instance --- CHANGELOG.md | 2 ++ toolproof/src/definitions/browser/mod.rs | 22 +++++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5b9c40..ccc460e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ ## Unreleased +* Improve resilience launch a Chrome instance + ## v0.4.0 (September 27, 2024) * Adds `-n ` / `--name ` arguments to the CLI to run a specific test diff --git a/toolproof/src/definitions/browser/mod.rs b/toolproof/src/definitions/browser/mod.rs index 8fc5cca..33cc4bd 100644 --- a/toolproof/src/definitions/browser/mod.rs +++ b/toolproof/src/definitions/browser/mod.rs @@ -2,11 +2,12 @@ use std::sync::Arc; use async_trait::async_trait; use chromiumoxide::cdp::browser_protocol::target::CreateTargetParams; +use chromiumoxide::error::CdpError; use futures::StreamExt; use tokio::task::JoinHandle; use crate::civilization::Civilization; -use crate::errors::{ToolproofInputError, ToolproofStepError}; +use crate::errors::{ToolproofInputError, ToolproofInternalError, ToolproofStepError}; use crate::options::ToolproofParams; use super::{SegmentArgs, ToolproofInstruction, ToolproofRetriever}; @@ -29,14 +30,25 @@ pub enum BrowserTester { }, } +async fn try_launch_browser(mut max: usize) -> (Browser, chromiumoxide::Handler) { + let mut launch = Err(CdpError::NotFound); + while launch.is_err() && max > 0 { + max -= 1; + launch = Browser::launch(BrowserConfig::builder().build().unwrap()).await; + } + match launch { + Ok(res) => res, + Err(e) => { + panic!("Failed to launch browser due to error: {e}"); + } + } +} + impl BrowserTester { async fn initialize(params: &ToolproofParams) -> Self { match params.browser { crate::options::ToolproofBrowserImpl::Chrome => { - let (browser, mut handler) = - Browser::launch(BrowserConfig::builder().build().unwrap()) - .await - .unwrap(); + let (browser, mut handler) = try_launch_browser(3).await; BrowserTester::Chrome { browser: Arc::new(browser), From a29f7a2b02be3518827ae0eb3e547fa3c73f8167 Mon Sep 17 00:00:00 2001 From: Liam Bigelow <40188355+bglw@users.noreply.github.com> Date: Wed, 2 Oct 2024 22:08:19 +1300 Subject: [PATCH 2/2] Changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ccc460e..ee78090 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ ## Unreleased -* Improve resilience launch a Chrome instance +* Improve resilience launching a Chrome instance ## v0.4.0 (September 27, 2024)