Add TestBase.take_screenshot(window=None) in bitmessageqt.tests:

it shows specified window (or the main window), execs the app
and saves screenshot in png file in the appdata with full test name
in the file name.

Used it in TestUISignaler.test_updateStatusBar and TestSupport.
This commit is contained in:
Dmitri Bogomolov 2021-02-20 23:38:45 +02:00
parent d7cc8b112e
commit f738769d34
Signed by untrusted user: g1itch
GPG Key ID: 720A756F18DEED13
2 changed files with 20 additions and 3 deletions

View File

@ -2,6 +2,7 @@
import Queue import Queue
import sys import sys
import os
import unittest import unittest
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
@ -23,6 +24,22 @@ class TestBase(unittest.TestCase):
self.window = bitmessageqt.MyForm() self.window = bitmessageqt.MyForm()
self.window.appIndicatorInit(self.app) self.window.appIndicatorInit(self.app)
def take_screenshot(self, window=None):
"""Take a screenshot of the *window* or main window if not set"""
def save_screenshot():
"""Save screenshot and quit app clause"""
screenshot = QtGui.QPixmap.grabWindow(
self.app.desktop().winId())
screenshot.save(os.path.join(
bitmessageqt.state.appdata, '%s.png' % self.id()))
self.app.quit()
timer = QtCore.QTimer()
timer.timeout.connect(save_screenshot)
timer.start(200)
(window or self.window).show()
self.app.exec_()
def tearDown(self): def tearDown(self):
# self.app.deleteLater() # self.app.deleteLater()
while True: while True:
@ -55,6 +72,4 @@ class TestUISignaler(TestBase):
_translate("test", "Testing updateStatusBar..."), 1) _translate("test", "Testing updateStatusBar..."), 1)
)) ))
QtCore.QTimer.singleShot(60, self.app.quit) self.take_screenshot()
self.app.exec_()
# self.app.processEvents(QtCore.QEventLoop.AllEvents, 60)

View File

@ -31,3 +31,5 @@ class TestSupport(TestBase):
ui.lineEditSubject.text(), self.SUPPORT_SUBJECT) ui.lineEditSubject.text(), self.SUPPORT_SUBJECT)
self.assertIn( self.assertIn(
sys.version, ui.textEditMessage.toPlainText()) sys.version, ui.textEditMessage.toPlainText())
self.take_screenshot()