1use std::time::Duration;
4use thiserror::Error;
5
6#[derive(Error, Debug)]
8pub enum CoreError {
9 #[error("CDP error: {0}")]
11 Cdp(#[from] viewpoint_cdp::CdpError),
12
13 #[error("browser error: {0}")]
15 Browser(#[from] BrowserError),
16
17 #[error("context error: {0}")]
19 Context(#[from] ContextError),
20
21 #[error("page error: {0}")]
23 Page(#[from] PageError),
24
25 #[error("wait error: {0}")]
27 Wait(#[from] WaitError),
28
29 #[error("navigation error: {0}")]
31 Navigation(#[from] NavigationError),
32
33 #[error("locator error: {0}")]
35 Locator(#[from] LocatorError),
36}
37
38#[derive(Error, Debug)]
40pub enum BrowserError {
41 #[error("Chromium not found. Set CHROMIUM_PATH environment variable or install Chromium.")]
43 ChromiumNotFound,
44
45 #[error("failed to launch browser: {0}")]
47 LaunchFailed(String),
48
49 #[error("browser launch timeout after {0:?}")]
51 LaunchTimeout(Duration),
52
53 #[error("failed to connect to browser: {0}")]
55 ConnectionFailed(String),
56
57 #[error("browser is closed")]
59 Closed,
60
61 #[error("CDP error: {0}")]
63 Cdp(#[from] viewpoint_cdp::CdpError),
64}
65
66#[derive(Error, Debug)]
68pub enum ContextError {
69 #[error("context is closed")]
71 Closed,
72
73 #[error("failed to create context: {0}")]
75 CreateFailed(String),
76
77 #[error("CDP error: {0}")]
79 Cdp(#[from] viewpoint_cdp::CdpError),
80}
81
82#[derive(Error, Debug)]
84pub enum PageError {
85 #[error("page is closed")]
87 Closed,
88
89 #[error("failed to create page: {0}")]
91 CreateFailed(String),
92
93 #[error("evaluation failed: {0}")]
95 EvaluationFailed(String),
96
97 #[error("CDP error: {0}")]
99 Cdp(#[from] viewpoint_cdp::CdpError),
100}
101
102#[derive(Error, Debug)]
104pub enum WaitError {
105 #[error("timeout after {0:?}")]
107 Timeout(Duration),
108
109 #[error("wait cancelled")]
111 Cancelled,
112
113 #[error("page closed during wait")]
115 PageClosed,
116}
117
118#[derive(Error, Debug)]
120pub enum NavigationError {
121 #[error("navigation timeout after {0:?}")]
123 Timeout(Duration),
124
125 #[error("network error: {0}")]
127 NetworkError(String),
128
129 #[error("SSL error: {0}")]
131 SslError(String),
132
133 #[error("navigation cancelled")]
135 Cancelled,
136
137 #[error("CDP error: {0}")]
139 Cdp(#[from] viewpoint_cdp::CdpError),
140
141 #[error("wait error: {0}")]
143 Wait(#[from] WaitError),
144}
145
146#[derive(Error, Debug)]
148pub enum LocatorError {
149 #[error("element not found: {0}")]
151 NotFound(String),
152
153 #[error("strict mode violation: {0} elements found, expected 1")]
155 StrictModeViolation(usize),
156
157 #[error("element is not visible")]
159 NotVisible,
160
161 #[error("element is not enabled")]
163 NotEnabled,
164
165 #[error("element is not editable")]
167 NotEditable,
168
169 #[error("timeout after {0:?}")]
171 Timeout(Duration),
172
173 #[error("evaluation error: {0}")]
175 EvaluationError(String),
176
177 #[error("CDP error: {0}")]
179 Cdp(#[from] viewpoint_cdp::CdpError),
180
181 #[error("page is closed")]
183 PageClosed,
184}