def window(tmpdir_factory): api_key = hexlify(os.urandom(16)) root_state_dir = str(tmpdir_factory.mktemp('tribler_state_dir')) app = TriblerApplication("triblerapp-guitest", sys.argv) # We must create a separate instance of QSettings and clear it. # Otherwise, previous runs of the same app will affect this run. settings = QSettings("tribler-guitest") settings.clear() window = TriblerWindow( # pylint: disable=W0621 settings, root_state_dir, api_key=api_key, core_args=[ str(RUN_TRIBLER_PY.absolute()), '--core', '--gui-test-mode' ], ) # pylint: disable=W0621 app.set_activation_window(window) QTest.qWaitForWindowExposed(window) screenshot(window, name="tribler_loading") wait_for_signal( window.core_manager.events_manager.tribler_started, flag=window.core_manager.events_manager.tribler_started_flag, ) window.downloads_page.can_update_items = True yield window window.close_tribler() screenshot(window, name="tribler_closing") QApplication.quit()
def test_launch_flowchart(self): num_flowcharts = len(get_window_manager().flowcharts) QTest.mouseClick(self.welcome_window.ui.btnFlowchart, Qt.LeftButton) self.assertEqual(len(get_window_manager().flowcharts) - 1, num_flowcharts, 'Flowchart window not appended to WindowMnager.flowchart instance') self.assertIsInstance(get_window_manager().flowcharts[-1], FlowchartWindow) QTest.qWaitForWindowExposed(get_window_manager().flowcharts[-1])
def setUpClass(cls): if cls is BaseWelcomeWindowTest: raise unittest.SkipTest("Skipping BaseWelcomeWindowTest") cls.welcome_window = MainWindow() get_window_manager().welcome_window = cls.welcome_window QTest.qWaitForWindowExposed(cls.welcome_window) super(BaseWelcomeWindowTest, cls).setUpClass()
def test_launch_viewer(self): num_viewers = len(get_window_manager().viewers) # QtTest.QTest.qWaitForWindowExposed(self.welcome_window) QTest.mouseClick(self.welcome_window.ui.btnViewer, Qt.LeftButton) self.assertEqual(len(get_window_manager().viewers) - 1, num_viewers, 'No window has been appended to WindowManager.viewers instance') self.assertIsInstance(get_window_manager().viewers[-1], ViewerWindow) QTest.qWaitForWindowExposed(get_window_manager().viewers[-1])
def setUpClass(cls): # doing this only once to save time (waiting for window to show takes time) cls.window = BaseWindow(ui_file) # this is required for testing shortcuts # see https://stackoverflow.com/a/20751213 cls.window.show() QTest.qWaitForWindowExposed(cls.window)
def test_integration(self): solver = gui.PolynomSolver() QTest.qWaitForWindowExposed(solver) QTest.keyClicks(solver._inputLine, '-2 20 -50', delay=100) # Wait 100ms QTest.mouseClick(solver._processButton, Qt.Qt.LeftButton, pos=Qt.QPoint(1, 1)) self.assertEqual(solver._resultWidget.text(), "5.000")
def test_tiff_module(self): viewer_window = get_window_manager().viewers[-1] for m in viewer_window.running_modules: self.assertNotIsInstance( m, TiffModuleGUI, 'Tiff module already running after viewer launcher') viewer_window.ui.actionTiff_file.trigger() if not any( isinstance(m, TiffModuleGUI) for m in viewer_window.running_modules): self.fail( 'Tiff module not appended to running modules of viewer window') tm = viewer_window.run_module('tiff_io') self.assertIsInstance(tm, TiffModuleGUI, 'Getting Tiff by str reference failed') assert isinstance(tm, TiffModuleGUI) QTest.qWaitForWindowExposed(tm) # Check tiff module defaults self.assertFalse(tm.ui.radioButtonImread.isChecked()) self.assertFalse(tm.ui.radioButtonAsarray.isChecked()) tm.ui.radioButtonImread.click() self.assertTrue(tm.ui.radioButtonImread.isChecked()) tiff_file = os.path.join(data_dir, 'tiff', 'test_imread.tiff') json_file = os.path.join(data_dir, 'tiff', 'test_imread.json') tm._tiff_file_path = tiff_file tm.check_meta_path() # Check that meta data is deteted self.assertEqual(tm._meta_file_path, json_file) # Load image QTest.mouseClick(tm.ui.btnLoadIntoWorkEnv, Qt.LeftButton) # Check the image arrays seq = tifffile.imread(tiff_file) numpy.testing.assert_array_equal( seq, viewer_window.viewer_reference.workEnv.imgdata.seq.T, 'Output of tifffile.imread does not match ViewerWorkEnv.ImgData.seq.T' ) numpy.testing.assert_array_equal( seq, viewer_window.viewer_reference.image, 'ImageView.image array does not equal output of tifffile.imread') # Check the meta data file meta = viewer_window.viewer_reference.workEnv.imgdata.meta self.assertFalse({} == meta, "ViewerWorkEnv dict appears to be empty") print(f"ViewerWorkEnv meta data dict\n{meta}")
def execWithArgs(): self.qpart.show() QTest.qWaitForWindowExposed(self.qpart) _processPendingEvents(self.app) try: func(*args) finally: _processPendingEvents(self.app) self.app.quit()
def setUp(self): self.d = Driver() # the application must be switched to metric scales self.assertFalse(self.d.config.metric != True) self.d.show() self.d.raise_() self.debug = self.d.config.debug QTest.qWaitForWindowExposed(self.d) if not utils.isMac(): self.d.working_dir = 'Z:\Windows\pyRouterJig\images'
def setUp(self): """Create the GUI""" print('Executing Main Test') self.app = QtWidgets.QApplication(sys.argv) self.main_window = MainWindow() # catch invoked message boxes for additional parameters and make random selection self.main_window.simDataItemTreeModel.dialog.message_shown.connect( self.random_attributes_selection) self.main_window.show() QTest.qWaitForWindowExposed(self.main_window)
def setUp(self): """Restart application before each unit test.""" self.app = QApplication([]) self.ui = Window() self.menu = self.ui.menuBar() self.file_menu = self.menu.actions()[0] self.result_menu = self.menu.actions()[1] self.settings_menu = self.menu.actions()[2] self.tab = None QTest.qWaitForWindowExposed(self.ui) return
def test_add_selectall(self): import breezy.plugins.qbrz.lib.add self.win = breezy.plugins.qbrz.lib.add.AddWindow(self.tree, None) QTest.qWaitForWindowExposed(self.win) self.addCleanup(self.cleanup_win) self.win.initial_load() QTest.qWaitForWindowExposed(self.win) # print('\ntest_add_select_all', self.win.filelist_widget) self.assertSelectedPaths(self.win.filelist_widget, [ 'dir-with-unversioned/child', 'unversioned', 'unversioned-with-ignored' ])
def test_argument_error(self): # Note that it can be hard to test dialogs, as we lose the hand on the # processing of the events. Here we have mocked the QMessage API solver = gui.PolynomSolver() QTest.qWaitForWindowExposed(solver) QTest.keyClicks(solver._inputLine, 'mmmm', delay=100) # Wait 100ms QTest.mouseClick(solver._processButton, Qt.Qt.LeftButton, pos=Qt.QPoint(1, 1)) # Check the protocol self.assertEqual(self._mock.callCount(), 0) self.assertEqual(self._mockedQMessage.callCount(), 1)
def test_2_result(self): self._mock.setExpectedResult([0, 1]) # Check the process solver = gui.PolynomSolver() QTest.qWaitForWindowExposed(solver) QTest.keyClicks(solver._inputLine, '0 1 2', delay=100) # Wait 100ms QTest.mouseClick(solver._processButton, Qt.Qt.LeftButton, pos=Qt.QPoint(1, 1)) self.assertEqual(solver._resultWidget.text(), "0.000 1.000") # Check the protocol self.assertEqual(self._mock.callCount(), 1) self.assertEqual(self._mock._arguments[0], (0, 1, 2))
def setUp(self): TestGuideBarBase.setUp(self) self.tree.commit(message='2') self.win = AnnotateWindow(None, None, None, None, None, loader=self.load, loader_args=[]) self.addCleanup(self.win.close) self.win.show() QTest.qWaitForWindowExposed(self.win)
def window(api_port): core_manager.START_FAKE_API = True tribler_gui.defs.DEFAULT_API_PORT = api_port app = TriblerApplication("triblerapp-guitest", sys.argv) window = TriblerWindow(api_port=api_port) app.set_activation_window(window) QTest.qWaitForWindowExposed(window) screenshot(window, name="tribler_loading") wait_for_signal(window.core_manager.events_manager.tribler_started) window.downloads_page.can_update_items = True yield window QApplication.quit()
def execWithArgs(): try: core.mainWindow().show() QTest.qWaitForWindowExposed(core.mainWindow()) app = QApplication.instance() app.setActiveWindow(core.mainWindow()) assert app.focusWidget() is not None func(*args) # When done processing these events, exit the event loop. To do so, finally: try: app.processEvents() except: pass app.quit()
def setup_method(self): base = ".\\resources\\test_data" data_source = base + "\\source" tempdir = base + "\\temp_dir" try: rmtree(tempdir) except FileNotFoundError: pass copytree(data_source, tempdir) # Throws file not found exception self.app = QApplication([]) self.ui = ExampleApp(".\\resources\\CloneSpyResult.txt") self.menu = self.ui.menuBar() self.ui.show() QTest.qWaitForWindowExposed(self.ui)
def setUp(self): app = QApplication.instance() self.app = app or QApplication([]) self.window = Window() # some useful shortcuts self.grid = self.window.main_grid self.gridvp = self.grid.viewport() self.tb = { k: self.window.toolbar.widgetForAction(obj) if isinstance( obj, QAction) else obj for k, obj in self.window.toolbar_controls.items() } self.window.show() # bring to foreground self.window.setWindowState((self.window.windowState() & ~Qt.WindowMinimized) | Qt.WindowActive) QTest.qWaitForWindowExposed(self.window)
def test_MainWindow_shortcuts(self): """Testing some of the simpler shortcuts do what you would expect them to """ # First open MainWindow: self.main.show() QTest.qWaitForWindowExposed(self.main) # Test Enable/Disable drawing old = self.main.main_widget.win.view.drawing QTest.keyClick(self.main, "d", Qt.ControlModifier) assert self.main.main_widget.win.view.drawing != old # Test View All labels old = self.main.main_widget.win.see_all_labels QTest.keyClick(self.main, "a", Qt.ControlModifier) assert self.main.main_widget.win.see_all_labels != old # Test adjust slice intensity old = self.main.hist_widget.isVisible() QTest.keyClick(self.main, "h", Qt.ControlModifier) QTest.qWaitForWindowExposed(self.main.hist_widget) assert self.main.hist_widget.isVisible() != old
def test_defaults(self): self.assertEqual(self.form.ui.frequency_radiobutton_1.text(), "Once a week") self.assertEqual(self.form.ui.frequency_radiobutton_2.text(), "Every other week") self.assertEqual(self.form.ui.frequency_radiobutton_3.text(), "Once a month") self.assertEqual(self.form.check_equal_text_save_button(), "Save") self.assertEqual(self.form.check_equal_text_cancel_button(), "Cancel") self.assertEqual(self.form.check_equal_text_clear_button(), "Clear") self.assertEqual(self.form.ui.struggle_lineedit.text(), "") self.assertEqual(self.form.ui.subject_code_linedit.text(), "") self.form.show() self.assertTrue(QTest.qWaitForWindowExposed(self.form), True) self.assertTrue(self.form.ui.Add_notification_tab.isVisible(), True) self.assertFalse(self.form.ui.Saved_subjects_tab.isVisible(), False) self.assertFalse(self.form.ui.Settings_tab.isVisible(), False)
def setUpClass(cls): # doing this only once to save time (waiting for window to show takes time) # Mock objects are reset in "setUp" cls.main_window = PluginMainWindow() cls.mocks = { "file_new": MagicMock(), "file_open": MagicMock(), "file_save": MagicMock(), "file_save_as": MagicMock(), "kratos_groups": MagicMock() } cls.main_window.actionNew.triggered.connect(cls.mocks["file_new"]) cls.main_window.actionOpen.triggered.connect(cls.mocks["file_open"]) cls.main_window.actionSave.triggered.connect(cls.mocks["file_save"]) cls.main_window.actionSave_As.triggered.connect( cls.mocks["file_save_as"]) cls.main_window.actionGroups.triggered.connect( cls.mocks["kratos_groups"]) # this is required for testing shortcuts # see https://stackoverflow.com/a/20751213 cls.main_window.show() QTest.qWaitForWindowExposed(cls.main_window)
def test_exit_option(self): self.form.show() if self.form.get_action_quit().isEnabled(): self.form.close() self.assertFalse(QTest.qWaitForWindowExposed(self.form), False)
def setUp(self): super(WindowTestCase, self).setUp() self.window = UpdaterApp() self.window.show() QTest.qWaitForWindowExposed(self.window)
def setUp(self): """Create the GUI""" self.app = QtWidgets.QApplication(sys.argv) self.main_window = MainWindow() self.main_window.show() QTest.qWaitForWindowExposed(self.main_window)
def test_show_widget(self): widget = TreeWidget() self.widget = widget QTest.qWaitForWindowExposed(widget) self.run_model_tests() self.addCleanup(widget.close) # make the widget bigger so that we can see what is going on. widget.setGeometry(0, 0, 500, 500) widget.show() QTest.qWaitForWindowExposed(widget) QtCore.QCoreApplication.processEvents() widget.set_tree(self.tree, self.branch, changes_mode=self.changes_mode) self.run_model_tests() widget.update() QTest.qWaitForWindowExposed(widget) QtCore.QCoreApplication.processEvents() widget.expandAll() QTest.qWaitForWindowExposed(widget) self.run_model_tests() widget.update() QTest.qWaitForWindowExposed(widget) QtCore.QCoreApplication.processEvents() self.modify_tree(self, self.tree) QTest.qWaitForWindowExposed(widget) widget.refresh() QTest.qWaitForWindowExposed(widget) self.run_model_tests() widget.update() QTest.qWaitForWindowExposed(widget) QtCore.QCoreApplication.processEvents() widget.expandAll() QTest.qWaitForWindowExposed(widget) self.run_model_tests() widget.update() QTest.qWaitForWindowExposed(widget) QtCore.QCoreApplication.processEvents()
def screenshot(self, do_screenshot=True): QTest.qWaitForWindowExposed(self.d) QTest.qWait(100) self.d._on_save(do_screenshot)
if not os.path.exists(state_dir): os.makedirs(state_dir) # Set up logging before starting the GUI setup_gui_logging() core_script_file = os.path.abspath(run_tribler.__file__) core_args = [core_script_file] # QT App initialization app = QApplication(sys.argv) window = TriblerWindow(core_args=core_args) # Wait till the window is shown QTest.qWaitForWindowExposed(window) else: window = None sys.excepthook = sys.__excepthook__ MAX_TIMEOUT = 60000 class TimeoutException(Exception): pass class AbstractTriblerIntegrationTest(unittest.TestCase): """ This class contains various utility methods that are used during the GUI test, i.e. methods that wait until some data in a list is loaded or for taking a screenshot of the current window. """
from TriblerGUI.widgets.channel_torrent_list_item import ChannelTorrentListItem from TriblerGUI.widgets.home_recommended_item import HomeRecommendedItem api_port = get_random_port() core_manager.START_FAKE_API = True import TriblerGUI TriblerGUI.defs.DEFAULT_API_PORT = api_port from TriblerGUI.widgets.loading_list_item import LoadingListItem from TriblerGUI.tribler_window import TriblerWindow if os.environ.get("TEST_GUI") == "yes": app = QApplication(sys.argv) window = TriblerWindow(api_port=api_port) QTest.qWaitForWindowExposed(window) else: window = None def start_fake_core(port): from twisted.internet import reactor from twisted.web.server import Site from FakeTriblerAPI.endpoints.root_endpoint import RootEndpoint from FakeTriblerAPI.endpoints.video_root_endpoint import VideoRootEndpoint from FakeTriblerAPI.tribler_data import TriblerData import FakeTriblerAPI.tribler_utils as tribler_utils def generate_tribler_data(): tribler_utils.tribler_data = TriblerData()
def test_MainWindow_starts(self): """Testing that the GUI starts as expected. """ # Try and open MainWindow: self.main.show() QTest.qWaitForWindowExposed(self.main)