diff --git a/src/bitmessageqt/tests/main.py b/src/bitmessageqt/tests/main.py
index b3aa67fa..cbe809f3 100644
--- a/src/bitmessageqt/tests/main.py
+++ b/src/bitmessageqt/tests/main.py
@@ -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()
diff --git a/src/bitmessageqt/tests/support.py b/src/bitmessageqt/tests/support.py
index ba28b73a..fcce6a4c 100644
--- a/src/bitmessageqt/tests/support.py
+++ b/src/bitmessageqt/tests/support.py
@@ -31,3 +31,5 @@ class TestSupport(TestBase):
             ui.lineEditSubject.text(), self.SUPPORT_SUBJECT)
         self.assertIn(
             sys.version, ui.textEditMessage.toPlainText())
+
+        self.take_screenshot()