diff options
5 files changed, 158 insertions, 150 deletions
diff --git a/testautomation/extensions/optional/includes/fileopen.inc b/testautomation/extensions/optional/includes/fileopen.inc index 6d457df6d58e..ad700a404005 100755 --- a/testautomation/extensions/optional/includes/fileopen.inc +++ b/testautomation/extensions/optional/includes/fileopen.inc @@ -70,12 +70,16 @@ testcase tExtensionFileOpen printlog( "Reopen Extension Manager UI, click Add.. and check the directory" ) ToolsPackageManager + kontext "PackageManager" if ( PackageManager.exists( 3 ) ) then Add.click() + Kontext "OeffnenDlg" if ( OeffnenDlg.exists( 2 ) ) then - DateiAuswahl.select( DateiAuswahl.getItemCount() ) + + printlog( "Select the last item in the list which should be the extension" ) + DateiAuswahl.select( Dateiauswahl.getItemCount() ) cString = DateiAuswahl.getSelText() if ( cString <> EXTENSION_NAME ) then warnlog( "Incorrect extension listed. Please check path and filename" ) @@ -85,11 +89,13 @@ testcase tExtensionFileOpen else printlog( "Found correct extension, the dialog remembers the path" ) endif + kontext "OeffnenDlg" OeffnenDlg.cancel() else warnlog( "Could not access Add Extensions Dialog" ) endif + kontext "PackageManager" PackageManager.close() else diff --git a/testautomation/framework/required/f_tools_customize.bas b/testautomation/framework/required/f_tools_customize.bas index 0b437177112e..7adc48243085 100755 --- a/testautomation/framework/required/f_tools_customize.bas +++ b/testautomation/framework/required/f_tools_customize.bas @@ -39,6 +39,8 @@ sub main + GLOBAL_USE_NEW_SLEEP = TRUE + use "framework\required\includes\tools_customize.inc" dim cApp as string diff --git a/testautomation/framework/required/includes/tools_customize.inc b/testautomation/framework/required/includes/tools_customize.inc index 69d09f9252f7..56654d8a9c39 100755 --- a/testautomation/framework/required/includes/tools_customize.inc +++ b/testautomation/framework/required/includes/tools_customize.inc @@ -39,41 +39,24 @@ testcase tUpdtCustomize( cApp as string ) - '///<h1>Update test for the Tools/Customize Dialog</h1> - '///<ul> - const CANCEL_BUTTON = 1 - dim brc as boolean - - '///+<li>Open a new document (abort test on failure)</li> - brc = hCreateDocument() - if ( not brc ) then - warnlog( "Abort: Failed to create requested document: " & gApplication ) - goto endsub + printlog( "Tools/Customize dialog" ) + const CLOSE_METHOD = 1 ' 1 = Cancel button + + if ( hCreateDocument() ) then + if ( hToolsCustomizeOpen() ) then + hUpdtToolsCustomizeKeyboard() + hUpdtToolsCustomizeMenu() + hUpdtToolsCustomizeToolbars() + hUpdtToolsCustomizeEvents() + hToolsCustomizeClose( CLOSE_METHOD ) + else + warnlog( "Tools/Customize dialog did not open" ) + endif + hDestroyDocument + else + warnlog( "Failed to create initial document" ) endif - '///+<li>Open Tools Customize</li> - brc = hToolsCustomizeOpen() - - '///+<li>Look at the Keyboard-Tabpage</li> - hUpdtToolsCustomizeKeyboard() - - '///+<li>Look at the Menu-Tabpage</li> - hUpdtToolsCustomizeMenu() - - '///+<li>Look at the Toolbars-Tabpage</li> - hUpdtToolsCustomizeToolbars() - - '///+<li>Look at the Events-Tabpage</li> - hUpdtToolsCustomizeEvents() - - '///+<li>Close Tools Customize</li> - brc = hToolsCustomizeClose( CANCEL_BUTTON ) - - '///+<li>Close the document</li> - brc = hDestroyDocument - - '///</ul> - endcase '******************************************************************************* @@ -142,7 +125,7 @@ function hUpdtToolsCustomizeMenu() '///+<li>Click the Menu List-Button</li> printlog( CFN & "Click the menu listbutton" ) kontext "TabCustomizeMenu" - MenuBtn.click() + hOpenMenuButton( MenuBtn ) ' MenuBtn.OpenMenu() '///+<li>Select the first entry (Move...) to open the Menu Organiser</li> printlog( CFN & "Select Move..." ) @@ -165,7 +148,7 @@ function hUpdtToolsCustomizeMenu() '///+<li>Click the Menu List-Button</li> printlog( CFN & "Click the menu listbutton" ) kontext "TabCustomizeMenu" - MenuBtn.click() + hOpenMenuButton( MenuBtn ) ' MenuBtn.OpenMenu() '///+<li>Select the second entry (Rename...) to open the Rename dialog</li> printlog( CFN & "Select Rename..." ) @@ -179,7 +162,7 @@ function hUpdtToolsCustomizeMenu() '///+<li>Click the Menu List-Button</li> printlog( CFN & "Click the menu listbutton" ) kontext "TabCustomizeMenu" - MenuBtn.click() + hOpenMenuButton( MenuBtn ) ' MenuBtn.OpenMenu() '///+<li>Select the third entry (Delete) to delete the new menu<br> '///+Note that there will be no warning as the menu is empty</li> @@ -361,8 +344,9 @@ function hUpdtToolsCustomizeToolbars() '///+<li>Access the "Toolbar"-Button and rename the toolbar</li> printlog( CFN & "Rename the toolbar via Toolbar-Button" ) kontext "TabCustomizeToolbars" - MenuBtn.click() - waitslot + hOpenMenuButton( MenuBtn ) ' MenuBtn.OpenMenu() + + printlog( "Select rename" ) hMenuSelectNr( 1 ) '///+<li>Cancel the renaming-dialog</li> @@ -379,8 +363,9 @@ function hUpdtToolsCustomizeToolbars() '///+Note that there will be no deletion warning</li> printlog( CFN & "Delete the toolbar via Toolbar-Button" ) kontext "TabCustomizeToolbars" - MenuBtn.click() - waitslot + hOpenMenuButton( MenuBtn ) ' MenuBtn.OpenMenu() + + printlog( "Select delete" ) hMenuSelectNr( 2 ) '///+<li>Click the "Add Commands..." button</li> @@ -399,7 +384,6 @@ function hUpdtToolsCustomizeToolbars() endif '///+<li>Click "Down"</li> - WaitSlot() printlog( CFN & "Down..." ) if ( BtnDown.isEnabled() ) then BtnDown.click() @@ -846,4 +830,91 @@ function hToolsCustomizeTestSaveIn( iItems as integer ) as boolean end function +'******************************************************************************* +function hOpenMenuButton( oControl as object ) as integer + + ' This function is very evil. + ' It was written to hopefully workaround the infamous menubutton which is a button + ' that - when clicked - opens a menu. This feature is shaky and depends on + ' a lot of factors. There is a simple working implemantation in t_menu.inc + ' which has the drawback of being absolutely slow, costing the tools_customize + ' test a lot of time waiting for the control (30% of testtime spent waiting). + ' This approach tries to be dynamic: Machines that can do it the fast way + ' use it automatically, machines that are too slow get two retries with the + ' slower approach. + ' The menubutton is one of the last remaining places where none of the + ' speed optmizations and enhancements apply, so neither WaitSlot() nor + ' synchronous slot execution help here. + + dim iClick as integer + dim bUseSlowMethod as boolean : bUseSlowMethod = false + + const CFN = "hOpenMenuButton: " + + hOpenMenuButton() = -1 ' this is the general failure returnvalue + + for iClick = 1 to 3 + + if ( bUseSlowMethod ) then + wait( 1000 ) + oControl.OpenMenu() + wait( 3000 ) + else + oControl.click() + endif + + try + hOpenMenuButton() = MenuGetItemCount + printlog( CFN & "Success on " & iClick & ". attempt" ) + exit function + catch + qaerrorlog( CFN & "#i96753 - Failed to retrieve itemcount from Menu-/Command-button" ) + bUseSlowMethod = true + endcatch + + next iClick + +end function + +'******************************************************************************* + +function hClickCommandButton( iItemToClick as integer ) as boolean + + const CFN = "hClickCommandButton::" + printlog( CFN & "Enter" ) + + dim brc as boolean 'a multi purpose boolean returnvalue + dim iMenuItems as integer + + iMenuItems = hOpenMenuButton( Command ) + + ' exit on error + if ( iMenuItems < 0 ) then + warnlog( CFN & "Menu apparently not open, giving up." ) + hClickCommandButton() = false + exit function + endif + + hMenuSelectNr( iItemToClick ) + wait( 500 ) + ' check for the rename dialog (menu) + kontext "CustomizeMenuReName" + if ( CustomizeMenuReName.exists() ) then + printlog( CFN & "Opened dialog: Rename Menu" ) + hClickCommandButton() = true + exit function + endif + + ' check for the rename dialog (toolbar) + kontext "CustomizeToolbarsRename" + if ( CustomizeToolbarsRename.exists() ) then + printlog( CFN & "Opened dialog: Rename Toolbar" ) + hClickCommandButton() = true + exit function + endif + + printlog( CFN & "Exit" ) + hClickCommandButton() = true + +end function diff --git a/testautomation/framework/tools/includes/customize_tools.inc b/testautomation/framework/tools/includes/customize_tools.inc index d072d74dfbaf..8c0cbf80f1c9 100755 --- a/testautomation/framework/tools/includes/customize_tools.inc +++ b/testautomation/framework/tools/includes/customize_tools.inc @@ -316,24 +316,29 @@ function hDeselectSeparator() as integer const CFN = "hDeselectSeparator::" kontext "ToolsCustomizeToolbars" - iCurrentItem = ToolbarContents.getSelIndex() - cString = ToolbarContents.getSelText() + if ( ToolbarContents.getItemCount > 0 ) then - '///+<li>Check whether the selected item contains a number of minus-chars (---)</li> - if ( instr( cString , "----" ) ) then - - '///+<li>If we are at the beginning of the list: Move up</li> - if ( iCurrentItem = 1 ) then - irc = 2 - ToolbarContents.select( irc ) - printlog( CFN & " Moved away from separator (up)" ) - else - '///+<li>If we are somewhere else in the list, move down</li> - irc = iCurrentItem - 1 - ToolbarContents.select( irc ) - printlog( CFN & " Moved away from separator (down)" ) - endif + iCurrentItem = ToolbarContents.getSelIndex() + cString = ToolbarContents.getSelText() + + '///+<li>Check whether the selected item contains a number of minus-chars (---)</li> + if ( instr( cString , "----" ) ) then + '///+<li>If we are at the beginning of the list: Move up</li> + if ( iCurrentItem = 1 ) then + irc = 2 + ToolbarContents.select( irc ) + printlog( CFN & " Moved away from separator (up)" ) + else + '///+<li>If we are somewhere else in the list, move down</li> + irc = iCurrentItem - 1 + ToolbarContents.select( irc ) + printlog( CFN & " Moved away from separator (down)" ) + endif + + endif + else + irc = 0 endif hDeselectSeparator() = irc @@ -341,85 +346,5 @@ function hDeselectSeparator() as integer end function - '******************************************************************************* -function hClickCommandButton( iItemToClick as integer ) as boolean - - - '///<h3>Click a given entry on the command button</h3><br> - - '///<u>Parameter(s):</u><br> - '///<ol> - - '///+<li>Position of the item to click (Integer)</li> - '///<ul> - '///+<li>Only active items are selectable</li> - '///+<li>Position must be > than 0 and ≤ number of active items in menu</li> - '///+<li>Set context (kontext) before calling this function</li> - '///</ul> - - '///</ol> - - - '///<u>Returns:</u><br> - '///<ol> - '///+<li>Success or failure (Boolean)</li> - '///<ul> - '///+<li>TRUE on success</li> - '///+<li>FALSE on failure or unknown status</li> - '///</ul> - '///</ol> - - const CFN = "hClickCommandButton::" - printlog( CFN & "Enter" ) - - dim brc as boolean 'a multi purpose boolean returnvalue - dim iMenuItems as integer - - '///<u>Description:</u> - '///<ul> - '///+<li>Click the command button</li> - command.click() - - '///+<li>Verify that the menu is open</li> - try - iMenuItems = hMenuItemGetCount() - catch - qaerrorlog( CFN & "Menu not open" ) - hClickCommandButton() = false - exit function - endcatch - - '///+<li>Verify that the selected menuitem is valid</li> - printlog( CFN & "Found items: " & iMenuItems ) - if ( iItemToClick > iMenuItems ) then - warnlog( CFN & "#i90134# Selected item is not available: " & iItemToClick ) - hClickCommandButton() = false - exit function - endif - - '///+<li>Now click on the requested item</li> - hMenuSelectNr( iItemToClick ) - - '///+<li>Look for the Menu renaming dialog</li> - kontext "CustomizeMenuReName" - if ( CustomizeMenuReName.exists( 1 ) ) then - printlog( CFN & "Opened dialog: Rename Menu" ) - hClickCommandButton() = true - exit function - endif - - '///+<li>Look for the Toolbar renaming dialog</li> - kontext "CustomizeToolbarsRename" - if ( CustomizeToolbarsRename.exists() ) then - printlog( CFN & "Opened dialog: Rename Toolbar" ) - hClickCommandButton() = true - exit function - endif - '///</ul> - - printlog( CFN & "Exit" ) - hClickCommandButton() = true - -end function diff --git a/testautomation/global/tools/includes/required/t_dir.inc b/testautomation/global/tools/includes/required/t_dir.inc index ca88c6eda974..de9bcfddcbd5 100755 --- a/testautomation/global/tools/includes/required/t_dir.inc +++ b/testautomation/global/tools/includes/required/t_dir.inc @@ -180,23 +180,27 @@ function GetDirList ( sPath$, sMatch$ ,lsFile() as String ) as integer '/// Get Subdirectories from a directory and append them to a list (<b>with</b> path) '/// <u>Input</u>: Directory with complete path; Search Pattern, e.g *; List '/// <u>Return</u>: count of appended entries; updated list - Dim Count% - Dim i as Integer - Dim Verzeichnis as String + Dim iFolderCount as integer + Dim Folder as String ' at the end of the string has to be teh path seperator, else the dir-command doesn't work if right ( sPath$, 1 ) <> gPathSigne then sPath$ = sPath$ + gPathSigne - Verzeichnis = app.Dir( sPath$ + sMatch$ , 16) - Count% = 0 + Folder = app.Dir( sPath$ + sMatch$ , 16) + iFolderCount = 0 - do until Len(Verzeichnis) = 0 - if Verzeichnis <> "." AND Verzeichnis <> ".." AND Lcase(Verzeichnis) <> ".svn" then + do until Len( Folder ) = 0 + select case ( lcase( Folder ) ) + case "." + case ".." + case ".svn" + case ".hg" + case default lsFile(0) = Val(lsFile(0)) + 1 - lsFile( lsFile(0) ) = sPath$ + Verzeichnis + gPathSigne - Count% = Count% + 1 - end if - Verzeichnis = app.Dir + lsFile( lsFile(0) ) = sPath$ + Folder + gPathSigne + iFolderCount = iFolderCount + 1 + end select + Folder = app.Dir loop - GetDirList = Count% + GetDirList = iFolderCount end function ' '------------------------------------------------------------------------------- |