#[derive(Debug, Clone, PartialEq, Eq, thiserror::Error)]
pub enum BrowserTestError {
#[error("Failed to start webdriver.")]
StartWebdriver,
#[error("Browser test '{test_name}' failed.")]
RunTest {
test_name: String,
},
#[error("Browser test '{test_name}' panicked: {message}")]
Panic {
test_name: String,
message: String,
},
#[error("One or more browser tests failed or panicked ({failed_tests} failed).")]
RunTests {
failed_tests: usize,
},
#[error("Failed to terminate chromedriver.")]
TerminateWebdriver,
#[error("Failed to flush pause prompt.")]
FlushPausePrompt,
#[error("Failed to read pause response from stdin.")]
ReadPauseResponse,
}
#[cfg(test)]
mod tests {
use super::*;
use assertr::prelude::*;
#[test]
fn run_test_error_displays_plain_test_name() {
let err = BrowserTestError::RunTest {
test_name: "login".to_owned(),
};
assert_that!(err.to_string()).is_equal_to("Browser test 'login' failed.");
}
#[test]
fn run_tests_error_displays_failure_count() {
let err = BrowserTestError::RunTests { failed_tests: 2 };
assert_that!(err.to_string())
.is_equal_to("One or more browser tests failed or panicked (2 failed).");
}
#[test]
fn panic_error_displays_test_name_and_message() {
let err = BrowserTestError::Panic {
test_name: "login".to_owned(),
message: "assertion failed".to_owned(),
};
assert_that!(err.to_string())
.is_equal_to("Browser test 'login' panicked: assertion failed");
}
}