@@ -326,7 +326,11 @@ def container_test(self, tag: str) -> None:
326
326
return
327
327
328
328
# 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
330
334
331
335
self ._endtest (container , tag , build_info , sbom , True , start_time )
332
336
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
723
727
"message" :message ,
724
728
"runtime" : runtime }.items ())))
725
729
726
- def take_screenshot (self , container : Container , tag :str ) -> None :
730
+ def take_screenshot (self , container : Container , tag :str ) -> bool :
727
731
"""Take a screenshot and save it to self.outdir if self.screenshot is True
728
732
729
733
Takes a screenshot using a ChromiumDriver instance.
730
734
731
735
Args:
732
736
container (Container): Container object
733
737
tag (str): The container tag we are testing.
738
+
739
+ Returns:
740
+ bool: Return True if the screenshot was successful, otherwise False.
734
741
"""
735
742
if not self .screenshot :
736
- return
743
+ return True
737
744
proto : Literal ["https" , "http" ] = "https" if self .ssl .upper () == "TRUE" else "http"
738
745
screenshot_timeout = time .time () + self .screenshot_timeout
739
746
test = "Get screenshot"
@@ -757,7 +764,7 @@ def take_screenshot(self, container: Container, tag:str) -> None:
757
764
raise FileNotFoundError (f"Screenshot '{ self .outdir } /{ tag } .png' not found" )
758
765
self ._add_test_result (tag , test , "PASS" , "-" , start_time )
759
766
self .logger .success ("Screenshot %s: PASSED after %.2f seconds" , tag , time .time () - start_time )
760
- return
767
+ return True
761
768
except Exception as error :
762
769
logger .debug ("Failed to take screenshot of %s at %s, trying again in 3 seconds" , tag , endpoint , exc_info = error )
763
770
time .sleep (3 )
@@ -768,12 +775,18 @@ def take_screenshot(self, container: Container, tag:str) -> None:
768
775
except (requests .Timeout , requests .ConnectionError , KeyError ) as error :
769
776
self ._add_test_result (tag , test , "FAIL" , f"CONNECTION ERROR: { str (error )} " , start_time )
770
777
self .logger .exception ("Screenshot %s FAIL CONNECTION ERROR" , tag )
778
+ self .report_status = "FAIL"
779
+ return False
771
780
except TimeoutException as error :
772
781
self ._add_test_result (tag , test , "FAIL" , f"TIMEOUT: { str (error )} " , start_time )
773
782
self .logger .exception ("Screenshot %s FAIL TIMEOUT" , tag )
783
+ self .report_status = "FAIL"
784
+ return False
774
785
except (WebDriverException , Exception ) as error :
775
786
self ._add_test_result (tag , test , "FAIL" , f"UNKNOWN: { str (error )} " , start_time )
776
787
self .logger .exception ("Screenshot %s FAIL UNKNOWN" , tag )
788
+ self .report_status = "FAIL"
789
+ return False
777
790
finally :
778
791
try :
779
792
driver .quit ()
0 commit comments