summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibWeb/WebDriver/Error.h
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Libraries/LibWeb/WebDriver/Error.h')
-rw-r--r--Userland/Libraries/LibWeb/WebDriver/Error.h65
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));
+ }
+};