@@ -74,6 +74,7 @@ def __init__(self, *args, **kwargs):
74
74
self .env = None # Add a shortened version of self.environment
75
75
self .__last_url_of_delayed_assert = "data:,"
76
76
self .__last_page_load_url = "data:,"
77
+ self .__last_page_screenshot = None
77
78
self .__delayed_assert_count = 0
78
79
self .__delayed_assert_failures = []
79
80
# Requires self._* instead of self.__* for external class use
@@ -3154,6 +3155,14 @@ def setUp(self, masterqa_mode=False):
3154
3155
disable_csp = self .disable_csp )
3155
3156
self ._default_driver = self .driver
3156
3157
3158
+ def __set_last_page_screenshot (self ):
3159
+ if not self .__last_page_screenshot :
3160
+ try :
3161
+ element = self .driver .find_element_by_tag_name ('body' )
3162
+ self .__last_page_screenshot = element .screenshot_as_base64
3163
+ except Exception :
3164
+ pass
3165
+
3157
3166
def __insert_test_result (self , state , err ):
3158
3167
data_payload = TestcaseDataPayload ()
3159
3168
data_payload .runtime = int (time .time () * 1000 ) - self .case_start_time
@@ -3273,7 +3282,12 @@ def tearDown(self):
3273
3282
os .makedirs (test_logpath )
3274
3283
except Exception :
3275
3284
pass # Only reachable during multi-threaded runs
3276
- log_helper .log_screenshot (test_logpath , self .driver )
3285
+ if not self .__last_page_screenshot :
3286
+ self .__set_last_page_screenshot ()
3287
+ log_helper .log_screenshot (
3288
+ test_logpath ,
3289
+ self .driver ,
3290
+ self .__last_page_screenshot )
3277
3291
self .__add_pytest_html_extra ()
3278
3292
if self .with_testing_base and has_exception :
3279
3293
test_logpath = self .log_path + "/" + test_id
@@ -3286,14 +3300,23 @@ def tearDown(self):
3286
3300
not self .with_basic_test_info ) and (
3287
3301
not self .with_page_source )):
3288
3302
# Log everything if nothing specified (if testing_base)
3289
- log_helper .log_screenshot (test_logpath , self .driver )
3303
+ if not self .__last_page_screenshot :
3304
+ self .__set_last_page_screenshot ()
3305
+ log_helper .log_screenshot (
3306
+ test_logpath ,
3307
+ self .driver ,
3308
+ self .__last_page_screenshot )
3290
3309
log_helper .log_test_failure_data (
3291
3310
self , test_logpath , self .driver , self .browser )
3292
3311
log_helper .log_page_source (test_logpath , self .driver )
3293
3312
else :
3294
3313
if self .with_screen_shots :
3314
+ if not self .__last_page_screenshot :
3315
+ self .__set_last_page_screenshot ()
3295
3316
log_helper .log_screenshot (
3296
- test_logpath , self .driver )
3317
+ test_logpath ,
3318
+ self .driver ,
3319
+ self .__last_page_screenshot )
3297
3320
if self .with_basic_test_info :
3298
3321
log_helper .log_test_failure_data (
3299
3322
self , test_logpath , self .driver , self .browser )
@@ -3354,7 +3377,12 @@ def tearDown(self):
3354
3377
log_helper .log_test_failure_data (
3355
3378
self , test_logpath , self .driver , self .browser )
3356
3379
if len (self ._drivers_list ) > 0 :
3357
- log_helper .log_screenshot (test_logpath , self .driver )
3380
+ if not self .__last_page_screenshot :
3381
+ self .__set_last_page_screenshot ()
3382
+ log_helper .log_screenshot (
3383
+ test_logpath ,
3384
+ self .driver ,
3385
+ self .__last_page_screenshot )
3358
3386
log_helper .log_page_source (test_logpath , self .driver )
3359
3387
elif self .save_screenshot_after_test :
3360
3388
test_id = "%s.%s.%s" % (self .__class__ .__module__ ,
@@ -3366,6 +3394,11 @@ def tearDown(self):
3366
3394
os .makedirs (test_logpath )
3367
3395
except Exception :
3368
3396
pass # Only reachable during multi-threaded runs
3369
- log_helper .log_screenshot (test_logpath , self .driver )
3397
+ if not self .__last_page_screenshot :
3398
+ self .__set_last_page_screenshot ()
3399
+ log_helper .log_screenshot (
3400
+ test_logpath ,
3401
+ self .driver ,
3402
+ self .__last_page_screenshot )
3370
3403
# Finally close all open browser windows
3371
3404
self .__quit_all_drivers ()
0 commit comments