Skip to content

Commit

Permalink
cleaning the video recording after test pass
Browse files Browse the repository at this point in the history
  • Loading branch information
omkarkhatavkar committed Sep 28, 2023
1 parent 15b50fb commit 2d24749
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 4 deletions.
4 changes: 2 additions & 2 deletions airgun/browser.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,9 @@ def get_browser(self):
:raises: ValueError: If wrong ``provider`` or ``browser`` specified.
"""
if self.provider == 'selenium':
return self._get_selenium_browser()
return self._get_selenium_browser(), None
elif self.provider == 'remote':
return self._get_remote_browser()
return self._get_remote_browser(), self.web_kaifuku.webdriver_options.command_executor
else:
raise ValueError(
f'"{self.provider}" browser is not supported. '
Expand Down
22 changes: 20 additions & 2 deletions airgun/session.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import logging
import os
import sys
from urllib.parse import urlparse

from cached_property import cached_property
from fauxfactory import gen_string
Expand Down Expand Up @@ -83,6 +84,7 @@
from airgun.entities.virtwho_configure import VirtwhoConfigureEntity
from airgun.entities.webhook import WebhookEntity
from airgun.navigation import Navigate, navigator
from broker.hosts import Host

LOGGER = logging.getLogger(__name__)

Expand Down Expand Up @@ -193,6 +195,8 @@ def __init__(
self._login = login
self.navigator = None
self.browser = None
self.__session_id = None
self.__grid_url = None

def __call__(self, user=None, password=None, session_cookie=None, url=None, login=None):
"""Stores provided values. This allows tests to provide additional
Expand Down Expand Up @@ -234,6 +238,8 @@ def __exit__(self, exc_type, exc_value, traceback):
try:
if not passed:
self.take_screenshot()
else:
self.__clean_video()
except Exception as err: # noqa: BLE001 - TODO: fix bare except
LOGGER.exception(err)
finally:
Expand Down Expand Up @@ -269,11 +275,12 @@ def _prepare_browser(self, url):
test_name=self.name, session_cookie=self._session_cookie, hostname=self._hostname
)
try:
selenium_browser = self._factory.get_browser()
selenium_browser, grid_url = self._factory.get_browser()
self.browser = AirgunBrowser(selenium_browser, self)
LOGGER.info(f'Session Id For {self.name}: {selenium_browser.session_id}')
LOGGER.info(f'Setting initial URL to {url}')

self.__session_id = selenium_browser.session_id
self.__grid_url = grid_url
self.browser.url = url

self._factory.post_init()
Expand Down Expand Up @@ -315,6 +322,17 @@ def take_screenshot(self):
if not self.browser.selenium.save_screenshot(path):
LOGGER.error('Failed to save screenshot %s', path)

def __clean_video(self):
LOGGER.info("Cleaning up video files for session: %s", self.__session_id)

if self.__grid_url and self.__session_id:
grid = urlparse(url=self.__grid_url)
infra_grid = Host(hostname=grid.hostname)
infra_grid.execute(command=f'rm -rf /var/www/html/videos/{self.__session_id}')
LOGGER.info("Video cleanup for session %s is complete", self.__session_id)
else:
LOGGER.warning("Missing grid_url or session_id. Unable to clean video files.")

@cached_property
def acs(self):
"""Instance of Alternate Content Sources entity."""
Expand Down
1 change: 1 addition & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
'widgetastic.core',
'widgetastic.patternfly',
'widgetastic.patternfly4',
'broker[docker]',
],
packages=find_packages(exclude=['tests*']),
package_data={'': ['LICENSE']},
Expand Down

0 comments on commit 2d24749

Please sign in to comment.