mod full;
pub use full::*;
mod cpu_backend;
mod runner;
pub use runner::run_e2e_test;
mod report;
pub use report::{load_e2e_tests, render_report, E2eVerdict};
pub mod hooks {
use std::sync::RwLock;
use azul_layout::callbacks::CallbackInfo;
#[derive(Clone, Copy, Debug)]
pub struct E2eHostHooks {
pub take_native_screenshot_base64:
Option<fn(&mut CallbackInfo) -> Result<String, String>>,
}
impl E2eHostHooks {
pub const NONE: Self = Self {
take_native_screenshot_base64: None,
};
}
impl Default for E2eHostHooks {
fn default() -> Self {
Self::NONE
}
}
static HOST_HOOKS: RwLock<E2eHostHooks> = RwLock::new(E2eHostHooks::NONE);
pub fn set_host_hooks(hooks: E2eHostHooks) {
if let Ok(mut h) = HOST_HOOKS.write() {
*h = hooks;
}
}
fn get() -> E2eHostHooks {
HOST_HOOKS.read().map(|h| *h).unwrap_or(E2eHostHooks::NONE)
}
pub(crate) fn take_native_screenshot_base64(
ci: &mut CallbackInfo,
) -> Result<String, String> {
match get().take_native_screenshot_base64 {
Some(f) => f(ci),
None => Err(
"native screenshot unavailable (no e2e host hook installed)".to_string(),
),
}
}
}