def setUp(self): self._configure_log() if not os.environ.get('INTEGRATION_TESTS', False): msg = "The INTEGRATION_TESTS env variable is not set." raise self.skipException(msg) # Start a virtual display server for running the tests headless. if os.environ.get('SELENIUM_HEADLESS', False): self.vdisplay = xvfbwrapper.Xvfb(width=1920, height=1080) args = [] # workaround for memory leak in Xvfb taken from: # http://blog.jeffterrace.com/2012/07/xvfb-memory-leak-workaround.html args.append("-noreset") # disables X access control args.append("-ac") if hasattr(self.vdisplay, 'extra_xvfb_args'): # xvfbwrapper 0.2.8 or newer self.vdisplay.extra_xvfb_args.extend(args) else: self.vdisplay.xvfb_cmd.extend(args) self.vdisplay.start() self.addCleanup(self.vdisplay.stop) # Increase the default Python socket timeout from nothing # to something that will cope with slow webdriver startup times. # This *just* affects the communication between this test process # and the webdriver. socket.setdefaulttimeout(60) # Start the Selenium webdriver and setup configuration. desired_capabilities = dict(webdriver.desired_capabilities) desired_capabilities['loggingPrefs'] = {'browser': 'ALL'} self.driver = webdriver.WebDriverWrapper( desired_capabilities=desired_capabilities) if self.CONFIG.selenium.maximize_browser: self.driver.maximize_window() self.driver.implicitly_wait(self.CONFIG.selenium.implicit_wait) self.driver.set_page_load_timeout(self.CONFIG.selenium.page_timeout) self.addCleanup(self.driver.quit) self.addOnException(self._attach_page_source) self.addOnException(self._attach_screenshot) self.addOnException(self._attach_browser_log) self.addOnException(self._attach_test_log) super(BaseTestCase, self).setUp()
def setUp(self): self._configure_log() self.addOnException( lambda exc_info: setattr(self, '_need_attach_test_log', True)) def cleanup(): if getattr(self, '_need_attach_test_log', None): self._attach_test_log() self.addCleanup(cleanup) width, height = SCREEN_SIZE display = '0.0' # Start a virtual display server for running the tests headless. if IS_SELENIUM_HEADLESS: width, height = 1920, 1080 self.vdisplay = xvfbwrapper.Xvfb(width=width, height=height) args = [] # workaround for memory leak in Xvfb taken from: # http://blog.jeffterrace.com/2012/07/xvfb-memory-leak-workaround.html args.append("-noreset") # disables X access control args.append("-ac") if hasattr(self.vdisplay, 'extra_xvfb_args'): # xvfbwrapper 0.2.8 or newer self.vdisplay.extra_xvfb_args.extend(args) else: self.vdisplay.xvfb_cmd.extend(args) self.vdisplay.start() display = self.vdisplay.new_display self.addCleanup(self.vdisplay.stop) self.video_recorder = VideoRecorder(width, height, display=display) self.video_recorder.start() self.addOnException( lambda exc_info: setattr(self, '_need_attach_video', True)) def cleanup(): self.video_recorder.stop() if getattr(self, '_need_attach_video', None): self._attach_video() else: self.video_recorder.clear() self.addCleanup(cleanup) # Increase the default Python socket timeout from nothing # to something that will cope with slow webdriver startup times. # This *just* affects the communication between this test process # and the webdriver. socket.setdefaulttimeout(60) # Start the Selenium webdriver and setup configuration. desired_capabilities = dict(webdriver.desired_capabilities) desired_capabilities['loggingPrefs'] = {'browser': 'ALL'} self.driver = webdriver.WebDriverWrapper( desired_capabilities=desired_capabilities) if self.CONFIG.selenium.maximize_browser: self.driver.maximize_window() if IS_SELENIUM_HEADLESS: # force full screen in xvfb self.driver.set_window_size(width, height) self.driver.implicitly_wait(self.CONFIG.selenium.implicit_wait) self.driver.set_page_load_timeout(self.CONFIG.selenium.page_timeout) self.addOnException(self._attach_page_source) self.addOnException(self._attach_screenshot) self.addOnException( lambda exc_info: setattr(self, '_need_attach_browser_log', True)) def cleanup(): if getattr(self, '_need_attach_browser_log', None): self._attach_browser_log() self.driver.quit() self.addCleanup(cleanup) super(BaseTestCase, self).setUp()