Skip to main content

waydriver/
lib.rs

1//! Headless GUI testing for Wayland applications.
2//!
3//! WayDriver launches apps in isolated compositor sessions, interacts with them
4//! via AT-SPI accessibility APIs, and captures screenshots via PipeWire.
5//!
6//! The library is backend-agnostic: three traits ([`CompositorRuntime`],
7//! [`InputBackend`], [`CaptureBackend`]) define the interface, and concrete
8//! implementations live in separate crates (e.g. `waydriver-compositor-mutter`).
9
10/// AT-SPI accessibility tree inspection and interaction.
11pub mod atspi;
12/// Backend trait definitions for compositors, input, and capture.
13pub mod backend;
14/// GStreamer-based PipeWire frame capture helpers.
15pub mod capture;
16/// Error types used throughout the crate.
17pub mod error;
18/// X11 keysym utilities for keyboard input.
19pub mod keysym;
20/// XPath-based lazy locators over the AT-SPI tree.
21pub mod locator;
22/// Test session lifecycle management.
23pub mod session;
24/// OCR-backed visual locator for widgets that don't surface in AT-SPI.
25/// Opt-in via the `visual` Cargo feature.
26#[cfg(feature = "visual")]
27pub mod visual;
28
29pub use atspi::Rect;
30pub use backend::{
31    CaptureBackend, CompositorRuntime, InputBackend, PipeWireStream, PointerAxis, PointerButton,
32    StreamToken,
33};
34pub use error::{Error, Result};
35pub use locator::{FillMode, Locator, SelectBy};
36pub use session::{Session, SessionConfig, VisualRegionTuning, VisualTextTuning};
37#[cfg(feature = "visual")]
38pub use visual::{ImageLocator, MatchMode, RegionLocator, Shape, TextHit, VisualLocator};