Screenshots in bitmessageqt tests #1738

Open
g1itch wants to merge 2 commits from g1itch/tests-screenshot into v0.6
5 changed files with 29 additions and 5 deletions

View File

@ -18,5 +18,5 @@ install:
- export PYTHONWARNINGS=all
script:
- python checkdeps.py
- xvfb-run src/bitmessagemain.py -t
- python src/bitmessagemain.py -t
- python -bm tests

View File

@ -2,3 +2,4 @@ coverage
python_prctl
psutil
pycrypto
xvfbwrapper;platform_system=="Linux"

View File

@ -2,6 +2,7 @@
import Queue
import sys
import os
import unittest
from PyQt4 import QtCore, QtGui
@ -23,6 +24,22 @@ class TestBase(unittest.TestCase):
self.window = bitmessageqt.MyForm()
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):
# self.app.deleteLater()
while True:
@ -55,6 +72,4 @@ class TestUISignaler(TestBase):
_translate("test", "Testing updateStatusBar..."), 1)
))
QtCore.QTimer.singleShot(60, self.app.quit)
self.app.exec_()
# self.app.processEvents(QtCore.QEventLoop.AllEvents, 60)
self.take_screenshot()

View File

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

View File

@ -3,6 +3,7 @@ Tests for core and those that do not work outside
(because of import error for example)
"""
import atexit
import os
import pickle # nosec
import Queue
@ -398,8 +399,9 @@ def run():
suite = loader.loadTestsFromTestCase(TestCore)
try:
import bitmessageqt.tests
from xvfbwrapper import Xvfb
except ImportError:
pass
Xvfb = None
else:
qt_tests = loader.loadTestsFromModule(bitmessageqt.tests)
suite.addTests(qt_tests)
@ -410,4 +412,8 @@ def run():
sys.excepthook = keep_exc
if Xvfb:
vdisplay = Xvfb(width=1024, height=768)
vdisplay.start()
atexit.register(vdisplay.stop)
return unittest.TextTestRunner(verbosity=2).run(suite)