@@ -28,7 +28,7 @@ class Response
28
28
attr_reader :code , :payload
29
29
30
30
def initialize ( code , payload = nil )
31
- @code = code
31
+ @code = code
32
32
@payload = payload || { }
33
33
34
34
assert_ok
@@ -37,11 +37,8 @@ def initialize(code, payload = nil)
37
37
def error
38
38
error , message , backtrace = process_error
39
39
klass = Error . for_error ( error ) || return
40
-
41
40
ex = klass . new ( message )
42
- ex . set_backtrace ( caller )
43
- add_backtrace ex , backtrace
44
-
41
+ add_cause ( ex , error , backtrace )
45
42
ex
46
43
end
47
44
@@ -59,34 +56,12 @@ def assert_ok
59
56
raise Error ::ServerError , self
60
57
end
61
58
62
- def add_backtrace ( ex , server_trace )
63
- return unless server_trace
64
-
65
- backtrace = case server_trace
66
- when Array
67
- backtrace_from_remote ( server_trace )
68
- when String
69
- server_trace . split ( "\n " )
70
- end
71
-
72
- ex . set_backtrace ( backtrace + ex . backtrace )
73
- end
74
-
75
- def backtrace_from_remote ( server_trace )
76
- server_trace . filter_map do |frame |
77
- next unless frame . is_a? ( Hash )
78
-
79
- file = frame [ 'fileName' ]
80
- line = frame [ 'lineNumber' ]
81
- meth = frame [ 'methodName' ]
82
-
83
- class_name = frame [ 'className' ]
84
- file = "#{ class_name } (#{ file } )" if class_name
85
-
86
- meth = 'unknown' if meth . nil? || meth . empty?
87
-
88
- "[remote server] #{ file } :#{ line } :in `#{ meth } '"
89
- end
59
+ def add_cause ( ex , error , backtrace )
60
+ cause = Error ::WebDriverError . new
61
+ cause . set_backtrace ( backtrace )
62
+ raise ex , cause : cause
63
+ rescue Error . for_error ( error )
64
+ ex
90
65
end
91
66
92
67
def process_error
0 commit comments