@@ -36,11 +36,13 @@ class ExecEnv:
3636 ACCEPT_DIALOGS_ARG = "accept_dialogs"
3737 VERBOSE_ARG = "verbose"
3838 SCREENSHOT_ARG = "screenshot"
39+ SCREENSHOT_PATH_ARG = "screenshot_path"
3940 DELAY_ARG = "delay"
4041 UNATTENDED_ENV = "GUIDATA_UNATTENDED"
4142 ACCEPT_DIALOGS_ENV = "GUIDATA_ACCEPT_DIALOGS"
4243 VERBOSE_ENV = "GUIDATA_VERBOSE"
4344 SCREENSHOT_ENV = "GUIDATA_SCREENSHOT"
45+ SCREENSHOT_PATH_ENV = "GUIDATA_SCREENSHOT_PATH"
4446 DELAY_ENV = "GUIDATA_DELAY"
4547
4648 def __init__ (self ):
@@ -131,6 +133,19 @@ def screenshot(self, value):
131133 """Set screenshot value"""
132134 self .__set_mode (self .SCREENSHOT_ENV , value )
133135
136+ @property
137+ def screenshot_path (self ):
138+ """Get screenshot path"""
139+ return os .environ .get (self .SCREENSHOT_PATH_ENV , "" )
140+
141+ @screenshot_path .setter
142+ def screenshot_path (self , value ):
143+ """Set screenshot path"""
144+ if value :
145+ os .environ [self .SCREENSHOT_PATH_ENV ] = str (value )
146+ elif self .SCREENSHOT_PATH_ENV in os .environ :
147+ os .environ .pop (self .SCREENSHOT_PATH_ENV )
148+
134149 @property
135150 def verbose (self ):
136151 """Get verbosity level"""
@@ -178,6 +193,12 @@ def parse_args(self):
178193 help = "automatic screenshots" ,
179194 default = None ,
180195 )
196+ parser .add_argument (
197+ "--" + self .SCREENSHOT_PATH_ARG ,
198+ type = str ,
199+ help = "path to save screenshots" ,
200+ default = None ,
201+ )
181202 parser .add_argument (
182203 "--" + self .DELAY_ARG ,
183204 type = int ,
@@ -200,6 +221,7 @@ def set_env_from_args(self, args):
200221 self .UNATTENDED_ARG ,
201222 self .ACCEPT_DIALOGS_ARG ,
202223 self .SCREENSHOT_ARG ,
224+ self .SCREENSHOT_PATH_ARG ,
203225 self .VERBOSE_ARG ,
204226 self .DELAY_ARG ,
205227 ):
@@ -252,6 +274,7 @@ def context(
252274 unattended = None ,
253275 accept_dialogs = None ,
254276 screenshot = None ,
277+ screenshot_path = None ,
255278 delay = None ,
256279 verbose = None ,
257280 ) -> Generator [None , None , None ]:
@@ -264,6 +287,7 @@ def context(
264287 unattended: whether to run in unattended mode
265288 accept_dialogs: whether to accept dialogs in unattended mode
266289 screenshot: whether to take screenshots
290+ screenshot_path: path to save screenshots
267291 delay: delay (ms) before quitting application in unattended mode
268292 verbose: verbosity level
269293
@@ -275,6 +299,7 @@ def context(
275299 "unattended" : unattended ,
276300 "accept_dialogs" : accept_dialogs ,
277301 "screenshot" : screenshot ,
302+ "screenshot_path" : screenshot_path ,
278303 "delay" : delay ,
279304 "verbose" : verbose ,
280305 }
0 commit comments