diff options
Diffstat (limited to 'Userland/Libraries/LibWeb/WebDriver/Error.h')
-rw-r--r-- | Userland/Libraries/LibWeb/WebDriver/Error.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/Userland/Libraries/LibWeb/WebDriver/Error.h b/Userland/Libraries/LibWeb/WebDriver/Error.h new file mode 100644 index 0000000000..4bb2c3aa1c --- /dev/null +++ b/Userland/Libraries/LibWeb/WebDriver/Error.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2022, Florent Castelli <florent.castelli@gmail.com> + * Copyright (c) 2022, Sam Atkins <atkinssj@serenityos.org> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include <AK/JsonValue.h> +#include <AK/String.h> + +namespace Web::WebDriver { + +// https://w3c.github.io/webdriver/#dfn-error-code +enum class ErrorCode { + ElementClickIntercepted, + ElementNotInteractable, + InsecureCertificate, + InvalidArgument, + InvalidCookieDomain, + InvalidElementState, + InvalidSelector, + InvalidSessionId, + JavascriptError, + MoveTargetOutOfBounds, + NoSuchAlert, + NoSuchCookie, + NoSuchElement, + NoSuchFrame, + NoSuchWindow, + NoSuchShadowRoot, + ScriptTimeoutError, + SessionNotCreated, + StaleElementReference, + DetachedShadowRoot, + Timeout, + UnableToSetCookie, + UnableToCaptureScreen, + UnexpectedAlertOpen, + UnknownCommand, + UnknownError, + UnknownMethod, + UnsupportedOperation, +}; + +// https://w3c.github.io/webdriver/#errors +struct Error { + unsigned http_status; + String error; + String message; + Optional<JsonValue> data; + + static Error from_code(ErrorCode, String message, Optional<JsonValue> data = {}); +}; + +} + +template<> +struct AK::Formatter<Web::WebDriver::Error> : Formatter<StringView> { + ErrorOr<void> format(FormatBuilder& builder, Web::WebDriver::Error const& error) + { + return Formatter<StringView>::format(builder, String::formatted("Error {}, {}: {}", error.http_status, error.error, error.message)); + } +}; |