rustenium 1.1.2

A modern, robust, high-performance WebDriver BiDi automation library for Rust
Documentation
use rustenium::error::bidi::*;

#[tokio::test]
async fn error_display_messages() {
    let cases: Vec<(Box<dyn std::error::Error>, &str)> = vec![
        (Box::new(ZeroBrowsingContextAtStartError), "No Browsing Context"),
        (Box::new(ContextIndexError {}), "Context does not exist"),
        (Box::new(InvalidPositionError), "valid position"),
        (Box::new(InputError::UnknownKey("Foo".into())), "Unknown key"),
        (Box::new(InputError::TouchAlreadyStarted), "already started"),
    ];

    for (err, expected_substr) in cases {
        let msg = format!("{}", err);
        assert!(msg.contains(expected_substr), "'{}' should contain '{}'", msg, expected_substr);
    }
}

#[tokio::test]
async fn context_index_error_converts_to_open_url_error() {
    let err: NavigateError = ContextIndexError {}.into();
    assert!(matches!(err, NavigateError::ContextIndexError(_)));
}

#[tokio::test]
async fn context_index_error_converts_to_find_nodes_error() {
    let err: FindNodesError = ContextIndexError {}.into();
    assert!(matches!(err, FindNodesError::ContextIndexError(_)));
}

#[tokio::test]
async fn screenshot_error_variants() {
    let path_err = ScreenshotError::InvalidPath("bad".into());
    assert!(format!("{}", path_err).contains("bad"));

    let b64_err = ScreenshotError::Base64DecodeError("decode fail".into());
    assert!(format!("{}", b64_err).contains("decode fail"));

    let write_err = ScreenshotError::FileWriteError("write fail".into());
    assert!(format!("{}", write_err).contains("write fail"));

    assert!(format!("{}", ScreenshotError::NoSharedId).contains("shared ID"));
    assert!(format!("{}", ScreenshotError::NoContext).contains("context"));
}