1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//! Puppeteer from Rust, typed, over the JavaScript CLI's generic bridge
//! (issue #108).
//!
//! Puppeteer exists only for Node.js, so [`PuppeteerBridge`] starts
//! `browser-commander serve --stdio` and works with Puppeteer's objects as
//! remote handles. [`api`] is generated by
//! `scripts/generate-puppeteer-bindings.mjs` from the declaration file that
//! puppeteer-core ships (`rust/protocol/puppeteer/api.json`): one struct per
//! Puppeteer class or interface, with a typed `async fn` for every method and
//! getter, own and inherited.
//!
//! ```no_run
//! # async fn demo() -> Result<(), browser_commander::puppeteer::BridgeError> {
//! use browser_commander::puppeteer::{BridgeOptions, JsFunction, PuppeteerBridge};
//! use serde_json::json;
//!
//! let bridge = PuppeteerBridge::launch(BridgeOptions::default()).await?;
//! let puppeteer = bridge.puppeteer().await?;
//! let browser = puppeteer.launch(Some(json!({ "headless": true }))).await?;
//! let page = browser.new_page(None).await?;
//! page.goto("https://example.com", None).await?;
//! let title = page.title().await?;
//! let sum = page.evaluate(JsFunction::source("(a, b) => a + b"), &[json!(1), json!(2)]).await?;
//! # let _ = (title, sum);
//! browser.close().await?;
//! bridge.close().await;
//! # Ok(())
//! # }
//! ```
pub use *;
pub use ;