@@ -326,7 +326,11 @@ def container_test(self, tag: str) -> None:
326326 return
327327
328328 # Screenshot the web interface and check connectivity
329- self .take_screenshot (container , tag )
329+ screenshot : bool = self .take_screenshot (container , tag )
330+ if not screenshot and self .get_platform (tag ) == "amd64" : # Allow ARM tags to fail the screenshot test
331+ self .logger .error ("Test of %s FAILED after %.2f seconds" , tag , time .time () - start_time )
332+ self ._endtest (container , tag , build_info , sbom , False , start_time )
333+ return
330334
331335 self ._endtest (container , tag , build_info , sbom , True , start_time )
332336 self .logger .success ("Test of %s PASSED after %.2f seconds" , tag , time .time () - start_time )
@@ -723,17 +727,20 @@ def _add_test_result(self, tag:str, test:str, status:str, message:str, start_tim
723727 "message" :message ,
724728 "runtime" : runtime }.items ())))
725729
726- def take_screenshot (self , container : Container , tag :str ) -> None :
730+ def take_screenshot (self , container : Container , tag :str ) -> bool :
727731 """Take a screenshot and save it to self.outdir if self.screenshot is True
728732
729733 Takes a screenshot using a ChromiumDriver instance.
730734
731735 Args:
732736 container (Container): Container object
733737 tag (str): The container tag we are testing.
738+
739+ Returns:
740+ bool: Return True if the screenshot was successful, otherwise False.
734741 """
735742 if not self .screenshot :
736- return
743+ return True
737744 proto : Literal ["https" , "http" ] = "https" if self .ssl .upper () == "TRUE" else "http"
738745 screenshot_timeout = time .time () + self .screenshot_timeout
739746 test = "Get screenshot"
@@ -757,7 +764,7 @@ def take_screenshot(self, container: Container, tag:str) -> None:
757764 raise FileNotFoundError (f"Screenshot '{ self .outdir } /{ tag } .png' not found" )
758765 self ._add_test_result (tag , test , "PASS" , "-" , start_time )
759766 self .logger .success ("Screenshot %s: PASSED after %.2f seconds" , tag , time .time () - start_time )
760- return
767+ return True
761768 except Exception as error :
762769 logger .debug ("Failed to take screenshot of %s at %s, trying again in 3 seconds" , tag , endpoint , exc_info = error )
763770 time .sleep (3 )
@@ -768,12 +775,18 @@ def take_screenshot(self, container: Container, tag:str) -> None:
768775 except (requests .Timeout , requests .ConnectionError , KeyError ) as error :
769776 self ._add_test_result (tag , test , "FAIL" , f"CONNECTION ERROR: { str (error )} " , start_time )
770777 self .logger .exception ("Screenshot %s FAIL CONNECTION ERROR" , tag )
778+ self .report_status = "FAIL"
779+ return False
771780 except TimeoutException as error :
772781 self ._add_test_result (tag , test , "FAIL" , f"TIMEOUT: { str (error )} " , start_time )
773782 self .logger .exception ("Screenshot %s FAIL TIMEOUT" , tag )
783+ self .report_status = "FAIL"
784+ return False
774785 except (WebDriverException , Exception ) as error :
775786 self ._add_test_result (tag , test , "FAIL" , f"UNKNOWN: { str (error )} " , start_time )
776787 self .logger .exception ("Screenshot %s FAIL UNKNOWN" , tag )
788+ self .report_status = "FAIL"
789+ return False
777790 finally :
778791 try :
779792 driver .quit ()
0 commit comments