browser-commander 0.10.9

Universal browser automation library that supports multiple browser engines with a unified API
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

<!-- changelog-insert-here -->


## [0.10.9] - 2026-08-02

### Added

- `DialogManager` struct (`core/dialog.rs`) for managing browser dialog events across all engines
- `DialogEvent` — carries dialog type, message, and optional default value to handlers
- `DialogType` enum — `Alert`, `Confirm`, `Prompt`, `BeforeUnload`, `Unknown`
- `DialogManager::on_dialog(handler)` — register a synchronous handler for dialog events
- `DialogManager::clear_dialog_handlers()` — remove all registered handlers
- `DialogManager::dispatch(event)` — dispatch a dialog event to all registered handlers (called by engine integration)
- `DialogManager::handler_count()` — inspect number of registered handlers
- `DialogEvent`, `DialogManager`, `DialogType` re-exported from crate root and `prelude`
- 15 new unit tests plus 2 doc-tests for dialog handling

### Added

- Real Chromium launch via `chromiumoxide` in `launch_browser`. Previously the Rust `launch_browser` created a user data directory and returned metadata only; it now starts a Chromium process, completes the CDP handshake, opens an initial page, and returns a live page adapter.
- `LaunchResult.page: Arc<dyn EngineAdapter>` — live page handle returned from `launch_browser`, usable with all of the crate's navigation, interaction, and query helpers (`goto`, `click`, `fill`, `evaluate`, `is_visible`, `count`, ...).
- `ChromiumoxidePage` adapter (`browser::chromiumoxide_adapter`) implementing the full `EngineAdapter` trait on top of `chromiumoxide::Page`, including navigation, element interaction, evaluation, screenshots, PDF printing (with CSS length/paper-format parsing), keyboard events, and color-scheme emulation.
- `LaunchOptions::sandbox(bool)` and `LaunchOptions::launch_timeout(Duration)` builder methods for CI-friendly launches.
- `ChromiumoxidePage::raw_page()` escape hatch for chromiumoxide-specific APIs not yet covered by the unified trait.
- Integration smoke test (`tests/launch_smoke.rs`, `--ignored`) that launches a real headless Chromium, navigates, evaluates JavaScript, and checks visibility / element counts.

### Fixed

- README quick-start example now compiles against the real `launch_browser` API (`result.page.as_ref().goto(...)`) instead of the previous placeholder signature.

### Added
- Added first-class Rust Playwright and Puppeteer engine variants backed by a Node.js bridge to the official packages.

### Added

- Added `LaunchOptions::channel` and `LaunchOptions::executable_path` for reusing an installed Chrome-family browser.

### Added

- Added `connect_browser()` and `ConnectOptions` for attaching Chromiumoxide, Playwright, or Puppeteer to an externally managed Chrome-family browser over CDP.

### Added

- Added `launch_real_browser()` for discovering and starting an installed Chrome-family browser with a dedicated profile before attaching over CDP.

### Added

- Added installed Chrome, Edge, Brave, Chromium, and Firefox profile discovery and cookie import, including platform decryption and an owner-only cross-process cache.

### Added

- Applied automation-friendly Chromium launch defaults, including `--password-store=basic`, and added extra-argument plus per-default opt-out builders.

## [0.1.0] - 2024-12-30

### Added

- Initial Rust implementation of browser-commander library
- Core modules: constants, logger, engine adapter trait, navigation safety
- Elements modules: selectors, visibility checking, content extraction
- Interactions modules: click, scroll, fill operations with verification
- Browser modules: launcher, navigation operations
- Utilities modules: URL handling, wait/sleep operations
- High-level universal DRY utilities
- 103 unit tests and 3 doc tests
- Async/await support with Tokio runtime
- Chrome DevTools Protocol support via chromiumoxide
- WebDriver support via fantoccini