chore: Create screenshot of multiple instances on test fail (#273)

#271
This commit is contained in:
Vladimir Druzhinin 2023-11-07 18:26:07 +01:00 committed by GitHub
parent a5f5fe530b
commit 29b78cc12e
3 changed files with 24 additions and 7 deletions

View File

@ -6,10 +6,8 @@ import pytest
from PIL import ImageGrab
import configs
import driver
from configs.system import IS_LIN
from fixtures.path import generate_test_info
from scripts.utils import local_system
from scripts.utils.system_path import SystemPath
_logger = logging.getLogger(__name__)

View File

@ -2,6 +2,8 @@ import logging
from datetime import datetime
import allure
import cv2
import numpy as np
import squish
from PIL import ImageGrab
@ -10,6 +12,7 @@ import driver
from configs.system import IS_LIN
from driver import context
from driver.server import SquishServer
from gui.objects_map import statusDesktop_mainWindow
from scripts.utils import system_path, local_system
from scripts.utils.system_path import SystemPath
@ -42,10 +45,26 @@ class AUT:
def __exit__(self, exc_type, exc_value, traceback):
if exc_type:
screenshot = configs.testpath.RUN / f'{self.aut_id}.png'
ImageGrab.grab(xdisplay=configs.system.DISPLAY if IS_LIN else None).save(screenshot)
allure.attach(
name=f'Screenshot on fail for multiple instance: {self.aut_id}', body=screenshot.read_bytes(), attachment_type=allure.attachment_type.PNG)
try:
self.attach()
driver.waitForObjectExists(statusDesktop_mainWindow).setVisible(True)
configs.testpath.TEST.mkdir(parents=True, exist_ok=True)
screenshot = configs.testpath.TEST / f'{self.aut_id}.png'
rect = driver.object.globalBounds(driver.waitForObject(statusDesktop_mainWindow))
img = ImageGrab.grab(
bbox=(rect.x, rect.y, rect.x + rect.width, rect.y + rect.height),
xdisplay=configs.system.DISPLAY if IS_LIN else None)
view = cv2.cvtColor(np.array(img), cv2.COLOR_BGR2RGB)
cv2.imwrite(str(screenshot), view)
allure.attach(
name=f'Screenshot on fail: {self.aut_id}',
body=screenshot.read_bytes(),
attachment_type=allure.attachment_type.PNG)
except Exception as err:
_logger.info(err)
self.stop()
@allure.step('Attach Squish to Test Application')

View File

@ -57,7 +57,7 @@ class Image:
rect = driver.object.globalBounds(driver.waitForObject(self.object_name))
img = ImageGrab.grab(
bbox=(rect.x, rect.y, rect.x + rect.width, rect.y + rect.height),
xdisplay=":0" if IS_LIN else None
xdisplay=configs.system.DISPLAY if IS_LIN else None
)
self._view = cv2.cvtColor(np.array(img), cv2.COLOR_BGR2RGB)