File tree Expand file tree Collapse file tree 3 files changed +32
-0
lines changed 
lib/selenium/webdriver/remote 
sig/lib/selenium/webdriver/remote 
spec/integration/selenium/webdriver Expand file tree Collapse file tree 3 files changed +32
-0
lines changed Original file line number Diff line number Diff line change @@ -58,12 +58,30 @@ def assert_ok
5858
5959        def  add_cause ( ex ,  error ,  backtrace ) 
6060          cause  =  Error ::WebDriverError . new 
61+           backtrace  =  backtrace_from_remote ( backtrace )  if  backtrace . is_a? ( Array ) 
6162          cause . set_backtrace ( backtrace ) 
6263          raise  ex ,  cause : cause 
6364        rescue  Error . for_error ( error ) 
6465          ex 
6566        end 
6667
68+         def  backtrace_from_remote ( server_trace ) 
69+           server_trace . filter_map  do  |frame |
70+             next  unless  frame . is_a? ( Hash ) 
71+ 
72+             file  =  frame [ 'fileName' ] 
73+             line  =  frame [ 'lineNumber' ] 
74+             method  =  frame [ 'methodName' ] 
75+ 
76+             class_name  =  frame [ 'className' ] 
77+             file  =  "#{ class_name } #{ file }   if  class_name 
78+ 
79+             method  =  'unknown'  if  method . nil?  || method . empty? 
80+ 
81+             "[remote server] #{ file } #{ line } #{ method }  
82+           end 
83+         end 
84+ 
6785        def  process_error 
6886          return  unless  self [ 'value' ] . is_a? ( Hash ) 
6987
Original file line number Diff line number Diff line change @@ -22,6 +22,8 @@ module Selenium
2222
2323        def  add_cause 
2424
25+         def  backtrace_from_remote 
26+ 
2527        def  process_error untyped , untyped ]]
2628      end 
2729    end 
Original file line number Diff line number Diff line change @@ -47,6 +47,18 @@ module WebDriver
4747      rescue  WebDriver ::Error ::NoSuchElementError  =>  e 
4848        expect ( e . backtrace ) . not_to  be_empty 
4949      end 
50+ 
51+       it  'has backtrace when using a remote server' ,  only : { driver : :remote , 
52+                                                             reason : 'This test should only apply to remote drivers' }  do 
53+         unless  driver . is_a? ( WebDriver ::Remote ::Driver ) 
54+           raise  'This error needs to be risen for the pending test not to fail on local drivers' 
55+         end 
56+ 
57+         driver . send ( :bridge ) . instance_variable_set ( :@session_id ,  'fake_session_id' ) 
58+         driver . window_handle 
59+       rescue  WebDriver ::Error ::InvalidSessionIdError  =>  e 
60+         expect ( e . backtrace ) . not_to  be_empty 
61+       end 
5062    end 
5163  end  # WebDriver 
5264end  # Selenium 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments