nordisk/holger-ui
browser-tests/Cargo.toml
# **holger-ui's browser tests** (lane HOLGER-UI-TESTS, 2026-10-24).
#
# A headless Chromium (driven over the DevTools protocol by chromiumoxide, in the image
# `Containerfile` builds) against the REAL pieces, on loopback:
#
# | piece | from |
# |---|---|
# | the console bundle (the Leptos/wasm app, login, sign-up, welcome, paid pages) | this repository, built by `bundle()`: the wasm32 cargo build, wasm-bindgen as a library, the page assembled by nornir-build-thing `web_app::assemble_dist` |
# | holger-ui-server (the bundle + the pass-through) and the site's buy relay, merged as the front merges them | holger-estate-front `console::router` (features `console`, `metered`) |
# | holger | holger-server-lib in process, booted from holger-recipe's `estate_ron::medium()` (the declaration every estate ships) plus the passkey plane |
# | the ONE box and Stripe | monetize-site-buy `testkit::FakeOneBox` |
#
# ## Why its own workspace
#
# It links holger, holger's front and monetize from the sibling checkouts. holger-ui's root
# workspace builds from a lone clone and links no sibling, so this crate is `exclude`d from
# it, with a lock of its own; `cargo xtask browser` (and `cargo xtask ci`) runs it.
[package]
name = "holger-ui-browser-tests"
version = "2.0.0"
edition = "2021"
license = "AGPL-3.0-only"
publish = false
description = "holger-ui's browser tests: a headless Chromium against the real console bundle, holger-ui-server, holger and the shared fake ONE box"
[workspace]
[dependencies]
holger-estate-front = { path = "../../holger/holger-estate-front", default-features = false, features = ["console", "metered"] }
# `front`: the front page the buyer starts on (`/`), out of server-lib's default since A28 M14.
# `sync` (Holger v2.0 H4/H6): the console draws the upstream's sync board from holger's own door.
holger-server-lib = { path = "../../holger/server/lib", features = ["metered", "front", "supply-chain", "sandbox-off", "sync"] }
holger-recipe = { path = "../../holger/holger-recipe" }
holger-intel = { path = "../../holger/intel" }
monetize-site-buy = { path = "../../monetize/crates/monetize-site-buy", features = ["testkit"] }
# `web_app::assemble_dist`: the page assembled as the Build Thing's web-app step assembles it.
nornir-build-thing = { path = "../../edda/crates/nornir-build-thing", default-features = false }
# wasm-bindgen as a LIBRARY, at the version holger-ui's lock pins (`Trunk.toml` `[tools]`).
wasm-bindgen-cli-support = "=0.2.129"
chromiumoxide = { version = "0.9", default-features = false }
futures = "0.3"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "time", "sync", "process"] }
axum = { version = "0.8", default-features = false, features = ["tokio", "http1", "http2"] }
serde_json = "1"
tempfile = "3"
anyhow = "1"
base64 = "0.23"
ureq = { version = "3", default-features = false }
# The estate's sibling patches (holger's `.cargo/estate-siblings.toml`, paths from here), the ones this graph uses.
[patch.crates-io]
appliance-grow = { path = "../../edda/crates/appliance-grow" }
appliance-pid1 = { path = "../../edda/crates/appliance-pid1" }
disk-snapshot = { path = "../../edda/crates/disk-snapshot" }
draupnir = { path = "../../draupnir" }
edda-admit = { path = "../../edda/crates/admit" }
estate-clock = { path = "../../edda/crates/estate-clock" }
guest-host = { path = "../../edda/crates/guest-host" }
jera = { path = "../../edda/crates/jera" }
korp-installer = { path = "../../tunnr/crates/korp-installer" }
modgunn = { path = "../../modgunn" }
monetize-embed = { path = "../../monetize/crates/monetize-embed" }
monetize-estate-side = { path = "../../monetize/crates/monetize-estate-side" }
monetize-mail = { path = "../../monetize/crates/monetize-mail" }
monetize-product = { path = "../../monetize/crates/monetize-product" }
monetize-proto = { path = "../../monetize/crates/monetize-proto" }
nordisk-estate-svg = { path = "../../monetize/crates/estate-svg" }
nordisk-pairing = { path = "../../Skidbladnir/crates/installer/nordisk-pairing" }
nordisk-twin = { path = "../../Skidbladnir/crates/installer/nordisk-twin" }
nornir-auth-oidc = { path = "../../edda/crates/nornir-auth-oidc" }
nornir-auth-policy = { path = "../../edda/crates/nornir-auth-policy" }
nornir-auth-webauthn = { path = "../../edda/crates/nornir-auth-webauthn" }
nornir-identity-session = { path = "../../edda/crates/nornir-identity-session" }
nornir-build-thing = { path = "../../edda/crates/nornir-build-thing" }
nornir-escape = { path = "../../edda/crates/nornir-escape" }
nornir-gate = { path = "../../edda/crates/nornir-gate" }
nornir-hash = { path = "../../edda/crates/nornir-hash" }
nornir-service = { path = "../../edda/crates/nornir-service" }
plugin-door-wire = { path = "../../Skidbladnir/crates/installer/plugin-door-wire" }
wg-appliance-core = { path = "../../edda/crates/wg-appliance-core" }