@@ -74,6 +74,7 @@ def __init__(self, *args, **kwargs):
7474 self .env = None # Add a shortened version of self.environment
7575 self .__last_url_of_delayed_assert = "data:,"
7676 self .__last_page_load_url = "data:,"
77+ self .__last_page_screenshot = None
7778 self .__delayed_assert_count = 0
7879 self .__delayed_assert_failures = []
7980 # Requires self._* instead of self.__* for external class use
@@ -3154,6 +3155,14 @@ def setUp(self, masterqa_mode=False):
31543155 disable_csp = self .disable_csp )
31553156 self ._default_driver = self .driver
31563157
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+
31573166 def __insert_test_result (self , state , err ):
31583167 data_payload = TestcaseDataPayload ()
31593168 data_payload .runtime = int (time .time () * 1000 ) - self .case_start_time
@@ -3273,7 +3282,12 @@ def tearDown(self):
32733282 os .makedirs (test_logpath )
32743283 except Exception :
32753284 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 )
32773291 self .__add_pytest_html_extra ()
32783292 if self .with_testing_base and has_exception :
32793293 test_logpath = self .log_path + "/" + test_id
@@ -3286,14 +3300,23 @@ def tearDown(self):
32863300 not self .with_basic_test_info ) and (
32873301 not self .with_page_source )):
32883302 # 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 )
32903309 log_helper .log_test_failure_data (
32913310 self , test_logpath , self .driver , self .browser )
32923311 log_helper .log_page_source (test_logpath , self .driver )
32933312 else :
32943313 if self .with_screen_shots :
3314+ if not self .__last_page_screenshot :
3315+ self .__set_last_page_screenshot ()
32953316 log_helper .log_screenshot (
3296- test_logpath , self .driver )
3317+ test_logpath ,
3318+ self .driver ,
3319+ self .__last_page_screenshot )
32973320 if self .with_basic_test_info :
32983321 log_helper .log_test_failure_data (
32993322 self , test_logpath , self .driver , self .browser )
@@ -3354,7 +3377,12 @@ def tearDown(self):
33543377 log_helper .log_test_failure_data (
33553378 self , test_logpath , self .driver , self .browser )
33563379 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 )
33583386 log_helper .log_page_source (test_logpath , self .driver )
33593387 elif self .save_screenshot_after_test :
33603388 test_id = "%s.%s.%s" % (self .__class__ .__module__ ,
@@ -3366,6 +3394,11 @@ def tearDown(self):
33663394 os .makedirs (test_logpath )
33673395 except Exception :
33683396 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 )
33703403 # Finally close all open browser windows
33713404 self .__quit_all_drivers ()
0 commit comments