external/python3/ExternalPackage_python3.mk | 11 + formula/source/ui/dlg/structpg.hxx | 2 include/svtools/treelistbox.hxx | 9 - include/vcl/tabctrl.hxx | 2 include/vcl/uitest/uiobject.hxx | 23 +++ solenv/gbuild/UITest.mk | 15 +- svtools/inc/uitest/uiobject.hxx | 36 +++++ svtools/source/uitest/uiobject.cxx | 111 ++++++++++++++++ uitest/UITestCase.py | 32 ++++ uitest/UITest_calc_demo.mk | 2 uitest/UITest_demo_ui.mk | 2 uitest/UITest_impress_demo.mk | 2 uitest/UITest_writer_demo.mk | 2 uitest/calc_tests/about_test.py | 22 +-- uitest/calc_tests/calc_demo.txt | 5 uitest/calc_tests/create_chart.py | 190 ++++++++++++---------------- uitest/calc_tests/create_range_name.py | 62 ++++----- uitest/calc_tests/function_wizard.py | 28 +--- uitest/calc_tests/gridwin.py | 45 ++++++ uitest/calc_tests/gridwindow.py | 46 ++---- uitest/demo_ui/checkbox.py | 24 +-- uitest/demo_ui/combobox.py | 28 ++-- uitest/demo_ui/demo_ui.txt | 13 - uitest/demo_ui/edit.py | 28 ++-- uitest/demo_ui/gridwin.py | 60 +++----- uitest/demo_ui/listbox.py | 52 +++---- uitest/demo_ui/radiobutton.py | 24 +-- uitest/demo_ui/spinfield.py | 104 +++++++-------- uitest/demo_ui/tabcontrol.py | 52 +++++++ uitest/demo_ui/tabdialog.py | 48 +++---- uitest/demo_ui/treelist.py | 60 ++++++++ uitest/helper.py | 1 uitest/impress_tests/impress_demo.txt | 4 uitest/impress_tests/start.py | 95 +++----------- uitest/test_main.py | 100 ++++++++++++++ uitest/writer_tests/start.py | 90 ++++--------- uitest/writer_tests/writer_demo.txt | 4 vcl/source/control/tabctrl.cxx | 6 vcl/source/uitest/uiobject.cxx | 48 +++++++ vcl/source/uitest/uno/uiobject_uno.cxx | 2 40 files changed, 927 insertions(+), 563 deletions(-)
New commits: commit dd3e8ad79d5a9757c9a0ed2b0fe82f3bb00dbba4 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 22 18:17:25 2016 +0200 uitest: remove debug print statements Change-Id: I7dc68ef48a69f4878a20e6cb1dd3203dfc3097fd diff --git a/uitest/helper.py b/uitest/helper.py index fcb9618..b993041 100644 --- a/uitest/helper.py +++ b/uitest/helper.py @@ -46,7 +46,6 @@ class EventListener(XDocumentEventListener,unohelper.Base): self.xGEB.removeDocumentEventListener(self) def documentEventOccured(self, event): - print(str(event.EventName)) if event.EventName in self.eventNames: self.executed = True self.eventExecuted.append(event.EventName) diff --git a/uitest/test_main.py b/uitest/test_main.py index 2a0fca1..15e5d70 100644 --- a/uitest/test_main.py +++ b/uitest/test_main.py @@ -94,7 +94,6 @@ if __name__ == '__main__': usage() sys.exit() test_suite = get_test_suite(opts) - print(test_suite) unittest.TextTestRunner().run(test_suite) commit e41cb9684784bc65733995c1e486b62b647d980c Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 22 18:14:59 2016 +0200 uitest: we also need a SolarMutex when deleting the wrapper object The wrapper has references to vcl objects and the destructor might have the last reference to a vcl::Window causing a delete. Avoid potential problems (I have seen one deadlock in the chart wizard code) by taking the SolarMutex. Change-Id: I8afcf79842b2f8e8f822b975629d5c8e18a86163 diff --git a/vcl/source/uitest/uno/uiobject_uno.cxx b/vcl/source/uitest/uno/uiobject_uno.cxx index 7c6ca83..6506c05 100644 --- a/vcl/source/uitest/uno/uiobject_uno.cxx +++ b/vcl/source/uitest/uno/uiobject_uno.cxx @@ -20,6 +20,8 @@ UIObjectUnoObj::UIObjectUnoObj(std::unique_ptr<UIObject> pObj): UIObjectUnoObj::~UIObjectUnoObj() { + SolarMutexGuard aGuard; + mpObj.reset(); } css::uno::Reference<css::ui::test::XUIObject> SAL_CALL UIObjectUnoObj::getChild(const OUString& rID) commit 6da7ccfc2ac3382c896a679b98061fce4a6d6cf2 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 22 06:36:59 2016 +0200 uitest: remove sleeps and prints from impress and writer parts Change-Id: Ic4c4ba74701303df1ff38c5ed6ed7d521b369053 diff --git a/uitest/impress_tests/start.py b/uitest/impress_tests/start.py index 28a3c74..f82eb63 100644 --- a/uitest/impress_tests/start.py +++ b/uitest/impress_tests/start.py @@ -29,16 +29,10 @@ class SimpleImpressTest(UITestCase): self.ui_test.create_doc_in_start_center("impress") xImpressDoc = self.xUITest.getTopFocusWindow() - print(get_state_as_dict(xImpressDoc)) - print(xImpressDoc.getChildren()) xEditWin = xImpressDoc.getChild("impress_win") xEditWin.executeAction("SET", mkPropertyValues({"ZOOM": "200"})) - print(xEditWin.getChildren()) - - time.sleep(1) - self.ui_test.close_doc() def test_select_page(self): @@ -46,20 +40,11 @@ class SimpleImpressTest(UITestCase): self.ui_test.create_doc_in_start_center("impress") xImpressDoc = self.xUITest.getTopFocusWindow() - print(get_state_as_dict(xImpressDoc)) - print(xImpressDoc.getChildren()) xEditWin = xImpressDoc.getChild("impress_win") - time.sleep(1) - print(get_state_as_dict(xEditWin)) - xEditWin.executeAction("GOTO", mkPropertyValues({"PAGE": "2"})) - time.sleep(1) - - print(get_state_as_dict(xEditWin)) - self.ui_test.close_doc() def test_select_text(self): @@ -67,15 +52,9 @@ class SimpleImpressTest(UITestCase): self.ui_test.create_doc_in_start_center("impress") xImpressDoc = self.xUITest.getTopFocusWindow() - print(get_state_as_dict(xImpressDoc)) - print(xImpressDoc.getChildren()) xEditWin = xImpressDoc.getChild("impress_win") - time.sleep(1) - - print(get_state_as_dict(xEditWin)) - self.ui_test.close_doc() def test_select_object(self): @@ -83,19 +62,12 @@ class SimpleImpressTest(UITestCase): self.ui_test.create_doc_in_start_center("impress") xImpressDoc = self.xUITest.getTopFocusWindow() - print(get_state_as_dict(xImpressDoc)) - print(xImpressDoc.getChildren()) xEditWin = xImpressDoc.getChild("impress_win") xEditWin.executeAction("SELECT", mkPropertyValues({"OBJECT":"Unnamed Drawinglayer object 1"})) - time.sleep(1) xEditWin.executeAction("DESELECT", tuple()) - time.sleep(1) - - print(get_state_as_dict(xEditWin)) - self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/writer_tests/start.py b/uitest/writer_tests/start.py index 51e0d3a..13d99c9 100644 --- a/uitest/writer_tests/start.py +++ b/uitest/writer_tests/start.py @@ -30,15 +30,11 @@ class SimpleWriterTest(UITestCase): self.ui_test.create_doc_in_start_center("writer") xWriterDoc = self.xUITest.getTopFocusWindow() - print(xWriterDoc.getChildren()) xWriterEdit = xWriterDoc.getChild("writer_edit") - print(xWriterEdit.getState()) xWriterEdit.executeAction("SET", mkPropertyValues({"ZOOM": "200"})) - time.sleep(2) - self.ui_test.close_doc() def test_type_text(self): @@ -50,8 +46,6 @@ class SimpleWriterTest(UITestCase): xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "This is my first writer text written through the UI testing"})) - time.sleep(2) - self.ui_test.close_doc() def test_goto_first_page(self): @@ -62,14 +56,11 @@ class SimpleWriterTest(UITestCase): xWriterEdit = xWriterDoc.getChild("writer_edit") state = get_state_as_dict(xWriterEdit) - print(state) while state["CurrentPage"] is "1": xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "RETURN"})) state = get_state_as_dict(xWriterEdit) xWriterEdit.executeAction("GOTO", mkPropertyValues({"PAGE": "1"})) - print(state) - time.sleep(2) self.ui_test.close_doc() @@ -83,15 +74,8 @@ class SimpleWriterTest(UITestCase): xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "This is my first writer text written through the UI testing"})) - time.sleep(2) - print(get_state_as_dict(xWriterEdit)) - xWriterEdit.executeAction("SELECT", mkPropertyValues({"START_POS": "0", "END_POS": "4"})) - print(get_state_as_dict(xWriterEdit)) - - time.sleep(2) - self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 18d64ed6b47c6a39ccef9cd704f135bae390d5a9 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 22 06:34:55 2016 +0200 uitest: remove sleeps from demo ui parts Change-Id: Ib1fc73c317186ede3f41029aa40b0c6a075c085d diff --git a/uitest/demo_ui/tabcontrol.py b/uitest/demo_ui/tabcontrol.py index 9ef9d7b..1f5712d 100644 --- a/uitest/demo_ui/tabcontrol.py +++ b/uitest/demo_ui/tabcontrol.py @@ -43,8 +43,6 @@ class TabControlTest(UITestCase): xTabs = xFunctionDlg.getChild("tabs") xTabs.executeAction("SELECT", mkPropertyValues({"POS":"1"})) - time.sleep(1) - xCancelBtn = xFunctionDlg.getChild("cancel") xCancelBtn.executeAction("CLICK", tuple()) diff --git a/uitest/demo_ui/treelist.py b/uitest/demo_ui/treelist.py index f1681cd..23c1199 100644 --- a/uitest/demo_ui/treelist.py +++ b/uitest/demo_ui/treelist.py @@ -50,12 +50,8 @@ class TreeListTest(UITestCase): xTreeEntry.executeAction("COLLAPSE", tuple()) - time.sleep(1) - xTreeEntry.executeAction("EXPAND", tuple()) - time.sleep(1) - xCancelBtn = xFunctionDlg.getChild("cancel") xCancelBtn.executeAction("CLICK", tuple()) commit 16e6889e6291d22f4f8f44f2701e8b315d04a084 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 22 06:33:12 2016 +0200 uitest: remove sleeps and prints from calc demo These sleeps are only necessary when you want to run them non-headless and see what is actually happening. Change-Id: I20bd80c680c8569bc3c885f261e03db494afee06 diff --git a/uitest/calc_tests/create_chart.py b/uitest/calc_tests/create_chart.py index 6db4d58..1bd8276 100644 --- a/uitest/calc_tests/create_chart.py +++ b/uitest/calc_tests/create_chart.py @@ -69,14 +69,10 @@ class CalcChartUIDemo(UITestCase): self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart") xChartDlg = self.xUITest.getTopFocusWindow() - print(xChartDlg.getChildren()) - time.sleep(2) xOkBtn = xChartDlg.getChild("finish") xOkBtn.executeAction("CLICK", tuple()) - time.sleep(2) - self.ui_test.close_doc() def test_create_from_second_page(self): @@ -88,31 +84,19 @@ class CalcChartUIDemo(UITestCase): self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart") xChartDlg = self.xUITest.getTopFocusWindow() - print(xChartDlg.getChildren()) - time.sleep(2) xNextBtn = xChartDlg.getChild("next") xNextBtn.executeAction("CLICK", tuple()) - print(xChartDlg.getChildren()) - - time.sleep(2) - xDataInRows = xChartDlg.getChild("RB_DATAROWS") xDataInRows.executeAction("CLICK", tuple()) - time.sleep(2) - xDataInCols = xChartDlg.getChild("RB_DATACOLS") xDataInCols.executeAction("CLICK", tuple()) - time.sleep(2) - xCancelBtn = xChartDlg.getChild("finish") xCancelBtn.executeAction("CLICK", tuple()) - time.sleep(5) - self.ui_test.close_doc() def test_deselect_chart(self): @@ -154,13 +138,9 @@ class CalcChartUIDemo(UITestCase): xGridWindow.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""})) - time.sleep(2) - xGridWindow.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"})) xGridWindow.executeAction("ACTIVATE", tuple()) - time.sleep(2) - xGridWindow.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""})) self.ui_test.close_doc() @@ -187,7 +167,6 @@ class CalcChartUIDemo(UITestCase): xGridWindow.executeAction("ACTIVATE", tuple()) xCalcDoc = self.xUITest.getTopFocusWindow() - print(xCalcDoc.getChildren()) self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/calc_tests/gridwindow.py b/uitest/calc_tests/gridwindow.py index 1b63fe5..c3b2d1d 100644 --- a/uitest/calc_tests/gridwindow.py +++ b/uitest/calc_tests/gridwindow.py @@ -37,8 +37,6 @@ class GridWindowTest(UITestCase): enter_text_to_cell(xGridWindow, "C3", "=A1") enter_text_to_cell(xGridWindow, "A1", "2") - time.sleep(2) - self.ui_test.close_doc() def test_special_keys(self): @@ -54,8 +52,6 @@ class GridWindowTest(UITestCase): typeProps = mkPropertyValues({"KEYCODE": "CTRL+DOWN"}) xGridWindow.executeAction("TYPE", typeProps) - time.sleep(2) - self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit f928a9983423be545583269cb8274e9bfc7cf95d Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 22 06:07:00 2016 +0200 uitest: convert writer demo to new python unittest framework Change-Id: Ifff8fe9cb0f005c8a4e892d756ae6b0b95db3544 diff --git a/uitest/UITest_calc_demo.mk b/uitest/UITest_calc_demo.mk index 96acb49..9869300 100644 --- a/uitest/UITest_calc_demo.mk +++ b/uitest/UITest_calc_demo.mk @@ -10,6 +10,6 @@ $(eval $(call gb_UITest_UITest,calc_demo)) $(eval $(call gb_UITest_add_modules,calc_demo,$(SRCDIR)/uitest,\ - calc_tests/calc_demo.txt \ + calc_tests/ \ )) # vim: set noet sw=4 ts=4: diff --git a/uitest/UITest_demo_ui.mk b/uitest/UITest_demo_ui.mk index 03da9bb..11432f9 100644 --- a/uitest/UITest_demo_ui.mk +++ b/uitest/UITest_demo_ui.mk @@ -10,7 +10,7 @@ $(eval $(call gb_UITest_UITest,demo_ui)) $(eval $(call gb_UITest_add_modules,demo_ui,$(SRCDIR)/uitest,\ - demo_ui/demo_ui.txt \ + demo_ui/ \ )) # vim: set noet sw=4 ts=4: diff --git a/uitest/UITest_impress_demo.mk b/uitest/UITest_impress_demo.mk index dfabbf9..e13d954 100644 --- a/uitest/UITest_impress_demo.mk +++ b/uitest/UITest_impress_demo.mk @@ -10,6 +10,6 @@ $(eval $(call gb_UITest_UITest,impress_demo)) $(eval $(call gb_UITest_add_modules,impress_demo,$(SRCDIR)/uitest,\ - impress_tests/impress_demo.txt \ + impress_tests/ \ )) # vim: set noet sw=4 ts=4: diff --git a/uitest/UITest_writer_demo.mk b/uitest/UITest_writer_demo.mk index c0c7f3d..a95fbd1 100644 --- a/uitest/UITest_writer_demo.mk +++ b/uitest/UITest_writer_demo.mk @@ -10,6 +10,6 @@ $(eval $(call gb_UITest_UITest,writer_demo)) $(eval $(call gb_UITest_add_modules,writer_demo,$(SRCDIR)/uitest,\ - writer_tests/writer_demo.txt \ + writer_tests/ \ )) # vim: set noet sw=4 ts=4: diff --git a/uitest/writer_tests/start.py b/uitest/writer_tests/start.py index a5a23ca..51e0d3a 100644 --- a/uitest/writer_tests/start.py +++ b/uitest/writer_tests/start.py @@ -9,6 +9,8 @@ from uitest_helper import UITest, get_state_as_dict from helper import mkPropertyValues +from UITestCase import UITestCase + import time try: @@ -21,89 +23,75 @@ except ImportError: print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") raise -def start_writer(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) - - ui_test = UITest(xUITest, xContext) +class SimpleWriterTest(UITestCase): - ui_test.create_doc_in_start_center("writer") + def test_start_writer(self): - xWriterDoc = xUITest.getTopFocusWindow() - print(xWriterDoc.getChildren()) + self.ui_test.create_doc_in_start_center("writer") - xWriterEdit = xWriterDoc.getChild("writer_edit") - print(xWriterEdit.getState()) + xWriterDoc = self.xUITest.getTopFocusWindow() + print(xWriterDoc.getChildren()) - xWriterEdit.executeAction("SET", mkPropertyValues({"ZOOM": "200"})) + xWriterEdit = xWriterDoc.getChild("writer_edit") + print(xWriterEdit.getState()) - time.sleep(2) + xWriterEdit.executeAction("SET", mkPropertyValues({"ZOOM": "200"})) - ui_test.close_doc() + time.sleep(2) -def type_text(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + self.ui_test.close_doc() - ui_test = UITest(xUITest, xContext) + def test_type_text(self): - ui_test.create_doc_in_start_center("writer") + self.ui_test.create_doc_in_start_center("writer") - xWriterDoc = xUITest.getTopFocusWindow() - xWriterEdit = xWriterDoc.getChild("writer_edit") + xWriterDoc = self.xUITest.getTopFocusWindow() + xWriterEdit = xWriterDoc.getChild("writer_edit") - xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "This is my first writer text written through the UI testing"})) + xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "This is my first writer text written through the UI testing"})) - time.sleep(2) + time.sleep(2) - ui_test.close_doc() + self.ui_test.close_doc() -def goto_first_page(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + def test_goto_first_page(self): - ui_test = UITest(xUITest, xContext) + self.ui_test.create_doc_in_start_center("writer") - ui_test.create_doc_in_start_center("writer") + xWriterDoc = self.xUITest.getTopFocusWindow() + xWriterEdit = xWriterDoc.getChild("writer_edit") - xWriterDoc = xUITest.getTopFocusWindow() - xWriterEdit = xWriterDoc.getChild("writer_edit") - - state = get_state_as_dict(xWriterEdit) - print(state) - while state["CurrentPage"] is "1": - xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "RETURN"})) state = get_state_as_dict(xWriterEdit) + print(state) + while state["CurrentPage"] is "1": + xWriterEdit.executeAction("TYPE", mkPropertyValues({"KEYCODE": "RETURN"})) + state = get_state_as_dict(xWriterEdit) - xWriterEdit.executeAction("GOTO", mkPropertyValues({"PAGE": "1"})) - print(state) - time.sleep(2) - - ui_test.close_doc() + xWriterEdit.executeAction("GOTO", mkPropertyValues({"PAGE": "1"})) + print(state) + time.sleep(2) + self.ui_test.close_doc() -def select_text(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) - ui_test = UITest(xUITest, xContext) + def test_select_text(self): - ui_test.create_doc_in_start_center("writer") + self.ui_test.create_doc_in_start_center("writer") - xWriterDoc = xUITest.getTopFocusWindow() - xWriterEdit = xWriterDoc.getChild("writer_edit") + xWriterDoc = self.xUITest.getTopFocusWindow() + xWriterEdit = xWriterDoc.getChild("writer_edit") - xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "This is my first writer text written through the UI testing"})) + xWriterEdit.executeAction("TYPE", mkPropertyValues({"TEXT": "This is my first writer text written through the UI testing"})) - time.sleep(2) - print(get_state_as_dict(xWriterEdit)) + time.sleep(2) + print(get_state_as_dict(xWriterEdit)) - xWriterEdit.executeAction("SELECT", mkPropertyValues({"START_POS": "0", "END_POS": "4"})) + xWriterEdit.executeAction("SELECT", mkPropertyValues({"START_POS": "0", "END_POS": "4"})) - print(get_state_as_dict(xWriterEdit)) + print(get_state_as_dict(xWriterEdit)) - time.sleep(2) + time.sleep(2) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/writer_tests/writer_demo.txt b/uitest/writer_tests/writer_demo.txt deleted file mode 100644 index 0045e2a..0000000 --- a/uitest/writer_tests/writer_demo.txt +++ /dev/null @@ -1,4 +0,0 @@ -writer_tests.start.start_writer -writer_tests.start.type_text -writer_tests.start.goto_first_page -writer_tests.start.select_text commit fb821500ed026cfddae99c3695660556c75002d3 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 22 06:02:55 2016 +0200 uitest: convert the impress test to the new python unittest framework Change-Id: I7a5cf03daac1b0426672a9d6611aa4cab4aaf91c diff --git a/uitest/impress_tests/impress_demo.txt b/uitest/impress_tests/impress_demo.txt deleted file mode 100644 index fb38b14..0000000 --- a/uitest/impress_tests/impress_demo.txt +++ /dev/null @@ -1,4 +0,0 @@ -impress_tests.start.start_impress -impress_tests.start.select_page -impress_tests.start.select_text -impress_tests.start.select_object diff --git a/uitest/impress_tests/start.py b/uitest/impress_tests/start.py index 5b0dfdb..28a3c74 100644 --- a/uitest/impress_tests/start.py +++ b/uitest/impress_tests/start.py @@ -9,6 +9,8 @@ from uitest_helper import UITest, get_state_as_dict from helper import mkPropertyValues +from UITestCase import UITestCase + import time try: @@ -21,94 +23,79 @@ except ImportError: print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") raise -def start_impress(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) - - ui_test = UITest(xUITest, xContext) - - ui_test.create_doc_in_start_center("impress") - - xImpressDoc = xUITest.getTopFocusWindow() - print(get_state_as_dict(xImpressDoc)) - print(xImpressDoc.getChildren()) - - xEditWin = xImpressDoc.getChild("impress_win") - xEditWin.executeAction("SET", mkPropertyValues({"ZOOM": "200"})) +class SimpleImpressTest(UITestCase): + def test_start_impress(self): - print(xEditWin.getChildren()) + self.ui_test.create_doc_in_start_center("impress") - time.sleep(1) + xImpressDoc = self.xUITest.getTopFocusWindow() + print(get_state_as_dict(xImpressDoc)) + print(xImpressDoc.getChildren()) - ui_test.close_doc() + xEditWin = xImpressDoc.getChild("impress_win") + xEditWin.executeAction("SET", mkPropertyValues({"ZOOM": "200"})) -def select_page(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + print(xEditWin.getChildren()) - ui_test = UITest(xUITest, xContext) + time.sleep(1) - ui_test.create_doc_in_start_center("impress") + self.ui_test.close_doc() - xImpressDoc = xUITest.getTopFocusWindow() - print(get_state_as_dict(xImpressDoc)) - print(xImpressDoc.getChildren()) + def test_select_page(self): - xEditWin = xImpressDoc.getChild("impress_win") + self.ui_test.create_doc_in_start_center("impress") - time.sleep(1) - print(get_state_as_dict(xEditWin)) + xImpressDoc = self.xUITest.getTopFocusWindow() + print(get_state_as_dict(xImpressDoc)) + print(xImpressDoc.getChildren()) - xEditWin.executeAction("GOTO", mkPropertyValues({"PAGE": "2"})) + xEditWin = xImpressDoc.getChild("impress_win") - time.sleep(1) + time.sleep(1) + print(get_state_as_dict(xEditWin)) - print(get_state_as_dict(xEditWin)) + xEditWin.executeAction("GOTO", mkPropertyValues({"PAGE": "2"})) - ui_test.close_doc() + time.sleep(1) -def select_text(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + print(get_state_as_dict(xEditWin)) - ui_test = UITest(xUITest, xContext) + self.ui_test.close_doc() - ui_test.create_doc_in_start_center("impress") + def test_select_text(self): - xImpressDoc = xUITest.getTopFocusWindow() - print(get_state_as_dict(xImpressDoc)) - print(xImpressDoc.getChildren()) + self.ui_test.create_doc_in_start_center("impress") - xEditWin = xImpressDoc.getChild("impress_win") + xImpressDoc = self.xUITest.getTopFocusWindow() + print(get_state_as_dict(xImpressDoc)) + print(xImpressDoc.getChildren()) - time.sleep(1) + xEditWin = xImpressDoc.getChild("impress_win") - print(get_state_as_dict(xEditWin)) + time.sleep(1) - ui_test.close_doc() + print(get_state_as_dict(xEditWin)) -def select_object(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + self.ui_test.close_doc() - ui_test = UITest(xUITest, xContext) + def test_select_object(self): - ui_test.create_doc_in_start_center("impress") + self.ui_test.create_doc_in_start_center("impress") - xImpressDoc = xUITest.getTopFocusWindow() - print(get_state_as_dict(xImpressDoc)) - print(xImpressDoc.getChildren()) + xImpressDoc = self.xUITest.getTopFocusWindow() + print(get_state_as_dict(xImpressDoc)) + print(xImpressDoc.getChildren()) - xEditWin = xImpressDoc.getChild("impress_win") + xEditWin = xImpressDoc.getChild("impress_win") - xEditWin.executeAction("SELECT", mkPropertyValues({"OBJECT":"Unnamed Drawinglayer object 1"})) - time.sleep(1) - xEditWin.executeAction("DESELECT", tuple()) + xEditWin.executeAction("SELECT", mkPropertyValues({"OBJECT":"Unnamed Drawinglayer object 1"})) + time.sleep(1) + xEditWin.executeAction("DESELECT", tuple()) - time.sleep(1) + time.sleep(1) - print(get_state_as_dict(xEditWin)) + print(get_state_as_dict(xEditWin)) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 19e380cfd980233b71915f34a1ba83d24bd5303e Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 22 05:57:06 2016 +0200 uitest: move the demo ui tests to the new unittest approach Change-Id: I70222d701191f28f9dffb3bfdfbb7510d64d0251 diff --git a/uitest/demo_ui/checkbox.py b/uitest/demo_ui/checkbox.py index 5cc456b..a15d686 100644 --- a/uitest/demo_ui/checkbox.py +++ b/uitest/demo_ui/checkbox.py @@ -9,6 +9,8 @@ from uitest_helper import UITest from helper import mkPropertyValues +from UITestCase import UITestCase + import time try: @@ -21,22 +23,20 @@ except ImportError: print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") raise -def toggle_checkbox(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) +class CheckBoxTest(UITestCase): - ui_test = UITest(xUITest, xContext) + def test_toggle_checkbox(self): - ui_test.create_doc_in_start_center("calc") + self.ui_test.create_doc_in_start_center("calc") - ui_test.execute_dialog_through_command(".uno:FormatCellDialog") - xCellsDlg = xUITest.getTopFocusWindow() - xNegativeNumRedCB = xCellsDlg.getChild("negnumred") - xNegativeNumRedCB.executeAction("CLICK",tuple()) + self.ui_test.execute_dialog_through_command(".uno:FormatCellDialog") + xCellsDlg = self.xUITest.getTopFocusWindow() + xNegativeNumRedCB = xCellsDlg.getChild("negnumred") + xNegativeNumRedCB.executeAction("CLICK",tuple()) - okBtn = xCellsDlg.getChild("ok") - okBtn.executeAction("CLICK", tuple()) + okBtn = xCellsDlg.getChild("ok") + okBtn.executeAction("CLICK", tuple()) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/demo_ui/combobox.py b/uitest/demo_ui/combobox.py index 6df980b..b33644b 100644 --- a/uitest/demo_ui/combobox.py +++ b/uitest/demo_ui/combobox.py @@ -9,25 +9,25 @@ from uitest_helper import UITest from helper import mkPropertyValues -def select_entry_pos(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) +from UITestCase import UITestCase - ui_test = UITest(xUITest, xContext) +class ComboBoxTest(UITestCase): - ui_test.create_doc_in_start_center("calc") + def test_select_entry_pos(self): - ui_test.execute_modeless_dialog_through_command(".uno:AddName") - xAddNameDlg = xUITest.getTopFocusWindow() + self.ui_test.create_doc_in_start_center("calc") - scopeCB = xAddNameDlg.getChild("scope") - props = {"POS": "1"} - actionProps = mkPropertyValues(props) - scopeCB.executeAction("SELECT", actionProps) + self.ui_test.execute_modeless_dialog_through_command(".uno:AddName") + xAddNameDlg = self.xUITest.getTopFocusWindow() - xCancelBtn = xAddNameDlg.getChild("cancel") - xCancelBtn.executeAction("CLICK", tuple()) + scopeCB = xAddNameDlg.getChild("scope") + props = {"POS": "1"} + actionProps = mkPropertyValues(props) + scopeCB.executeAction("SELECT", actionProps) - ui_test.close_doc() + xCancelBtn = xAddNameDlg.getChild("cancel") + xCancelBtn.executeAction("CLICK", tuple()) + + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/demo_ui/demo_ui.txt b/uitest/demo_ui/demo_ui.txt deleted file mode 100644 index 512da3f..0000000 --- a/uitest/demo_ui/demo_ui.txt +++ /dev/null @@ -1,15 +0,0 @@ -demo_ui.checkbox.toggle_checkbox -demo_ui.combobox.select_entry_pos -demo_ui.edit.type_text -demo_ui.gridwin.select_cell -demo_ui.gridwin.select_range -demo_ui.gridwin.extend_range -demo_ui.listbox.select_entry_pos -demo_ui.listbox.select_entry_text -demo_ui.tabcontrol.select_pos -demo_ui.tabdialog.select_tab_page_pos -demo_ui.tabdialog.select_tab_page_name -demo_ui.treelist.expand -demo_ui.spinfield.up -demo_ui.spinfield.down -demo_ui.spinfield.text diff --git a/uitest/demo_ui/edit.py b/uitest/demo_ui/edit.py index f418a36..8ddbb1c5 100644 --- a/uitest/demo_ui/edit.py +++ b/uitest/demo_ui/edit.py @@ -9,6 +9,8 @@ from uitest_helper import UITest from helper import mkPropertyValues +from UITestCase import UITestCase + try: import pyuno import uno @@ -19,26 +21,24 @@ except ImportError: print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") raise -def type_text(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) +class EditTest(UITestCase): - ui_test = UITest(xUITest, xContext) + def test_type_text(self): - ui_test.create_doc_in_start_center("calc") + self.ui_test.create_doc_in_start_center("calc") - ui_test.execute_modeless_dialog_through_command(".uno:AddName") - xAddNameDlg = xUITest.getTopFocusWindow() + self.ui_test.execute_modeless_dialog_through_command(".uno:AddName") + xAddNameDlg = self.xUITest.getTopFocusWindow() - xEdit = xAddNameDlg.getChild("edit") + xEdit = xAddNameDlg.getChild("edit") - props = {"TEXT": "simpleRangeName"} - actionProps = mkPropertyValues(props) - xEdit.executeAction("TYPE", actionProps) + props = {"TEXT": "simpleRangeName"} + actionProps = mkPropertyValues(props) + xEdit.executeAction("TYPE", actionProps) - xAddBtn = xAddNameDlg.getChild("cancel") - xAddBtn.executeAction("CLICK", tuple()) + xAddBtn = xAddNameDlg.getChild("cancel") + xAddBtn.executeAction("CLICK", tuple()) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/demo_ui/gridwin.py b/uitest/demo_ui/gridwin.py index 4ca63ac..5c2fae9 100644 --- a/uitest/demo_ui/gridwin.py +++ b/uitest/demo_ui/gridwin.py @@ -9,6 +9,8 @@ from uitest_helper import UITest from helper import mkPropertyValues +from UITestCase import UITestCase + import time try: @@ -21,53 +23,43 @@ except ImportError: print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") raise -def select_cell(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) - - ui_test = UITest(xUITest, xContext) - - ui_test.create_doc_in_start_center("calc") - xCalcDoc = xUITest.getTopFocusWindow() - xGridWindow = xCalcDoc.getChild("grid_window") +class GridWinTest(UITestCase): - selectProps = mkPropertyValues({"CELL": "B10"}) - xGridWindow.executeAction("SELECT", selectProps) + def test_select_cell(self): - ui_test.close_doc() + self.ui_test.create_doc_in_start_center("calc") + xCalcDoc = self.xUITest.getTopFocusWindow() + xGridWindow = xCalcDoc.getChild("grid_window") -def select_range(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + selectProps = mkPropertyValues({"CELL": "B10"}) + xGridWindow.executeAction("SELECT", selectProps) - ui_test = UITest(xUITest, xContext) + self.ui_test.close_doc() - ui_test.create_doc_in_start_center("calc") - xCalcDoc = xUITest.getTopFocusWindow() - xGridWindow = xCalcDoc.getChild("grid_window") + def test_select_range(self): - selectProps = mkPropertyValues({"RANGE": "B10:C20"}) - xGridWindow.executeAction("SELECT", selectProps) + self.ui_test.create_doc_in_start_center("calc") + xCalcDoc = self.xUITest.getTopFocusWindow() + xGridWindow = xCalcDoc.getChild("grid_window") - ui_test.close_doc() + selectProps = mkPropertyValues({"RANGE": "B10:C20"}) + xGridWindow.executeAction("SELECT", selectProps) -def extend_range(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + self.ui_test.close_doc() - ui_test = UITest(xUITest, xContext) + def test_extend_range(self): - ui_test.create_doc_in_start_center("calc") - xTopWindow = xUITest.getTopFocusWindow() + self.ui_test.create_doc_in_start_center("calc") + xTopWindow = self.xUITest.getTopFocusWindow() - xGridWindow = xTopWindow.getChild("grid_window") + xGridWindow = xTopWindow.getChild("grid_window") - selectProps = mkPropertyValues({"RANGE": "B10:C20"}) - xGridWindow.executeAction("SELECT", selectProps) + selectProps = mkPropertyValues({"RANGE": "B10:C20"}) + xGridWindow.executeAction("SELECT", selectProps) - select2Props = mkPropertyValues({"RANGE": "D3:F5", "EXTEND": "true"}) - xGridWindow.executeAction("SELECT", select2Props) + select2Props = mkPropertyValues({"RANGE": "D3:F5", "EXTEND": "true"}) + xGridWindow.executeAction("SELECT", select2Props) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/demo_ui/listbox.py b/uitest/demo_ui/listbox.py index 03a4c9e..f6857c2 100644 --- a/uitest/demo_ui/listbox.py +++ b/uitest/demo_ui/listbox.py @@ -9,47 +9,43 @@ from uitest_helper import UITest from helper import mkPropertyValues -def select_entry_pos(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) +from UITestCase import UITestCase - ui_test = UITest(xUITest, xContext) +class ListBoxTest(UITestCase): - ui_test.create_doc_in_start_center("calc") + def test_select_entry_pos(self): - ui_test.execute_dialog_through_command(".uno:FormatCellDialog") - xCellsDlg = xUITest.getTopFocusWindow() + self.ui_test.create_doc_in_start_center("calc") - categoryLB = xCellsDlg.getChild("categorylb") - props = {"POS": "4"} - actionProps = mkPropertyValues(props) - categoryLB.executeAction("SELECT", actionProps) + self.ui_test.execute_dialog_through_command(".uno:FormatCellDialog") + xCellsDlg = self.xUITest.getTopFocusWindow() - xOkBtn = xCellsDlg.getChild("ok") - xOkBtn.executeAction("CLICK", tuple()) + categoryLB = xCellsDlg.getChild("categorylb") + props = {"POS": "4"} + actionProps = mkPropertyValues(props) + categoryLB.executeAction("SELECT", actionProps) - ui_test.close_doc() + xOkBtn = xCellsDlg.getChild("ok") + xOkBtn.executeAction("CLICK", tuple()) -def select_entry_text(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + self.ui_test.close_doc() - ui_test = UITest(xUITest, xContext) + def test_select_entry_text(self): - ui_test.create_doc_in_start_center("calc") + self.ui_test.create_doc_in_start_center("calc") - ui_test.execute_dialog_through_command(".uno:FormatCellDialog") - xCellsDlg = xUITest.getTopFocusWindow() + self.ui_test.execute_dialog_through_command(".uno:FormatCellDialog") + xCellsDlg = self.xUITest.getTopFocusWindow() - categoryLB = xCellsDlg.getChild("categorylb") - props = {"TEXT": "Time"} + categoryLB = xCellsDlg.getChild("categorylb") + props = {"TEXT": "Time"} - actionProps = mkPropertyValues(props) - categoryLB.executeAction("SELECT", actionProps) + actionProps = mkPropertyValues(props) + categoryLB.executeAction("SELECT", actionProps) - xOkBtn = xCellsDlg.getChild("ok") - xOkBtn.executeAction("CLICK", tuple()) + xOkBtn = xCellsDlg.getChild("ok") + xOkBtn.executeAction("CLICK", tuple()) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/demo_ui/radiobutton.py b/uitest/demo_ui/radiobutton.py index bd8b1db..fef71f5 100644 --- a/uitest/demo_ui/radiobutton.py +++ b/uitest/demo_ui/radiobutton.py @@ -9,6 +9,8 @@ from uitest_helper import UITest from helper import mkPropertyValues +from UITestCase import UITestCase + import time try: @@ -21,23 +23,21 @@ except ImportError: print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") raise -def toggle_radiobutton(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) +class RadioButtonTest(UITestCase): - ui_test = UITest(xUITest, xContext) + def test_toggle_radiobutton(self): - ui_test.create_doc_in_start_center("calc") + self.ui_test.create_doc_in_start_center("calc") - ui_test.execute_dialog_through_command(".uno:FormatCellDialog") - xCellsDlg = xUITest.getTopFocusWindow() - xNegativeNumRedCB = xCellsDlg.getChild("negnumred") - xNegativeNumRedCB.executeAction("CLICK",tuple()) + self.ui_test.execute_dialog_through_command(".uno:FormatCellDialog") + xCellsDlg = self.xUITest.getTopFocusWindow() + xNegativeNumRedCB = xCellsDlg.getChild("negnumred") + xNegativeNumRedCB.executeAction("CLICK",tuple()) - okBtn = xCellsDlg.getChild("ok") - okBtn.executeAction("CLICK", tuple()) + okBtn = xCellsDlg.getChild("ok") + okBtn.executeAction("CLICK", tuple()) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/demo_ui/spinfield.py b/uitest/demo_ui/spinfield.py index 4adde0c..761c9ac 100644 --- a/uitest/demo_ui/spinfield.py +++ b/uitest/demo_ui/spinfield.py @@ -12,6 +12,8 @@ from uitest_helper import get_state_as_dict import time +from UITestCase import UITestCase + try: import pyuno import uno @@ -22,82 +24,72 @@ except ImportError: print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") raise -def up(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) - - ui_test = UITest(xUITest, xContext) - - ui_test.create_doc_in_start_center("calc") +class SpinFieldTest(UITestCase): - ui_test.execute_dialog_through_command(".uno:FormatCellDialog") - xCellsDlg = xUITest.getTopFocusWindow() + def test_up(self): - # select the numbers tab page - xCellsDlg.executeAction("SELECT", mkPropertyValues({"POS": "0"})) - - xDecimalPlaces = xCellsDlg.getChild("leadzerosed") - xDecimalPlaces.executeAction("UP", tuple()) + self.ui_test.create_doc_in_start_center("calc") - decimal_places_state = get_state_as_dict(xDecimalPlaces) - assert(decimal_places_state["Text"] == "2") + self.ui_test.execute_dialog_through_command(".uno:FormatCellDialog") + xCellsDlg = self.xUITest.getTopFocusWindow() - okBtn = xCellsDlg.getChild("ok") - okBtn.executeAction("CLICK", tuple()) + # select the numbers tab page + xCellsDlg.executeAction("SELECT", mkPropertyValues({"POS": "0"})) + + xDecimalPlaces = xCellsDlg.getChild("leadzerosed") + xDecimalPlaces.executeAction("UP", tuple()) - ui_test.close_doc() + decimal_places_state = get_state_as_dict(xDecimalPlaces) + assert(decimal_places_state["Text"] == "2") -def down(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + okBtn = xCellsDlg.getChild("ok") + okBtn.executeAction("CLICK", tuple()) - ui_test = UITest(xUITest, xContext) + self.ui_test.close_doc() - ui_test.create_doc_in_start_center("calc") + def test_down(self): - ui_test.execute_dialog_through_command(".uno:FormatCellDialog") - xCellsDlg = xUITest.getTopFocusWindow() + self.ui_test.create_doc_in_start_center("calc") - # select the numbers tab page - xCellsDlg.executeAction("SELECT", mkPropertyValues({"POS": "0"})) - - xDecimalPlaces = xCellsDlg.getChild("leadzerosed") - xDecimalPlaces.executeAction("UP", tuple()) - xDecimalPlaces.executeAction("UP", tuple()) + self.ui_test.execute_dialog_through_command(".uno:FormatCellDialog") + xCellsDlg = self.xUITest.getTopFocusWindow() - decimal_places_state = get_state_as_dict(xDecimalPlaces) - assert(decimal_places_state["Text"] == "3") - - xDecimalPlaces.executeAction("DOWN", tuple()) + # select the numbers tab page + xCellsDlg.executeAction("SELECT", mkPropertyValues({"POS": "0"})) + + xDecimalPlaces = xCellsDlg.getChild("leadzerosed") + xDecimalPlaces.executeAction("UP", tuple()) + xDecimalPlaces.executeAction("UP", tuple()) - decimal_places_state = get_state_as_dict(xDecimalPlaces) - assert(decimal_places_state["Text"] == "2") + decimal_places_state = get_state_as_dict(xDecimalPlaces) + assert(decimal_places_state["Text"] == "3") + + xDecimalPlaces.executeAction("DOWN", tuple()) - okBtn = xCellsDlg.getChild("ok") - okBtn.executeAction("CLICK", tuple()) + decimal_places_state = get_state_as_dict(xDecimalPlaces) + assert(decimal_places_state["Text"] == "2") - ui_test.close_doc() + okBtn = xCellsDlg.getChild("ok") + okBtn.executeAction("CLICK", tuple()) -def text(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + self.ui_test.close_doc() - ui_test = UITest(xUITest, xContext) + def test_text(self): - ui_test.create_doc_in_start_center("calc") + self.ui_test.create_doc_in_start_center("calc") - ui_test.execute_dialog_through_command(".uno:FormatCellDialog") - xCellsDlg = xUITest.getTopFocusWindow() - - xDecimalPlaces = xCellsDlg.getChild("leadzerosed") - xDecimalPlaces.executeAction("TYPE", mkPropertyValues({"TEXT": "4"})) + self.ui_test.execute_dialog_through_command(".uno:FormatCellDialog") + xCellsDlg = self.xUITest.getTopFocusWindow() + + xDecimalPlaces = xCellsDlg.getChild("leadzerosed") + xDecimalPlaces.executeAction("TYPE", mkPropertyValues({"TEXT": "4"})) - decimal_places_state = get_state_as_dict(xDecimalPlaces) - assert(decimal_places_state["Text"] == "41") + decimal_places_state = get_state_as_dict(xDecimalPlaces) + assert(decimal_places_state["Text"] == "41") - okBtn = xCellsDlg.getChild("ok") - okBtn.executeAction("CLICK", tuple()) + okBtn = xCellsDlg.getChild("ok") + okBtn.executeAction("CLICK", tuple()) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/demo_ui/tabcontrol.py b/uitest/demo_ui/tabcontrol.py index b9d79ad..9ef9d7b 100644 --- a/uitest/demo_ui/tabcontrol.py +++ b/uitest/demo_ui/tabcontrol.py @@ -13,6 +13,8 @@ from helper import mkPropertyValues from uihelper.calc import enter_text_to_cell +from UITestCase import UITestCase + try: import pyuno import uno @@ -23,32 +25,30 @@ except ImportError: print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") raise -def select_pos(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) +class TabControlTest(UITestCase): - ui_test = UITest(xUITest, xContext) + def test_select_pos(self): - ui_test.create_doc_in_start_center("calc") + self.ui_test.create_doc_in_start_center("calc") - xCalcDoc = xUITest.getTopFocusWindow() - xGridWindow = xCalcDoc.getChild("grid_window") - enter_text_to_cell(xGridWindow, "B2", "=2+3+4") - xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "B2"})) + xCalcDoc = self.xUITest.getTopFocusWindow() + xGridWindow = xCalcDoc.getChild("grid_window") + enter_text_to_cell(xGridWindow, "B2", "=2+3+4") + xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "B2"})) - ui_test.execute_modeless_dialog_through_command(".uno:FunctionDialog") + self.ui_test.execute_modeless_dialog_through_command(".uno:FunctionDialog") - xFunctionDlg = xUITest.getTopFocusWindow() + xFunctionDlg = self.xUITest.getTopFocusWindow() - xTabs = xFunctionDlg.getChild("tabs") - xTabs.executeAction("SELECT", mkPropertyValues({"POS":"1"})) + xTabs = xFunctionDlg.getChild("tabs") + xTabs.executeAction("SELECT", mkPropertyValues({"POS":"1"})) - time.sleep(1) + time.sleep(1) - xCancelBtn = xFunctionDlg.getChild("cancel") - xCancelBtn.executeAction("CLICK", tuple()) + xCancelBtn = xFunctionDlg.getChild("cancel") + xCancelBtn.executeAction("CLICK", tuple()) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/demo_ui/tabdialog.py b/uitest/demo_ui/tabdialog.py index 09bf600..99e7b9f 100644 --- a/uitest/demo_ui/tabdialog.py +++ b/uitest/demo_ui/tabdialog.py @@ -11,44 +11,40 @@ from helper import mkPropertyValues import time -def select_tab_page_pos(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) +from UITestCase import UITestCase - ui_test = UITest(xUITest, xContext) +class TabDialogTest(UITestCase): - ui_test.create_doc_in_start_center("calc") + def test_select_tab_page_pos(self): - ui_test.execute_dialog_through_command(".uno:FormatCellDialog") - xCellsDlg = xUITest.getTopFocusWindow() + self.ui_test.create_doc_in_start_center("calc") - props = {"POS": "1"} - propsUNO = mkPropertyValues(props) - xCellsDlg.executeAction("SELECT", propsUNO) + self.ui_test.execute_dialog_through_command(".uno:FormatCellDialog") + xCellsDlg = self.xUITest.getTopFocusWindow() - xOkBtn = xCellsDlg.getChild("ok") - xOkBtn.executeAction("CLICK", tuple()) + props = {"POS": "1"} + propsUNO = mkPropertyValues(props) + xCellsDlg.executeAction("SELECT", propsUNO) - ui_test.close_doc() + xOkBtn = xCellsDlg.getChild("ok") + xOkBtn.executeAction("CLICK", tuple()) -def select_tab_page_name(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + self.ui_test.close_doc() - ui_test = UITest(xUITest, xContext) + def test_select_tab_page_name(self): - ui_test.create_doc_in_start_center("calc") + self.ui_test.create_doc_in_start_center("calc") - ui_test.execute_dialog_through_command(".uno:FormatCellDialog") - xCellsDlg = xUITest.getTopFocusWindow() + self.ui_test.execute_dialog_through_command(".uno:FormatCellDialog") + xCellsDlg = self.xUITest.getTopFocusWindow() - props = {"NAME": "Borders"} - propsUNO = mkPropertyValues(props) - xCellsDlg.executeAction("SELECT", propsUNO) + props = {"NAME": "Borders"} + propsUNO = mkPropertyValues(props) + xCellsDlg.executeAction("SELECT", propsUNO) - xOkBtn = xCellsDlg.getChild("ok") - xOkBtn.executeAction("CLICK", tuple()) + xOkBtn = xCellsDlg.getChild("ok") + xOkBtn.executeAction("CLICK", tuple()) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/demo_ui/treelist.py b/uitest/demo_ui/treelist.py index 4523dca..f1681cd 100644 --- a/uitest/demo_ui/treelist.py +++ b/uitest/demo_ui/treelist.py @@ -14,6 +14,8 @@ from uihelper.calc import enter_text_to_cell from uitest_helper import get_state_as_dict +from UITestCase import UITestCase + try: import pyuno import uno @@ -24,41 +26,39 @@ except ImportError: print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") raise -def expand(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) +class TreeListTest(UITestCase): - ui_test = UITest(xUITest, xContext) + def test_expand(self): - ui_test.create_doc_in_start_center("calc") + self.ui_test.create_doc_in_start_center("calc") - xCalcDoc = xUITest.getTopFocusWindow() - xGridWindow = xCalcDoc.getChild("grid_window") - enter_text_to_cell(xGridWindow, "B2", "=2+3+4") - xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "B2"})) + xCalcDoc = self.xUITest.getTopFocusWindow() + xGridWindow = xCalcDoc.getChild("grid_window") + enter_text_to_cell(xGridWindow, "B2", "=2+3+4") + xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "B2"})) - ui_test.execute_modeless_dialog_through_command(".uno:FunctionDialog") + self.ui_test.execute_modeless_dialog_through_command(".uno:FunctionDialog") - xFunctionDlg = xUITest.getTopFocusWindow() + xFunctionDlg = self.xUITest.getTopFocusWindow() - xTabs = xFunctionDlg.getChild("tabs") - xTabs.executeAction("SELECT", mkPropertyValues({"POS":"1"})) + xTabs = xFunctionDlg.getChild("tabs") + xTabs.executeAction("SELECT", mkPropertyValues({"POS":"1"})) - xTreelist = xTabs.getChild("struct") + xTreelist = xTabs.getChild("struct") - xTreeEntry = xTreelist.getChild('0') + xTreeEntry = xTreelist.getChild('0') - xTreeEntry.executeAction("COLLAPSE", tuple()) + xTreeEntry.executeAction("COLLAPSE", tuple()) - time.sleep(1) + time.sleep(1) - xTreeEntry.executeAction("EXPAND", tuple()) + xTreeEntry.executeAction("EXPAND", tuple()) - time.sleep(1) + time.sleep(1) - xCancelBtn = xFunctionDlg.getChild("cancel") - xCancelBtn.executeAction("CLICK", tuple()) + xCancelBtn = xFunctionDlg.getChild("cancel") + xCancelBtn.executeAction("CLICK", tuple()) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit d8b376adba93a48e77ec9e81c96744d1e4997d88 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 22 05:46:59 2016 +0200 uitest: convert all calc demos to the unittest based approach Change-Id: I6ad7898f92c74f37ed2936337d6570904860d535 diff --git a/uitest/calc_tests/calc_demo.txt b/uitest/calc_tests/calc_demo.txt deleted file mode 100644 index 1c2629e..0000000 --- a/uitest/calc_tests/calc_demo.txt +++ /dev/null @@ -1,4 +0,0 @@ -calc_tests.create_range_name.create_range_name -calc_tests.create_range_name.create_local_range_name -calc_tests.function_wizard.open_function_wizard -calc_tests.gridwindow.input diff --git a/uitest/calc_tests/create_range_name.py b/uitest/calc_tests/create_range_name.py index a2726a3..01d01fd 100644 --- a/uitest/calc_tests/create_range_name.py +++ b/uitest/calc_tests/create_range_name.py @@ -9,6 +9,8 @@ from uitest_helper import UITest from helper import mkPropertyValues +from UITestCase import UITestCase + try: import pyuno import uno @@ -19,54 +21,48 @@ except ImportError: print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") raise -def create_range_name(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) - - ui_test = UITest(xUITest, xContext) +class CreateRangeNameTest(UITestCase): - ui_test.create_doc_in_start_center("calc") + def test_create_range_name(self): - ui_test.execute_modeless_dialog_through_command(".uno:AddName") + self.ui_test.create_doc_in_start_center("calc") - xAddNameDlg = xUITest.getTopFocusWindow() + self.ui_test.execute_modeless_dialog_through_command(".uno:AddName") - props = {"TEXT": "simpleRangeName"} - actionProps = mkPropertyValues(props) + xAddNameDlg = self.xUITest.getTopFocusWindow() - xEdit = xAddNameDlg.getChild("edit") - xEdit.executeAction("TYPE", actionProps) - xAddBtn = xAddNameDlg.getChild("add") - xAddBtn.executeAction("CLICK", tuple()) + props = {"TEXT": "simpleRangeName"} + actionProps = mkPropertyValues(props) - ui_test.close_doc() + xEdit = xAddNameDlg.getChild("edit") + xEdit.executeAction("TYPE", actionProps) + xAddBtn = xAddNameDlg.getChild("add") + xAddBtn.executeAction("CLICK", tuple()) -def create_local_range_name(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + self.ui_test.close_doc() - ui_test = UITest(xUITest, xContext) + def test_create_local_range_name(self): - ui_test.create_doc_in_start_center("calc") + self.ui_test.create_doc_in_start_center("calc") - ui_test.execute_modeless_dialog_through_command(".uno:AddName") + self.ui_test.execute_modeless_dialog_through_command(".uno:AddName") - xAddNameDlg = xUITest.getTopFocusWindow() + xAddNameDlg = self.xUITest.getTopFocusWindow() - props = {"TEXT": "simpleRangeName"} - actionProps = mkPropertyValues(props) + props = {"TEXT": "simpleRangeName"} + actionProps = mkPropertyValues(props) - xEdit = xAddNameDlg.getChild("edit") - xEdit.executeAction("TYPE", actionProps) + xEdit = xAddNameDlg.getChild("edit") + xEdit.executeAction("TYPE", actionProps) - xScope = xAddNameDlg.getChild("scope") - props = {"POS": "1"} - scopeProps = mkPropertyValues(props) - xScope.executeAction("SELECT", scopeProps) + xScope = xAddNameDlg.getChild("scope") + props = {"POS": "1"} + scopeProps = mkPropertyValues(props) + xScope.executeAction("SELECT", scopeProps) - xAddBtn = xAddNameDlg.getChild("add") - xAddBtn.executeAction("CLICK", tuple()) + xAddBtn = xAddNameDlg.getChild("add") + xAddBtn.executeAction("CLICK", tuple()) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/calc_tests/function_wizard.py b/uitest/calc_tests/function_wizard.py index 1aadbe5..bbdb0c1 100644 --- a/uitest/calc_tests/function_wizard.py +++ b/uitest/calc_tests/function_wizard.py @@ -10,6 +10,8 @@ from uitest_helper import UITest from helper import mkPropertyValues import time +from UITestCase import UITestCase + try: import pyuno import uno @@ -20,25 +22,21 @@ except ImportError: print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") raise -# tdf#98427 -def open_function_wizard(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) - - ui_test = UITest(xUITest, xContext) - - ui_test.create_doc_in_start_center("calc") +class FunctionWizardTest(UITestCase): + # tdf#98427 + def test_open_function_wizard(self): + self.ui_test.create_doc_in_start_center("calc") - ui_test.execute_modeless_dialog_through_command(".uno:FunctionDialog") + self.ui_test.execute_modeless_dialog_through_command(".uno:FunctionDialog") - xFunctionDlg = xUITest.getTopFocusWindow() + xFunctionDlg = self.xUITest.getTopFocusWindow() - xArrayChkBox = xFunctionDlg.getChild("array") - xArrayChkBox.executeAction("CLICK", tuple()) + xArrayChkBox = xFunctionDlg.getChild("array") + xArrayChkBox.executeAction("CLICK", tuple()) - xCancelBtn = xFunctionDlg.getChild("cancel") - xCancelBtn.executeAction("CLICK", tuple()) + xCancelBtn = xFunctionDlg.getChild("cancel") + xCancelBtn.executeAction("CLICK", tuple()) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/calc_tests/gridwin.py b/uitest/calc_tests/gridwin.py new file mode 100644 index 0000000..7077f4b --- /dev/null +++ b/uitest/calc_tests/gridwin.py @@ -0,0 +1,45 @@ +# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +from uitest_helper import UITest + +from helper import mkPropertyValues + +from UITestCase import UITestCase + +import time + +try: + import pyuno + import uno + import unohelper +except ImportError: + print("pyuno not found: try to set PYTHONPATH and URE_BOOTSTRAP variables") + print("PYTHONPATH=/installation/opt/program") + print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") + raise + +class GridWinTest(UITestCase): + + def test_select_object(self): + + self.ui_test.create_doc_in_start_center("calc") + xCalcDoc = self.xUITest.getTopFocusWindow() + xGridWindow = xCalcDoc.getChild("grid_window") + + selectProps = mkPropertyValues({"CELL": "B10"}) + xGridWindow.executeAction("SELECT", selectProps) + + xGridWindow.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"})) + + xGridWindow.executeAction("ACTIVATE", tuple()) + + xGridWindow.executeAction("DESELECT", tuple()) + + self.ui_test.close_doc() + +# vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/calc_tests/gridwindow.py b/uitest/calc_tests/gridwindow.py index 1f01ec9..1b63fe5 100644 --- a/uitest/calc_tests/gridwindow.py +++ b/uitest/calc_tests/gridwindow.py @@ -11,6 +11,8 @@ from helper import mkPropertyValues from uihelper.calc import enter_text_to_cell +from UITestCase import UITestCase + import time try: @@ -23,43 +25,37 @@ except ImportError: print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") raise -def input(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) - - ui_test = UITest(xUITest, xContext) +class GridWindowTest(UITestCase): - ui_test.create_doc_in_start_center("calc") - xTopWindow = xUITest.getTopFocusWindow() + def test_input(self): - xGridWindow = xTopWindow.getChild("grid_window") + self.ui_test.create_doc_in_start_center("calc") + xTopWindow = self.xUITest.getTopFocusWindow() - enter_text_to_cell(xGridWindow, "C3", "=A1") - enter_text_to_cell(xGridWindow, "A1", "2") + xGridWindow = xTopWindow.getChild("grid_window") - time.sleep(2) + enter_text_to_cell(xGridWindow, "C3", "=A1") + enter_text_to_cell(xGridWindow, "A1", "2") - ui_test.close_doc() + time.sleep(2) -def special_keys(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + self.ui_test.close_doc() - ui_test = UITest(xUITest, xContext) + def test_special_keys(self): - ui_test.create_doc_in_start_center("calc") - xTopWindow = xUITest.getTopFocusWindow() + self.ui_test.create_doc_in_start_center("calc") + xTopWindow = self.xUITest.getTopFocusWindow() - xGridWindow = xTopWindow.getChild("grid_window") + xGridWindow = xTopWindow.getChild("grid_window") - selectProps = mkPropertyValues({"CELL": "C3"}) - xGridWindow.executeAction("SELECT", selectProps) + selectProps = mkPropertyValues({"CELL": "C3"}) + xGridWindow.executeAction("SELECT", selectProps) - typeProps = mkPropertyValues({"KEYCODE": "CTRL+DOWN"}) - xGridWindow.executeAction("TYPE", typeProps) + typeProps = mkPropertyValues({"KEYCODE": "CTRL+DOWN"}) + xGridWindow.executeAction("TYPE", typeProps) - time.sleep(2) + time.sleep(2) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 4fa28812f3574efaca42769e9e4ff28f7d545bd8 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Wed Jun 22 05:27:22 2016 +0200 uitest: start the switch to python's unittest Change-Id: Ic6e0d99a567b7080928accb61ed036b1c25ec7ff diff --git a/solenv/gbuild/UITest.mk b/solenv/gbuild/UITest.mk index bbe76f6..dc6ea53 100644 --- a/solenv/gbuild/UITest.mk +++ b/solenv/gbuild/UITest.mk @@ -21,7 +21,7 @@ gb_UITest_EXECUTABLE_GDB := $(PYTHON_FOR_BUILD) gb_UITest_DEPS := endif -gb_UITest_COMMAND := $(gb_UITest_EXECUTABLE) $(SRCDIR)/uitest/main.py +gb_UITest_COMMAND := $(gb_UITest_EXECUTABLE) $(SRCDIR)/uitest/test_main.py .PHONY : $(call gb_UITest_get_clean_target,%) $(call gb_UITest_get_clean_target,%) : @@ -52,13 +52,12 @@ $(call gb_UITest_get_target,%) :| $(gb_UITest_DEPS) $(gb_UITest_COMMAND) \ --soffice=path:$(INSTROOT)/$(LIBO_BIN_FOLDER)/soffice \ --userdir=$(call gb_Helper_make_url,$(dir $(call gb_UITest_get_target,$*))user) \ - --file=$(SRCDIR)/uitest/$(strip $(MODULES)) \ - $(if $(gb_CppunitTest__interactive),, \ - > $@.log 2>&1 \ - || ($(if $(value gb_CppunitTest_postprocess), \ - RET=$$?; \ - $(call gb_CppunitTest_postprocess,$(gb_UITest_EXECUTABLE_GDB),$@.core,$$RET) >> $@.log 2>&1;) \ - cat $@.log; $(gb_UITest_UNITTESTFAILED) Python $*)))) + --dir=$(SRCDIR)/uitest/$(strip $(MODULES)) \ + > $@.log 2>&1 \ + || ($(if $(value gb_CppunitTest_postprocess), \ + RET=$$?; \ + $(call gb_CppunitTest_postprocess,$(gb_UITest_EXECUTABLE_GDB),$@.core,$$RET) >> $@.log 2>&1;) \ + cat $@.log; $(gb_UITest_UNITTESTFAILED) Python $*))) # always use udkapi and URE services define gb_UITest_UITest diff --git a/uitest/UITestCase.py b/uitest/UITestCase.py new file mode 100644 index 0000000..5628d9d --- /dev/null +++ b/uitest/UITestCase.py @@ -0,0 +1,32 @@ +# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +import unittest + +from uitest_helper import UITest + +from connection import PersistentConnection, OfficeConnection + +class UITestCase(unittest.TestCase): + + def __init__(self, test_name, opts): + unittest.TestCase.__init__(self, test_name) + self.opts = opts + + def setUp(self): + self.connection = PersistentConnection(self.opts) + self.connection.setUp() + self.xContext = self.connection.getContext() + self.xUITest = self.xContext.ServiceManager.createInstanceWithContext( + "org.libreoffice.uitest.UITest", self.xContext) + + self.ui_test = UITest(self.xUITest, self.xContext) + + def tearDown(self): + self.connection.tearDown() + +# vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/calc_tests/about_test.py b/uitest/calc_tests/about_test.py index b512084..df90e7d 100644 --- a/uitest/calc_tests/about_test.py +++ b/uitest/calc_tests/about_test.py @@ -5,25 +5,23 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. # -import time - from uitest_helper import UITest -def test_about_dlg(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) +from UITestCase import UITestCase + +class AboutDlgTest(UITestCase): - ui_test = UITest(xUITest, xContext) + def test_about_dlg(self): - ui_test.create_doc_in_start_center("calc") + self.ui_test.create_doc_in_start_center("calc") - ui_test.execute_dialog_through_command(".uno:About") + self.ui_test.execute_dialog_through_command(".uno:About") - xAboutDlg = xUITest.getTopFocusWindow() + xAboutDlg = self.xUITest.getTopFocusWindow() - xCloseBtn = xAboutDlg.getChild("close") - xCloseBtn.executeAction("CLICK", tuple()) + xCloseBtn = xAboutDlg.getChild("close") + xCloseBtn.executeAction("CLICK", tuple()) - ui_test.close_doc() + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/calc_tests/calc_demo.txt b/uitest/calc_tests/calc_demo.txt index 6ff4e22..1c2629e 100644 --- a/uitest/calc_tests/calc_demo.txt +++ b/uitest/calc_tests/calc_demo.txt @@ -2,4 +2,3 @@ calc_tests.create_range_name.create_range_name calc_tests.create_range_name.create_local_range_name calc_tests.function_wizard.open_function_wizard calc_tests.gridwindow.input -calc_tests.about_test.test_about_dlg diff --git a/uitest/calc_tests/create_chart.py b/uitest/calc_tests/create_chart.py index 6ec7082..6db4d58 100644 --- a/uitest/calc_tests/create_chart.py +++ b/uitest/calc_tests/create_chart.py @@ -9,6 +9,8 @@ from uitest_helper import UITest from helper import mkPropertyValues +from UITestCase import UITestCase + import time try: @@ -21,199 +23,171 @@ except ImportError: print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") raise -def add_content_to_cell(gridwin, cell, content): - selectProps = mkPropertyValues({"CELL": cell}) - gridwin.executeAction("SELECT", selectProps) - - contentProps = mkPropertyValues({"TEXT": content}) - gridwin.executeAction("TYPE", contentProps) - - -def fill_spreadsheet(xUITest): - xCalcDoc = xUITest.getTopFocusWindow() - xGridWindow = xCalcDoc.getChild("grid_window") - - add_content_to_cell(xGridWindow, "A1", "col1") - add_content_to_cell(xGridWindow, "B1", "col2") - add_content_to_cell(xGridWindow, "C1", "col3") - add_content_to_cell(xGridWindow, "A2", "1") - add_content_to_cell(xGridWindow, "B2", "3") - add_content_to_cell(xGridWindow, "C2", "5") - - xGridWindow.executeAction("SELECT", mkPropertyValues({"RANGE": "A1:C2"})) - -def cancel_immediately(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) - - ui_test = UITest(xUITest, xContext) - - ui_test.create_doc_in_start_center("calc") +class CalcChartUIDemo(UITestCase): - fill_spreadsheet(xUITest) + def add_content_to_cell(self, gridwin, cell, content): + selectProps = mkPropertyValues({"CELL": cell}) + gridwin.executeAction("SELECT", selectProps) - ui_test.execute_dialog_through_command(".uno:InsertObjectChart") + contentProps = mkPropertyValues({"TEXT": content}) + gridwin.executeAction("TYPE", contentProps) - xChartDlg = xUITest.getTopFocusWindow() + def fill_spreadsheet(self): + xCalcDoc = self.xUITest.getTopFocusWindow() + xGridWindow = xCalcDoc.getChild("grid_window") - xCancelBtn = xChartDlg.getChild("cancel") - xCancelBtn.executeAction("CLICK", tuple()) + self.add_content_to_cell(xGridWindow, "A1", "col1") + self.add_content_to_cell(xGridWindow, "B1", "col2") + self.add_content_to_cell(xGridWindow, "C1", "col3") + self.add_content_to_cell(xGridWindow, "A2", "1") + self.add_content_to_cell(xGridWindow, "B2", "3") + self.add_content_to_cell(xGridWindow, "C2", "5") - ui_test.close_doc() + xGridWindow.executeAction("SELECT", mkPropertyValues({"RANGE": "A1:C2"})) -def create_from_first_page(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + def test_cancel_immediately(self): - ui_test = UITest(xUITest, xContext) + self.ui_test.create_doc_in_start_center("calc") - ui_test.create_doc_in_start_center("calc") + self.fill_spreadsheet() - fill_spreadsheet(xUITest) + self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart") - ui_test.execute_dialog_through_command(".uno:InsertObjectChart") + xChartDlg = self.xUITest.getTopFocusWindow() - xChartDlg = xUITest.getTopFocusWindow() - print(xChartDlg.getChildren()) - time.sleep(2) + xCancelBtn = xChartDlg.getChild("cancel") + xCancelBtn.executeAction("CLICK", tuple()) - xOkBtn = xChartDlg.getChild("finish") - xOkBtn.executeAction("CLICK", tuple()) + self.ui_test.close_doc() - time.sleep(2) + def test_create_from_first_page(self): - ui_test.close_doc() + self.ui_test.create_doc_in_start_center("calc") -def create_from_second_page(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + self.fill_spreadsheet() - ui_test = UITest(xUITest, xContext) + self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart") - ui_test.create_doc_in_start_center("calc") + xChartDlg = self.xUITest.getTopFocusWindow() + print(xChartDlg.getChildren()) + time.sleep(2) - fill_spreadsheet(xUITest) + xOkBtn = xChartDlg.getChild("finish") + xOkBtn.executeAction("CLICK", tuple()) - ui_test.execute_dialog_through_command(".uno:InsertObjectChart") + time.sleep(2) - xChartDlg = xUITest.getTopFocusWindow() - print(xChartDlg.getChildren()) - time.sleep(2) + self.ui_test.close_doc() - xNextBtn = xChartDlg.getChild("next") - xNextBtn.executeAction("CLICK", tuple()) + def test_create_from_second_page(self): - print(xChartDlg.getChildren()) + self.ui_test.create_doc_in_start_center("calc") - time.sleep(2) + self.fill_spreadsheet() - xDataInRows = xChartDlg.getChild("RB_DATAROWS") - xDataInRows.executeAction("CLICK", tuple()) + self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart") - time.sleep(2) + xChartDlg = self.xUITest.getTopFocusWindow() + print(xChartDlg.getChildren()) + time.sleep(2) - xDataInCols = xChartDlg.getChild("RB_DATACOLS") - xDataInCols.executeAction("CLICK", tuple()) + xNextBtn = xChartDlg.getChild("next") + xNextBtn.executeAction("CLICK", tuple()) - time.sleep(2) + print(xChartDlg.getChildren()) - xCancelBtn = xChartDlg.getChild("finish") - xCancelBtn.executeAction("CLICK", tuple()) + time.sleep(2) - time.sleep(5) + xDataInRows = xChartDlg.getChild("RB_DATAROWS") + xDataInRows.executeAction("CLICK", tuple()) - ui_test.close_doc() + time.sleep(2) -def deselect_chart(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + xDataInCols = xChartDlg.getChild("RB_DATACOLS") + xDataInCols.executeAction("CLICK", tuple()) - ui_test = UITest(xUITest, xContext) + time.sleep(2) - ui_test.create_doc_in_start_center("calc") + xCancelBtn = xChartDlg.getChild("finish") + xCancelBtn.executeAction("CLICK", tuple()) - fill_spreadsheet(xUITest) + time.sleep(5) - xCalcDoc = xUITest.getTopFocusWindow() - xGridWindow = xCalcDoc.getChild("grid_window") + self.ui_test.close_doc() - ui_test.execute_dialog_through_command(".uno:InsertObjectChart") + def test_deselect_chart(self): + self.ui_test.create_doc_in_start_center("calc") - xChartDlg = xUITest.getTopFocusWindow() + self.fill_spreadsheet() - xNextBtn = xChartDlg.getChild("finish") - xNextBtn.executeAction("CLICK", tuple()) + xCalcDoc = self.xUITest.getTopFocusWindow() + xGridWindow = xCalcDoc.getChild("grid_window") - xGridWindow.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""})) + self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart") - time.sleep(2) + xChartDlg = self.xUITest.getTopFocusWindow() - ui_test.close_doc() + xNextBtn = xChartDlg.getChild("finish") + xNextBtn.executeAction("CLICK", tuple()) -def activate_chart(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + xGridWindow.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""})) - ui_test = UITest(xUITest, xContext) + time.sleep(2) - ui_test.create_doc_in_start_center("calc") + self.ui_test.close_doc() - fill_spreadsheet(xUITest) + def test_activate_chart(self): - xCalcDoc = xUITest.getTopFocusWindow() - xGridWindow = xCalcDoc.getChild("grid_window") + self.ui_test.create_doc_in_start_center("calc") - ui_test.execute_dialog_through_command(".uno:InsertObjectChart") + self.fill_spreadsheet() - xChartDlg = xUITest.getTopFocusWindow() + xCalcDoc = self.xUITest.getTopFocusWindow() + xGridWindow = xCalcDoc.getChild("grid_window") - xNextBtn = xChartDlg.getChild("finish") - xNextBtn.executeAction("CLICK", tuple()) + self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart") - xGridWindow.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""})) + xChartDlg = self.xUITest.getTopFocusWindow() - time.sleep(2) + xNextBtn = xChartDlg.getChild("finish") + xNextBtn.executeAction("CLICK", tuple()) - xGridWindow.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"})) - xGridWindow.executeAction("ACTIVATE", tuple()) + xGridWindow.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""})) - time.sleep(2) + time.sleep(2) - xGridWindow.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""})) + xGridWindow.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"})) + xGridWindow.executeAction("ACTIVATE", tuple()) - ui_test.close_doc() + time.sleep(2) -def select_chart_element(xContext): - xUITest = xContext.ServiceManager.createInstanceWithContext( - "org.libreoffice.uitest.UITest", xContext) + xGridWindow.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""})) - ui_test = UITest(xUITest, xContext) + self.ui_test.close_doc() - ui_test.create_doc_in_start_center("calc") + def select_chart_element(self): - fill_spreadsheet(xUITest) + self.ui_test.create_doc_in_start_center("calc") - xCalcDoc = xUITest.getTopFocusWindow() - xGridWindow = xCalcDoc.getChild("grid_window") + self.fill_spreadsheet() - ui_test.execute_dialog_through_command(".uno:InsertObjectChart") + xCalcDoc = self.xUITest.getTopFocusWindow() + xGridWindow = xCalcDoc.getChild("grid_window") - xChartDlg = xUITest.getTopFocusWindow() + self.ui_test.execute_dialog_through_command(".uno:InsertObjectChart") - xNextBtn = xChartDlg.getChild("finish") - xNextBtn.executeAction("CLICK", tuple()) + xChartDlg = self.xUITest.getTopFocusWindow() - xGridWindow.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""})) + xNextBtn = xChartDlg.getChild("finish") + xNextBtn.executeAction("CLICK", tuple()) - time.sleep(2) + xGridWindow.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""})) - xGridWindow.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"})) - xGridWindow.executeAction("ACTIVATE", tuple()) + xGridWindow.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"})) + xGridWindow.executeAction("ACTIVATE", tuple()) - time.sleep(2) - xCalcDoc = xUITest.getTopFocusWindow() - print(xCalcDoc.getChildren()) - time.sleep(1) - ui_test.close_doc() + xCalcDoc = self.xUITest.getTopFocusWindow() + print(xCalcDoc.getChildren()) + self.ui_test.close_doc() # vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/uitest/test_main.py b/uitest/test_main.py new file mode 100644 index 0000000..2a0fca1 --- /dev/null +++ b/uitest/test_main.py @@ -0,0 +1,101 @@ +# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +import sys +import getopt +import os +import unittest +import calc_tests +import importlib +import importlib.machinery + +from UITestCase import UITestCase + +from connection import PersistentConnection, OfficeConnection + +def parseArgs(argv): + (optlist,args) = getopt.getopt(argv[1:], "hr", + ["help", "soffice=", "userdir=", "dir="]) + return (dict(optlist), args) + +def usage(): + message = """usage: {program} [option]... [task_file]..." + -h | --help: print usage information + {connection_params} + the 'task_file' parameters should be + full absolute pathnames, not URLs.""" + print(message.format(program = os.path.basename(sys.argv[0]), \ + connection_params = OfficeConnection.getHelpText())) + + +def find_test_files(dir_path): + valid_files = [] + for f in os.listdir(dir_path): + file_path = os.path.join(dir_path, f) + + # don't go through the sub-directories + if not os.path.isfile(file_path): + continue + + # ignore any non .py files + if not os.path.splitext(file_path)[1] == ".py": + continue + + # ignore the __init__.py file + # it is obviously not a test file + if f is "__init__.py": + continue + + valid_files.append(file_path) + + return valid_files + +def get_classes_of_module(module): + md = module.__dict__ + return [ md[c] for c in md if ( + isinstance(md[c], type) and md[c].__module__ == module.__name__ ) ] + +def get_test_case_classes_of_module(module): + classes = get_classes_of_module(module) + return [ c for c in classes if issubclass(c, UITestCase) ] + +def get_test_suite(opts): + test_loader = unittest.TestLoader() + test_suite = unittest.TestSuite() + + valid_test_files = find_test_files(opts['--dir']) + for test_file in valid_test_files: + module_name = os.path.splitext(os.path.split(test_file)[1])[0] + loader = importlib.machinery.SourceFileLoader(module_name, test_file) + mod = loader.load_module() + classes = get_test_case_classes_of_module(mod) + for c in classes: + test_names = test_loader.getTestCaseNames(c) + for test_name in test_names: + obj = c(test_name, opts) + test_suite.addTest(obj) + + return test_suite + + +if __name__ == '__main__': + (opts,args) = parseArgs(sys.argv) + if "-h" in opts or "--help" in opts: + usage() + sys.exit() + elif not "--soffice" in opts: + usage() + sys.exit(1) + elif not "--dir" in opts: + usage() + sys.exit() + test_suite = get_test_suite(opts) + print(test_suite) + + unittest.TextTestRunner().run(test_suite) + +# vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 660e5597813f88b1aca564198fdf5f78298adc13 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Jun 21 17:16:35 2016 +0200 uitest: we will need the python unittest module Change-Id: Ic0589be9b3769279b201dfd314534a087c7f4309 diff --git a/external/python3/ExternalPackage_python3.mk b/external/python3/ExternalPackage_python3.mk index 07a875c..347b13a 100644 --- a/external/python3/ExternalPackage_python3.mk +++ b/external/python3/ExternalPackage_python3.mk @@ -323,6 +323,17 @@ $(eval $(call gb_ExternalPackage_add_unpacked_files,python3,$(LIBO_BIN_FOLDER)/p Lib/turtle.py \ Lib/types.py \ Lib/typing.py \ + Lib/unittest/case.py \ + Lib/unittest/__init__.py \ + Lib/unittest/loader.py \ + Lib/unittest/__main__.py \ + Lib/unittest/main.py \ + Lib/unittest/mock.py \ + Lib/unittest/result.py \ + Lib/unittest/runner.py \ + Lib/unittest/signals.py \ + Lib/unittest/suite.py \ + Lib/unittest/util.py \ Lib/uu.py \ Lib/uuid.py \ Lib/warnings.py \ commit 8fbe0a6f6a32ece52f97801f33eab54705d53bc3 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Jun 21 16:50:52 2016 +0200 uitest: add treelist demo Change-Id: I41796a2a557143030cbd016399c2c1bf5cde37bd diff --git a/uitest/demo_ui/demo_ui.txt b/uitest/demo_ui/demo_ui.txt index fb39558..512da3f 100644 --- a/uitest/demo_ui/demo_ui.txt +++ b/uitest/demo_ui/demo_ui.txt @@ -9,6 +9,7 @@ demo_ui.listbox.select_entry_text demo_ui.tabcontrol.select_pos demo_ui.tabdialog.select_tab_page_pos demo_ui.tabdialog.select_tab_page_name +demo_ui.treelist.expand demo_ui.spinfield.up demo_ui.spinfield.down demo_ui.spinfield.text diff --git a/uitest/demo_ui/treelist.py b/uitest/demo_ui/treelist.py new file mode 100644 index 0000000..4523dca --- /dev/null +++ b/uitest/demo_ui/treelist.py @@ -0,0 +1,64 @@ +# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +import time + +from uitest_helper import UITest + +from helper import mkPropertyValues +from uihelper.calc import enter_text_to_cell + +from uitest_helper import get_state_as_dict + +try: + import pyuno + import uno + import unohelper +except ImportError: + print("pyuno not found: try to set PYTHONPATH and URE_BOOTSTRAP variables") + print("PYTHONPATH=/installation/opt/program") + print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") + raise + +def expand(xContext): + xUITest = xContext.ServiceManager.createInstanceWithContext( + "org.libreoffice.uitest.UITest", xContext) + + ui_test = UITest(xUITest, xContext) + + ui_test.create_doc_in_start_center("calc") + + xCalcDoc = xUITest.getTopFocusWindow() + xGridWindow = xCalcDoc.getChild("grid_window") + enter_text_to_cell(xGridWindow, "B2", "=2+3+4") + xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "B2"})) + + ui_test.execute_modeless_dialog_through_command(".uno:FunctionDialog") + + xFunctionDlg = xUITest.getTopFocusWindow() + + xTabs = xFunctionDlg.getChild("tabs") + xTabs.executeAction("SELECT", mkPropertyValues({"POS":"1"})) + + xTreelist = xTabs.getChild("struct") + + xTreeEntry = xTreelist.getChild('0') + + xTreeEntry.executeAction("COLLAPSE", tuple()) + + time.sleep(1) + + xTreeEntry.executeAction("EXPAND", tuple()) + + time.sleep(1) + + xCancelBtn = xFunctionDlg.getChild("cancel") + xCancelBtn.executeAction("CLICK", tuple()) + + ui_test.close_doc() + +# vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 71f562f8f77f14b76fde4329f7238fe2e7d6a054 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Jun 21 16:49:16 2016 +0200 uitest: support tree lists Change-Id: Iaa1a49d7e38c8d87bb3cfd749af94a0b92feee0d diff --git a/svtools/inc/uitest/uiobject.hxx b/svtools/inc/uitest/uiobject.hxx index 2949421..93cfc15 100644 --- a/svtools/inc/uitest/uiobject.hxx +++ b/svtools/inc/uitest/uiobject.hxx @@ -10,6 +10,7 @@ #include <vcl/uitest/uiobject.hxx> class SvTreeListBox; +class SvTreeListEntry; class TreeListUIObject : public WindowUIObject { @@ -20,9 +21,44 @@ public: static std::unique_ptr<UIObject> create(vcl::Window* pWindow); + virtual void execute(const OUString& rAction, + const StringMap& rParameters) override; + + virtual std::unique_ptr<UIObject> get_child(const OUString& rID) override; + + virtual std::set<OUString> get_children() const override; + protected: virtual OUString get_name() const override; + +private: + + VclPtr<SvTreeListBox> mxTreeList; +}; + +class TreeListEntryUIObject : public UIObject +{ +public: + + TreeListEntryUIObject(VclPtr<SvTreeListBox> xTreeList, SvTreeListEntry* pEntry); + + virtual StringMap get_state() override; + + virtual void execute(const OUString& rAction, + const StringMap& rParameters) override; + + virtual std::unique_ptr<UIObject> get_child(const OUString& rID) override; + + virtual std::set<OUString> get_children() const override; + + virtual OUString get_type() const override; + +private: + + VclPtr<SvTreeListBox> mxTreeList; + + SvTreeListEntry* mpEntry; }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svtools/source/uitest/uiobject.cxx b/svtools/source/uitest/uiobject.cxx index 65cd4a7..494406a 100644 --- a/svtools/source/uitest/uiobject.cxx +++ b/svtools/source/uitest/uiobject.cxx @@ -12,13 +12,58 @@ #include <svtools/treelistbox.hxx> TreeListUIObject::TreeListUIObject(VclPtr<SvTreeListBox> xTreeList): - WindowUIObject(xTreeList) + WindowUIObject(xTreeList), + mxTreeList(xTreeList) { } StringMap TreeListUIObject::get_state() { - return WindowUIObject::get_state(); + StringMap aMap = WindowUIObject::get_state(); + + aMap["SelectionCount"] = OUString::number(mxTreeList->GetSelectionCount()); + aMap["VisibleCount"] = OUString::number(mxTreeList->GetVisibleCount()); + aMap["Children"] = OUString::number(mxTreeList->GetChildCount(nullptr)); + aMap["LevelChildren"] = OUString::number(mxTreeList->GetLevelChildCount(nullptr)); + return aMap; +} + +void TreeListUIObject::execute(const OUString& rAction, + const StringMap& rParameters) +{ + if (rAction == "") + { + } + else + WindowUIObject::execute(rAction, rParameters); +} + +std::unique_ptr<UIObject> TreeListUIObject::get_child(const OUString& rID) +{ + sal_Int32 nID = rID.toInt32(); + if (nID >= 0) + { + SvTreeListEntry* pEntry = mxTreeList->GetEntry(nullptr, nID); + if (!pEntry) + return nullptr; + + return std::unique_ptr<UIObject>(new TreeListEntryUIObject(mxTreeList, pEntry)); + } + + return nullptr; +} + +std::set<OUString> TreeListUIObject::get_children() const +{ + std::set<OUString> aChildren; + + size_t nChildren = mxTreeList->GetLevelChildCount(nullptr); + for (size_t i = 0; i < nChildren; ++i) + { + aChildren.insert(OUString::number(i)); + } + + return aChildren; } OUString TreeListUIObject::get_name() const @@ -33,4 +78,66 @@ std::unique_ptr<UIObject> TreeListUIObject::create(vcl::Window* pWindow) return std::unique_ptr<UIObject>(new TreeListUIObject(pTreeList)); } +TreeListEntryUIObject::TreeListEntryUIObject(VclPtr<SvTreeListBox> xTreeList, SvTreeListEntry* pEntry): + mxTreeList(xTreeList), + mpEntry(pEntry) +{ +} + +StringMap TreeListEntryUIObject::get_state() +{ + StringMap aMap; + + aMap["Text"] = mxTreeList->GetEntryText(mpEntry); + aMap["Children"] = OUString::number(mxTreeList->GetLevelChildCount(mpEntry)); + aMap["VisibleChildCount"] = OUString::number(mxTreeList->GetVisibleChildCount(mpEntry)); + + return aMap; +} + +void TreeListEntryUIObject::execute(const OUString& rAction, const StringMap& rParameters) +{ + if (rAction == "COLLAPSE") + { + mxTreeList->Collapse(mpEntry); + } + else if (rAction == "EXPAND") + { + mxTreeList->Expand(mpEntry); + } +} + +std::unique_ptr<UIObject> TreeListEntryUIObject::get_child(const OUString& rID) +{ + sal_Int32 nID = rID.toInt32(); + if (nID >= 0) + { + SvTreeListEntry* pEntry = mxTreeList->GetEntry(mpEntry, nID); + if (!pEntry) + return nullptr; + + return std::unique_ptr<UIObject>(new TreeListEntryUIObject(mxTreeList, pEntry)); + } + + return nullptr; +} + +std::set<OUString> TreeListEntryUIObject::get_children() const +{ + std::set<OUString> aChildren; + + size_t nChildren = mxTreeList->GetLevelChildCount(mpEntry); + for (size_t i = 0; i < nChildren; ++i) + { + aChildren.insert(OUString::number(i)); + } + + return aChildren; +} + +OUString TreeListEntryUIObject::get_type() const +{ + return OUString("TreeListEntry"); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 33d873b61f2b966c11019fc5e435b04aa0a1476d Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Jun 21 16:45:39 2016 +0200 uitest: add tabcontrol demo Change-Id: Ibcdf5c1a43ed943c22745545257d5d324ed139ec diff --git a/uitest/demo_ui/demo_ui.txt b/uitest/demo_ui/demo_ui.txt index 67600ef..fb39558 100644 --- a/uitest/demo_ui/demo_ui.txt +++ b/uitest/demo_ui/demo_ui.txt @@ -6,6 +6,7 @@ demo_ui.gridwin.select_range demo_ui.gridwin.extend_range demo_ui.listbox.select_entry_pos demo_ui.listbox.select_entry_text +demo_ui.tabcontrol.select_pos demo_ui.tabdialog.select_tab_page_pos demo_ui.tabdialog.select_tab_page_name demo_ui.spinfield.up diff --git a/uitest/demo_ui/tabcontrol.py b/uitest/demo_ui/tabcontrol.py new file mode 100644 index 0000000..b9d79ad --- /dev/null +++ b/uitest/demo_ui/tabcontrol.py @@ -0,0 +1,54 @@ +# -*- Mode: python; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# + +import time + +from uitest_helper import UITest + +from helper import mkPropertyValues + +from uihelper.calc import enter_text_to_cell + +try: + import pyuno + import uno + import unohelper +except ImportError: + print("pyuno not found: try to set PYTHONPATH and URE_BOOTSTRAP variables") + print("PYTHONPATH=/installation/opt/program") + print("URE_BOOTSTRAP=file:///installation/opt/program/fundamentalrc") + raise + +def select_pos(xContext): + xUITest = xContext.ServiceManager.createInstanceWithContext( + "org.libreoffice.uitest.UITest", xContext) + + ui_test = UITest(xUITest, xContext) + + ui_test.create_doc_in_start_center("calc") + + xCalcDoc = xUITest.getTopFocusWindow() + xGridWindow = xCalcDoc.getChild("grid_window") + enter_text_to_cell(xGridWindow, "B2", "=2+3+4") + xGridWindow.executeAction("SELECT", mkPropertyValues({"CELL": "B2"})) + + ui_test.execute_modeless_dialog_through_command(".uno:FunctionDialog") + + xFunctionDlg = xUITest.getTopFocusWindow() + + xTabs = xFunctionDlg.getChild("tabs") + xTabs.executeAction("SELECT", mkPropertyValues({"POS":"1"})) + + time.sleep(1) + + xCancelBtn = xFunctionDlg.getChild("cancel") + xCancelBtn.executeAction("CLICK", tuple()) + + ui_test.close_doc() + +# vim:set shiftwidth=4 softtabstop=4 expandtab: */ + commit 2e2d4a326e25b460b0590d1cccb0ae2834743fc0 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Jun 21 16:44:30 2016 +0200 uitest: add support for TabControl Change-Id: I4cdffe62cdabaf110eaaeb0d31a45c44833d354a diff --git a/include/vcl/tabctrl.hxx b/include/vcl/tabctrl.hxx index 2d60b40..7597662 100644 --- a/include/vcl/tabctrl.hxx +++ b/include/vcl/tabctrl.hxx @@ -191,6 +191,8 @@ public: std::vector<sal_uInt16> GetPageIDs() const; + virtual FactoryFunction GetUITestFactory() const override; + virtual void queue_resize(StateChangedType eReason = StateChangedType::Layout) override; }; diff --git a/include/vcl/uitest/uiobject.hxx b/include/vcl/uitest/uiobject.hxx index 0baddeb..011a2d4 100644 --- a/include/vcl/uitest/uiobject.hxx +++ b/include/vcl/uitest/uiobject.hxx @@ -19,6 +19,7 @@ #include <vcl/lstbox.hxx> #include <vcl/combobox.hxx> #include <vcl/spinfld.hxx> +#include <vcl/tabctrl.hxx> #include <vcl/dllapi.h> @@ -328,4 +329,26 @@ protected: virtual OUString get_name() const override; }; +class UITEST_DLLPUBLIC TabControlUIObject : public WindowUIObject +{ +private: + VclPtr<TabControl> mxTabControl; + +public: + + TabControlUIObject(VclPtr<TabControl> mxTabControl); + virtual ~TabControlUIObject(); + + virtual void execute(const OUString& rAction, + const StringMap& rParameters) override; + + virtual StringMap get_state() override; + + static std::unique_ptr<UIObject> create(vcl::Window* pWindow); + +protected: + + virtual OUString get_name() const override; +}; + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/control/tabctrl.cxx b/vcl/source/control/tabctrl.cxx index 70869bc..903d3bb 100644 --- a/vcl/source/control/tabctrl.cxx +++ b/vcl/source/control/tabctrl.cxx @@ -31,6 +31,7 @@ #include <vcl/layout.hxx> #include <vcl/lstbox.hxx> #include <vcl/settings.hxx> +#include <vcl/uitest/uiobject.hxx> #include "controldata.hxx" #include "svdata.hxx" @@ -2193,4 +2194,9 @@ std::vector<sal_uInt16> TabControl::GetPageIDs() const return aIDs; } +FactoryFunction TabControl::GetUITestFactory() const +{ + return TabControlUIObject::create; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/uitest/uiobject.cxx b/vcl/source/uitest/uiobject.cxx index 27c7af5..4d33f9c 100644 --- a/vcl/source/uitest/uiobject.cxx +++ b/vcl/source/uitest/uiobject.cxx @@ -871,4 +871,52 @@ std::unique_ptr<UIObject> SpinFieldUIObject::create(vcl::Window* pWindow) return std::unique_ptr<UIObject>(new SpinFieldUIObject(pSpinField)); } +TabControlUIObject::TabControlUIObject(VclPtr<TabControl> xTabControl): + WindowUIObject(xTabControl), + mxTabControl(xTabControl) +{ +} + +TabControlUIObject::~TabControlUIObject() +{ +} + +void TabControlUIObject::execute(const OUString& rAction, + const StringMap& rParameters) +{ + if (rAction == "SELECT") + { + if (rParameters.find("POS") != rParameters.end()) + { + auto itr = rParameters.find("POS"); + sal_uInt32 nPos = itr->second.toUInt32(); + std::vector<sal_uInt16> aIds = mxTabControl->GetPageIDs(); + mxTabControl->SelectTabPage(aIds[nPos]); + } + } + else + WindowUIObject::execute(rAction, rParameters); +} + +StringMap TabControlUIObject::get_state() +{ + StringMap aMap = WindowUIObject::get_state(); + + return aMap; +} + +OUString TabControlUIObject::get_name() const +{ + return OUString("TabControlUIObject"); +} + +std::unique_ptr<UIObject> TabControlUIObject::create(vcl::Window* pWindow) +{ + TabControl* pTabControl = dynamic_cast<TabControl*>(pWindow); + assert(pTabControl); + return std::unique_ptr<UIObject>(new TabControlUIObject(pTabControl)); +} + + + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 47b9dad7976fe0611b60efa8c38c148445c99949 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Tue Jun 21 16:42:46 2016 +0200 remove unnecessary whitespace Change-Id: Ia9c9accf3c5509393c3e09692b6a7eae756907f9 diff --git a/formula/source/ui/dlg/structpg.hxx b/formula/source/ui/dlg/structpg.hxx index e88ec26..db53c6c 100644 --- a/formula/source/ui/dlg/structpg.hxx +++ b/formula/source/ui/dlg/structpg.hxx @@ -35,7 +35,7 @@ namespace formula { class IFormulaToken; -class StructListBox : public SvTreeListBox +class StructListBox : public SvTreeListBox { private: commit cdfdf580f70e74dff393f9a0a6bac5c32264a42c Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Mon Jun 20 06:53:43 2016 +0200 remove visual noise Change-Id: Ia4b0439af933653bcff5aed9127b2503c622ce0e diff --git a/include/svtools/treelistbox.hxx b/include/svtools/treelistbox.hxx index 9a6a2ed..88d39df 100644 --- a/include/svtools/treelistbox.hxx +++ b/include/svtools/treelistbox.hxx @@ -152,10 +152,6 @@ public: bool IsEditable() const { return bool(nFlags & SvLBoxTabFlags::EDITABLE); } }; -// ********************************************************************* -// ****************************** Items ******************************** -// ********************************************************************* - class SVT_DLLPUBLIC SvLBoxItem { public: @@ -176,10 +172,6 @@ public: virtual void Clone(SvLBoxItem* pSource) = 0; }; -// ********************************************************************* -// ****************************** SvTreeListBox ************************ -// ********************************************************************* - #define WB_FORCE_SELECTION ((WinBits)0x8000) enum class DragDropMode @@ -200,7 +192,6 @@ namespace o3tl template<> struct typed_flags<DragDropMode> : is_typed_flags<DragDropMode, 0x003f> {}; } - enum class SvTreeListBoxFlags { NONE = 0x0000, commit e8b6bcc65f2870562da16d65f4ea2bfb70bd7886 Author: Markus Mohrhard <markus.mohrh...@googlemail.com> Date: Mon Jun 20 03:06:43 2016 +0200 uitest: add initial version for calc element demo Change-Id: I09b724cb80d75b17fd3ad5f3736245f9fca1d17a diff --git a/uitest/calc_tests/create_chart.py b/uitest/calc_tests/create_chart.py index 1e72df7..6ec7082 100644 --- a/uitest/calc_tests/create_chart.py +++ b/uitest/calc_tests/create_chart.py @@ -183,4 +183,37 @@ def activate_chart(xContext): ui_test.close_doc() +def select_chart_element(xContext): + xUITest = xContext.ServiceManager.createInstanceWithContext( + "org.libreoffice.uitest.UITest", xContext) + + ui_test = UITest(xUITest, xContext) + + ui_test.create_doc_in_start_center("calc") + + fill_spreadsheet(xUITest) + + xCalcDoc = xUITest.getTopFocusWindow() + xGridWindow = xCalcDoc.getChild("grid_window") + + ui_test.execute_dialog_through_command(".uno:InsertObjectChart") + + xChartDlg = xUITest.getTopFocusWindow() + + xNextBtn = xChartDlg.getChild("finish") + xNextBtn.executeAction("CLICK", tuple()) + + xGridWindow.executeAction("DESELECT", mkPropertyValues({"OBJECT": ""})) + + time.sleep(2) + + xGridWindow.executeAction("SELECT", mkPropertyValues({"OBJECT": "Object 1"})) + xGridWindow.executeAction("ACTIVATE", tuple()) + + time.sleep(2) + xCalcDoc = xUITest.getTopFocusWindow() + print(xCalcDoc.getChildren()) + time.sleep(1) + ui_test.close_doc() + # vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits