allwright-core 0.1.11

Lightweight allwright engine core with shared client and transport APIs.
Documentation

allwright-core Rust crate

allwright-core is the lightweight Rust engine core for the project.

It includes:

  • a high-level Rust client API for talking to the allwright engine
  • the engine server implementation used by the installable allwright CLI
  • the shared plugin catalog used by CLI-side plugin registration

The surrounding Rust workspace now also publishes:

  • allwright
  • allwright-plugin-sdk
  • allwright-surface-web
  • allwright-surface-mobile
  • allwright-surface-mobile-android
  • allwright-surface-mobile-ios
  • allwright-surface-desktop
  • allwright-surface-desktop-mac
  • allwright-surface-desktop-windows
  • allwright-surface-desktop-linux

Installing the allwright package is intended to provide the CLI plus this lightweight core together, while surface crates are added separately as plugins.

Typed hooks use one generic registration/wait lifecycle. For example, register the web-owned new-page hook before the action that opens a tab:

let hook = page.register_hook(allwright::NEW_PAGE).await?;
page.click("a[target=_blank]").await?;
let new_page = hook.wait().await?;
let hook = page.register_hook(allwright::FILE_CHOOSER).await?;
page.click("button.open-upload").await?;
let chooser = hook.wait().await?;
chooser.set_file("fixtures/document.pdf").await?;
let hook = page.register_hook(allwright::DOWNLOAD).await?;
page.click("a.download-report").await?;
let download = hook.wait().await?;
download
    .save_as(format!("artifacts/{}", download.suggested_filename()))
    .await?;

These paths are local to the Rust test process and are streamed through a remote Allwright server when necessary. Android app contexts expose the same register_hook(FILE_CHOOSER) / register_hook(DOWNLOAD) lifecycle and return mobile chooser/download handles.