summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2023-07-08 12:57:41 -0400
committerKjetil Orbekk <kj@orbekk.com>2023-07-08 13:04:09 -0400
commit0a8bf0cbb82f16bce7b05e74dc1b85ca16dc15a5 (patch)
treebef482341a9083c2a6ffdb131f38fedff2469bb8 /src
initial commit
Diffstat (limited to 'src')
-rw-r--r--src/main.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000..8befc88
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,36 @@
+use std::{process::Command, error::Error, fs, env, time::Duration};
+
+use fantoccini::{ClientBuilder, Locator};
+use log::info;
+use tokio::time;
+
+static PROFILE_ROOT: &str = "/tmp/geckodriver-dashboard";
+
+// let's set up the sequence of steps we want the browser to take
+#[tokio::main]
+async fn main() -> Result<(), Box<dyn Error>> {
+ pretty_env_logger::init();
+ info!("Current directory: {}", env::current_dir()?.display());
+ fs::create_dir(PROFILE_ROOT).ok();
+ let mut geckodriver = Command::new("geckodriver")
+ .env("MOZ_REMOTE_SETTINGS_DEVTOOLS", "1")
+ .arg("--profile-root").arg("/tmp/geckodriver-dashboard").spawn()?;
+
+ let c = ClientBuilder::native().connect("http://localhost:4444").await.expect("failed to connect to WebDriver");
+
+ loop {
+ let path = fs::canonicalize("index.html")?;
+ info!("Opening {}", path.display());
+ c.goto(&format!("file://{}", path.display())).await?;
+
+ let e = c.find(Locator::Css("#app")).await?;
+ let img = e.screenshot().await?;
+
+ fs::write("index.png", img)?;
+ time::sleep(Duration::from_secs(15)).await;
+ }
+
+ c.close().await?;
+ geckodriver.kill()?;
+ Ok(())
+}