2525from applitools .common .utils import ABC , argument_guard , general_utils
2626from applitools .common .visual_grid import RenderingInfo
2727from applitools .core .capture import AppOutputProvider , AppOutputWithScreenshot
28- from applitools .core .cut import NullCutProvider
28+ from applitools .core .cut import (
29+ NullCutProvider ,
30+ FixedCutProvider ,
31+ UnscaledFixedCutProvider ,
32+ )
2933from applitools .core .debug import (
3034 FileDebugScreenshotProvider ,
3135 NullDebugScreenshotProvider ,
4044 from applitools .common .utils .custom_types import ViewPort , UserInputs , Num
4145 from applitools .core .fluent .check_settings import CheckSettings
4246 from applitools .common .capture import EyesScreenshot
43- from typing import Optional , Text
47+ from typing import Optional , Text , Union
4448
4549__all__ = ("EyesBase" ,)
4650
@@ -172,8 +176,17 @@ def debug_screenshot_provider(self):
172176
173177 @property
174178 def cut_provider (self ):
179+ # type: () -> Union[FixedCutProvider, UnscaledFixedCutProvider, NullCutProvider]
175180 return self ._cut_provider
176181
182+ @cut_provider .setter
183+ def cut_provider (self , provider ):
184+ # type: (Union[FixedCutProvider, UnscaledFixedCutProvider, NullCutProvider]) -> None
185+ argument_guard .is_in (
186+ provider , [FixedCutProvider , UnscaledFixedCutProvider , NullCutProvider ]
187+ )
188+ self ._cut_provider = provider
189+
177190 @property
178191 def is_debug_screenshot_provided (self ):
179192 # type: () -> bool
@@ -182,6 +195,7 @@ def is_debug_screenshot_provided(self):
182195
183196 @is_debug_screenshot_provided .setter
184197 def is_debug_screenshot_provided (self , save ):
198+ # type: (bool) -> None
185199 prev = self ._debug_screenshot_provider
186200 if save :
187201 self ._debug_screenshot_provider = FileDebugScreenshotProvider (
@@ -293,7 +307,7 @@ def close(self, raise_ex=True):
293307 try :
294308 logger .debug ("close({})" .format (raise_ex ))
295309 if not self ._is_opened :
296- raise ValueError ("Eyes not open" )
310+ raise EyesError ("Eyes not open" )
297311
298312 self ._is_opened = False
299313
@@ -325,7 +339,7 @@ def close(self, raise_ex=True):
325339 if results .is_new :
326340 instructions = "Please approve the new baseline at " + results_url
327341 logger .info ("--- New test ended. " + instructions )
328- if raise_ex :
342+ if raise_ex or self . configuration . fail_on_new_test :
329343 message = "'%s' of '%s'. %s" % (
330344 self ._session_start_info .scenario_id_or_name ,
331345 self ._session_start_info .app_id_or_name ,
@@ -369,19 +383,19 @@ def close(self, raise_ex=True):
369383 self ._running_session = None
370384 logger .close ()
371385
372- def abort_if_not_closed (self ):
386+ def abort (self ):
373387 # type: () -> None
374388 """
375389 If a test is running, aborts it. Otherwise, does nothing.
376390 """
377391 if self .configuration .is_disabled :
378- logger .debug ("abort_if_not_closed (): ignored (disabled)" )
392+ logger .debug ("abort (): ignored (disabled)" )
379393 return
380394 try :
381395 self ._reset_last_screenshot ()
382396
383397 if self ._running_session :
384- logger .debug ("abort_if_not_closed (): Aborting session..." )
398+ logger .debug ("abort (): Aborting session..." )
385399 try :
386400 self ._server_connector .stop_session (
387401 self ._running_session , True , False
@@ -395,6 +409,10 @@ def abort_if_not_closed(self):
395409 finally :
396410 logger .close ()
397411
412+ def abort_if_not_closed (self ):
413+ logger .deprecation ("Use `abort()` instead" )
414+ self .abort ()
415+
398416 def open_base (
399417 self ,
400418 app_name , # type: Text
@@ -474,7 +492,6 @@ def _open_base(self):
474492 retry = 0
475493 while retry < self .MAX_ITERATION :
476494 try :
477- self ._validate_api_key ()
478495 self ._validate_session_open ()
479496 self ._init_providers ()
480497
@@ -501,7 +518,7 @@ def _open_base(self):
501518
502519 def _validate_session_open (self ):
503520 if self .is_opened :
504- self .abort_if_not_closed ()
521+ self .abort ()
505522 raise EyesError ("A test is already running" )
506523
507524 def _log_open_base (self ):
@@ -519,13 +536,6 @@ def _log_open_base(self):
519536 "FailureReports = '{}' " .format (self .configuration .failure_reports )
520537 )
521538
522- def _validate_api_key (self ):
523- if self .configuration .api_key is None :
524- raise EyesError (
525- "API key not set! Log in to https://applitools.com to obtain your"
526- " API Key and use 'api_key' to set it."
527- )
528-
529539 def _create_session_start_info (self ):
530540 # type: () -> None
531541 self ._session_start_info = SessionStartInfo (
0 commit comments