[package]
name = "aprender-test-lib"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
description = "Probar: Rust-native testing framework with pixel coverage, TUI snapshots, and visual regression"
license.workspace = true
repository.workspace = true
keywords = ["testing", "pixel-coverage", "visual-regression", "tui", "snapshot"]
categories = ["development-tools::testing", "wasm"]
[features]
default = ["tui", "media", "watch"]
browser = ["chromiumoxide", "tokio", "futures", "async-trait"]
runtime = ["wasmtime", "async-trait"]
derive = ["jugar-probar-derive"]
tui = ["crossterm"]
gpu = ["trueno"]
compute-blocks = ["presentar-terminal", "presentar-core"]
docker = ["bollard", "tokio", "futures", "async-trait"]
proptest = ["dep:proptest"]
media = ["dep:image", "dep:gif", "dep:png", "dep:mp4"]
watch = ["dep:notify"]
llm-types = []
llm = ["llm-types", "dep:reqwest", "tokio", "futures"]
[lib]
name = "jugar_probar"
[dependencies]
thiserror = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
image = { workspace = true, optional = true }
base64 = { workspace = true }
gif = { workspace = true, optional = true }
png = { workspace = true, optional = true }
mp4 = { workspace = true, optional = true }
crossterm = { workspace = true, optional = true }
regex = { workspace = true }
sha2 = { workspace = true }
serde_yaml_ng = { workspace = true }
tracing = { workspace = true }
uuid = { workspace = true }
jugar-probar-derive = { version = "=1.0.3", optional = true }
trueno = { workspace = true, optional = true }
presentar-terminal = { workspace = true, optional = true }
presentar-core = { workspace = true, optional = true }
bollard = { workspace = true, optional = true }
proptest = { workspace = true, optional = true }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"], optional = true }
syn = { workspace = true }
proc-macro2 = { version = "1.0", features = ["span-locations"] }
bincode = { workspace = true }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
notify = { workspace = true, optional = true }
tracing-subscriber = { workspace = true }
chrono = { version = "0.4", default-features = false, features = ["std", "clock"] }
chromiumoxide = { workspace = true, optional = true }
tokio = { workspace = true, optional = true }
futures = { workspace = true, optional = true }
wasmtime = { workspace = true, optional = true }
async-trait = { workspace = true, optional = true }
[target.'cfg(target_arch = "wasm32")'.dependencies]
web-sys = { version = "0.3", features = ["Window", "Document", "Element", "HtmlCanvasElement", "CanvasRenderingContext2d", "Performance", "Response"] }
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
js-sys = "0.3"
[dev-dependencies]
tokio = { workspace = true }
async-trait = { workspace = true }
proptest = { workspace = true }
tempfile = { workspace = true }
criterion = { version = "0.5", features = ["html_reports"] }
[[bench]]
name = "benchmarks"
harness = false
[[bench]]
name = "locator_ops"
harness = false
[[bench]]
name = "playbook_ops"
harness = false
[[bench]]
name = "coverage_ops"
harness = false
[[bench]]
name = "image_ops"
harness = false
required-features = ["media"]
[[example]]
name = "locator_demo"
path = "examples/locator_demo.rs"
[[example]]
name = "accessibility_demo"
path = "examples/accessibility_demo.rs"
[[example]]
name = "coverage_demo"
path = "examples/coverage_demo.rs"
required-features = ["media"]
[[example]]
name = "pong_simulation"
path = "examples/pong_simulation.rs"
required-features = ["media"]
[[example]]
name = "gui_coverage"
path = "examples/gui_coverage.rs"
required-features = ["media"]
[[example]]
name = "pixel_coverage_heatmap"
path = "examples/pixel_coverage_heatmap.rs"
required-features = ["media"]
[[example]]
name = "visual_regression_demo"
path = "examples/visual_regression_demo.rs"
required-features = ["media"]
[[example]]
name = "wasm_pixel_gui_demo"
path = "examples/wasm_pixel_gui_demo.rs"
required-features = ["media"]
[[example]]
name = "docker_demo"
path = "examples/docker_demo.rs"
required-features = ["docker"]
[[example]]
name = "zero_js_demo"
path = "examples/zero_js_demo.rs"
[[example]]
name = "worker_harness_demo"
path = "examples/worker_harness_demo.rs"
[[example]]
name = "watch_mode"
path = "examples/watch_mode.rs"
required-features = ["watch"]
[lints]
workspace = true