@@ -26,7 +26,6 @@ def test_anything(self):
26
26
import logging
27
27
import math
28
28
import os
29
- import pytest
30
29
import re
31
30
import sys
32
31
import time
@@ -74,6 +73,7 @@ def __init__(self, *args, **kwargs):
74
73
self .env = None # Add a shortened version of self.environment
75
74
self .__last_url_of_delayed_assert = "data:,"
76
75
self .__last_page_load_url = "data:,"
76
+ self .__last_page_screenshot = None
77
77
self .__delayed_assert_count = 0
78
78
self .__delayed_assert_failures = []
79
79
# Requires self._* instead of self.__* for external class use
@@ -3154,6 +3154,14 @@ def setUp(self, masterqa_mode=False):
3154
3154
disable_csp = self .disable_csp )
3155
3155
self ._default_driver = self .driver
3156
3156
3157
+ def __set_last_page_screenshot (self ):
3158
+ if not self .__last_page_screenshot :
3159
+ try :
3160
+ element = self .driver .find_element_by_tag_name ('body' )
3161
+ self .__last_page_screenshot = element .screenshot_as_base64
3162
+ except Exception :
3163
+ pass
3164
+
3157
3165
def __insert_test_result (self , state , err ):
3158
3166
data_payload = TestcaseDataPayload ()
3159
3167
data_payload .runtime = int (time .time () * 1000 ) - self .case_start_time
@@ -3176,13 +3184,21 @@ def __insert_test_result(self, state, err):
3176
3184
3177
3185
def __add_pytest_html_extra (self ):
3178
3186
try :
3179
- pytest_html = pytest .config .pluginmanager .getplugin ('html' )
3180
- if self .with_selenium and pytest_html :
3181
- driver = self .driver
3182
- extra_url = pytest_html .extras .url (driver .current_url )
3183
- screenshot = driver .get_screenshot_as_base64 ()
3184
- extra_image = pytest_html .extras .image (screenshot ,
3185
- name = 'Screenshot' )
3187
+ if self .with_selenium :
3188
+ if not self .__last_page_screenshot :
3189
+ self .__set_last_page_screenshot ()
3190
+ extra_url = {}
3191
+ extra_url ['name' ] = 'URL'
3192
+ extra_url ['format' ] = 'url'
3193
+ extra_url ['content' ] = self .get_current_url ()
3194
+ extra_url ['mime_type' ] = None
3195
+ extra_url ['extension' ] = None
3196
+ extra_image = {}
3197
+ extra_image ['name' ] = 'Screenshot'
3198
+ extra_image ['format' ] = 'image'
3199
+ extra_image ['content' ] = self .__last_page_screenshot
3200
+ extra_image ['mime_type' ] = 'image/png'
3201
+ extra_image ['extension' ] = 'png'
3186
3202
self ._html_report_extra .append (extra_url )
3187
3203
self ._html_report_extra .append (extra_image )
3188
3204
except Exception :
@@ -3273,7 +3289,12 @@ def tearDown(self):
3273
3289
os .makedirs (test_logpath )
3274
3290
except Exception :
3275
3291
pass # Only reachable during multi-threaded runs
3276
- log_helper .log_screenshot (test_logpath , self .driver )
3292
+ if not self .__last_page_screenshot :
3293
+ self .__set_last_page_screenshot ()
3294
+ log_helper .log_screenshot (
3295
+ test_logpath ,
3296
+ self .driver ,
3297
+ self .__last_page_screenshot )
3277
3298
self .__add_pytest_html_extra ()
3278
3299
if self .with_testing_base and has_exception :
3279
3300
test_logpath = self .log_path + "/" + test_id
@@ -3286,14 +3307,23 @@ def tearDown(self):
3286
3307
not self .with_basic_test_info ) and (
3287
3308
not self .with_page_source )):
3288
3309
# Log everything if nothing specified (if testing_base)
3289
- log_helper .log_screenshot (test_logpath , self .driver )
3310
+ if not self .__last_page_screenshot :
3311
+ self .__set_last_page_screenshot ()
3312
+ log_helper .log_screenshot (
3313
+ test_logpath ,
3314
+ self .driver ,
3315
+ self .__last_page_screenshot )
3290
3316
log_helper .log_test_failure_data (
3291
3317
self , test_logpath , self .driver , self .browser )
3292
3318
log_helper .log_page_source (test_logpath , self .driver )
3293
3319
else :
3294
3320
if self .with_screen_shots :
3321
+ if not self .__last_page_screenshot :
3322
+ self .__set_last_page_screenshot ()
3295
3323
log_helper .log_screenshot (
3296
- test_logpath , self .driver )
3324
+ test_logpath ,
3325
+ self .driver ,
3326
+ self .__last_page_screenshot )
3297
3327
if self .with_basic_test_info :
3298
3328
log_helper .log_test_failure_data (
3299
3329
self , test_logpath , self .driver , self .browser )
@@ -3354,7 +3384,12 @@ def tearDown(self):
3354
3384
log_helper .log_test_failure_data (
3355
3385
self , test_logpath , self .driver , self .browser )
3356
3386
if len (self ._drivers_list ) > 0 :
3357
- log_helper .log_screenshot (test_logpath , self .driver )
3387
+ if not self .__last_page_screenshot :
3388
+ self .__set_last_page_screenshot ()
3389
+ log_helper .log_screenshot (
3390
+ test_logpath ,
3391
+ self .driver ,
3392
+ self .__last_page_screenshot )
3358
3393
log_helper .log_page_source (test_logpath , self .driver )
3359
3394
elif self .save_screenshot_after_test :
3360
3395
test_id = "%s.%s.%s" % (self .__class__ .__module__ ,
@@ -3366,6 +3401,11 @@ def tearDown(self):
3366
3401
os .makedirs (test_logpath )
3367
3402
except Exception :
3368
3403
pass # Only reachable during multi-threaded runs
3369
- log_helper .log_screenshot (test_logpath , self .driver )
3404
+ if not self .__last_page_screenshot :
3405
+ self .__set_last_page_screenshot ()
3406
+ log_helper .log_screenshot (
3407
+ test_logpath ,
3408
+ self .driver ,
3409
+ self .__last_page_screenshot )
3370
3410
# Finally close all open browser windows
3371
3411
self .__quit_all_drivers ()
0 commit comments