Skip to content

Commit ecfa9e1

Browse files
authored
Merge pull request #190 from hmdne/capture-stacktrace
Capture error stacktraces
2 parents 4fee08a + fbc74b7 commit ecfa9e1

File tree

3 files changed

+8
-4
lines changed

3 files changed

+8
-4
lines changed

lib/ferrum.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,10 +103,11 @@ def initialize(response = nil)
103103
end
104104

105105
class JavaScriptError < BrowserError
106-
attr_reader :class_name, :message
106+
attr_reader :class_name, :message, :stack_trace
107107

108-
def initialize(response)
108+
def initialize(response, stack_trace = nil)
109109
@class_name, @message = response.values_at("className", "description")
110+
@stack_trace = stack_trace
110111
super(response.merge("message" => @message))
111112
end
112113
end

lib/ferrum/frame/runtime.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ def handle_error(response)
154154
when /\AError: timed out promise/
155155
raise ScriptTimeoutError
156156
else
157-
raise JavaScriptError.new(result)
157+
raise JavaScriptError.new(result, response.dig("exceptionDetails", "stackTrace"))
158158
end
159159
end
160160

lib/ferrum/page.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,10 @@ def subscribe
221221
if @browser.js_errors
222222
on("Runtime.exceptionThrown") do |params|
223223
# FIXME https://jvns.ca/blog/2015/11/27/why-rubys-timeout-is-dangerous-and-thread-dot-raise-is-terrifying/
224-
Thread.main.raise JavaScriptError.new(params.dig("exceptionDetails", "exception"))
224+
Thread.main.raise JavaScriptError.new(
225+
params.dig("exceptionDetails", "exception"),
226+
params.dig("exceptionDetails", "stackTrace")
227+
)
225228
end
226229
end
227230

0 commit comments

Comments
 (0)