viewpoint_core/error/
mod.rs1use 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 #[error("network error: {0}")]
39 Network(#[from] NetworkError),
40}
41
42#[derive(Error, Debug)]
44pub enum BrowserError {
45 #[error("Chromium not found. Set CHROMIUM_PATH environment variable or install Chromium.")]
47 ChromiumNotFound,
48
49 #[error("failed to launch browser: {0}")]
51 LaunchFailed(String),
52
53 #[error("browser launch timeout after {0:?}")]
55 LaunchTimeout(Duration),
56
57 #[error("failed to connect to browser: {0}")]
59 ConnectionFailed(String),
60
61 #[error("browser is closed")]
63 Closed,
64
65 #[error("context error: {0}")]
67 Context(#[from] ContextError),
68
69 #[error("CDP error: {0}")]
71 Cdp(#[from] viewpoint_cdp::CdpError),
72}
73
74#[derive(Error, Debug)]
76pub enum ContextError {
77 #[error("context is closed")]
79 Closed,
80
81 #[error("failed to create context: {0}")]
83 CreateFailed(String),
84
85 #[error("internal error: {0}")]
87 Internal(String),
88
89 #[error("{operation} timed out after {duration:?}")]
91 Timeout {
92 operation: String,
94 duration: Duration,
96 },
97
98 #[error("CDP error: {0}")]
100 Cdp(#[from] viewpoint_cdp::CdpError),
101}
102
103#[derive(Error, Debug)]
105pub enum PageError {
106 #[error("page is closed")]
108 Closed,
109
110 #[error("failed to create page: {0}")]
112 CreateFailed(String),
113
114 #[error("evaluation failed: {0}")]
116 EvaluationFailed(String),
117
118 #[error("CDP error: {0}")]
120 Cdp(#[from] viewpoint_cdp::CdpError),
121}
122
123#[derive(Error, Debug)]
125pub enum WaitError {
126 #[error("timeout after {0:?}")]
128 Timeout(Duration),
129
130 #[error("wait cancelled")]
132 Cancelled,
133
134 #[error("page closed during wait")]
136 PageClosed,
137}
138
139#[derive(Error, Debug)]
141pub enum NavigationError {
142 #[error("navigation timeout after {0:?}")]
144 Timeout(Duration),
145
146 #[error("network error: {0}")]
148 NetworkError(String),
149
150 #[error("SSL error: {0}")]
152 SslError(String),
153
154 #[error("navigation cancelled")]
156 Cancelled,
157
158 #[error("CDP error: {0}")]
160 Cdp(#[from] viewpoint_cdp::CdpError),
161
162 #[error("wait error: {0}")]
164 Wait(#[from] WaitError),
165}
166
167#[derive(Error, Debug)]
169pub enum LocatorError {
170 #[error("element not found: {0}")]
172 NotFound(String),
173
174 #[error("strict mode violation: {0} elements found, expected 1")]
176 StrictModeViolation(usize),
177
178 #[error("element is not visible")]
180 NotVisible,
181
182 #[error("element is not enabled")]
184 NotEnabled,
185
186 #[error("element is not editable")]
188 NotEditable,
189
190 #[error("timeout after {0:?}")]
192 Timeout(Duration),
193
194 #[error("evaluation error: {0}")]
196 EvaluationError(String),
197
198 #[error("CDP error: {0}")]
200 Cdp(#[from] viewpoint_cdp::CdpError),
201
202 #[error("page is closed")]
204 PageClosed,
205
206 #[error("touch not enabled: call page.enable_touch() or set hasTouch: true in browser context options before using touch actions")]
208 TouchNotEnabled,
209}
210
211#[derive(Error, Debug)]
213pub enum NetworkError {
214 #[error("route has already been handled")]
216 AlreadyHandled,
217
218 #[error("invalid response: {0}")]
220 InvalidResponse(String),
221
222 #[error("request aborted")]
224 Aborted,
225
226 #[error("request timeout after {0:?}")]
228 Timeout(Duration),
229
230 #[error("no matching request/response found")]
232 NotFound,
233
234 #[error("IO error: {0}")]
236 IoError(String),
237
238 #[error("HAR error: {0}")]
240 HarError(String),
241
242 #[error("CDP error: {0}")]
244 Cdp(#[from] viewpoint_cdp::CdpError),
245}