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("connection timeout after {0:?}")]
63 ConnectionTimeout(Duration),
64
65 #[error("invalid endpoint URL: {0}")]
67 InvalidEndpointUrl(String),
68
69 #[error("endpoint discovery failed: {0}")]
71 EndpointDiscoveryFailed(String),
72
73 #[error("browser is closed")]
75 Closed,
76
77 #[error("context error: {0}")]
79 Context(#[from] ContextError),
80
81 #[error("CDP error: {0}")]
83 Cdp(#[from] viewpoint_cdp::CdpError),
84}
85
86#[derive(Error, Debug)]
88pub enum ContextError {
89 #[error("context is closed")]
91 Closed,
92
93 #[error("failed to create context: {0}")]
95 CreateFailed(String),
96
97 #[error("internal error: {0}")]
99 Internal(String),
100
101 #[error("{operation} timed out after {duration:?}")]
103 Timeout {
104 operation: String,
106 duration: Duration,
108 },
109
110 #[error("CDP error: {0}")]
112 Cdp(#[from] viewpoint_cdp::CdpError),
113}
114
115#[derive(Error, Debug)]
117pub enum PageError {
118 #[error("page is closed")]
120 Closed,
121
122 #[error("failed to create page: {0}")]
124 CreateFailed(String),
125
126 #[error("evaluation failed: {0}")]
128 EvaluationFailed(String),
129
130 #[error("CDP error: {0}")]
132 Cdp(#[from] viewpoint_cdp::CdpError),
133}
134
135#[derive(Error, Debug)]
137pub enum WaitError {
138 #[error("timeout after {0:?}")]
140 Timeout(Duration),
141
142 #[error("wait cancelled")]
144 Cancelled,
145
146 #[error("page closed during wait")]
148 PageClosed,
149}
150
151#[derive(Error, Debug)]
153pub enum NavigationError {
154 #[error("navigation timeout after {0:?}")]
156 Timeout(Duration),
157
158 #[error("network error: {0}")]
160 NetworkError(String),
161
162 #[error("SSL error: {0}")]
164 SslError(String),
165
166 #[error("navigation cancelled")]
168 Cancelled,
169
170 #[error("CDP error: {0}")]
172 Cdp(#[from] viewpoint_cdp::CdpError),
173
174 #[error("wait error: {0}")]
176 Wait(#[from] WaitError),
177}
178
179#[derive(Error, Debug)]
181pub enum LocatorError {
182 #[error("element not found: {0}")]
184 NotFound(String),
185
186 #[error("strict mode violation: {0} elements found, expected 1")]
188 StrictModeViolation(usize),
189
190 #[error("element is not visible")]
192 NotVisible,
193
194 #[error("element is not enabled")]
196 NotEnabled,
197
198 #[error("element is not editable")]
200 NotEditable,
201
202 #[error("timeout after {0:?}")]
204 Timeout(Duration),
205
206 #[error("evaluation error: {0}")]
208 EvaluationError(String),
209
210 #[error("CDP error: {0}")]
212 Cdp(#[from] viewpoint_cdp::CdpError),
213
214 #[error("page is closed")]
216 PageClosed,
217
218 #[error(
220 "touch not enabled: call page.enable_touch() or set hasTouch: true in browser context options before using touch actions"
221 )]
222 TouchNotEnabled,
223}
224
225#[derive(Error, Debug)]
227pub enum NetworkError {
228 #[error("route has already been handled")]
230 AlreadyHandled,
231
232 #[error("invalid response: {0}")]
234 InvalidResponse(String),
235
236 #[error("request aborted")]
238 Aborted,
239
240 #[error("request timeout after {0:?}")]
242 Timeout(Duration),
243
244 #[error("no matching request/response found")]
246 NotFound,
247
248 #[error("IO error: {0}")]
250 IoError(String),
251
252 #[error("HAR error: {0}")]
254 HarError(String),
255
256 #[error("CDP error: {0}")]
258 Cdp(#[from] viewpoint_cdp::CdpError),
259}