forked from qt-creator/qt-creator
SquishTests: Update tests for Welcome screen
Some tests are failing because of QTCREATORBUG-30466 unless someone resizes Creator's windows manually. Task-number: QTCREATORBUG-30466 Change-Id: Ibeecc2abd85839be3497691912e411862c465a89 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -9,11 +9,11 @@ def openQbsProject(projectPath):
|
|||||||
def openQmakeProject(projectPath, targets=Targets.desktopTargetClasses(), fromWelcome=False):
|
def openQmakeProject(projectPath, targets=Targets.desktopTargetClasses(), fromWelcome=False):
|
||||||
cleanUpUserFiles(projectPath)
|
cleanUpUserFiles(projectPath)
|
||||||
if fromWelcome:
|
if fromWelcome:
|
||||||
wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton('Open Project...')
|
wsButton = getWelcomeScreenSideBarButton('Open Project...')
|
||||||
if not all((wsButtonFrame, wsButtonLabel)):
|
if not object.exists(wsButton):
|
||||||
test.fatal("Could not find 'Open Project...' button on Welcome Page.")
|
test.fatal("Could not find 'Open Project...' button on Welcome Page.")
|
||||||
return []
|
return []
|
||||||
mouseClick(wsButtonLabel)
|
mouseClick(wsButton)
|
||||||
else:
|
else:
|
||||||
invokeMenuItem("File", "Open File or Project...")
|
invokeMenuItem("File", "Open File or Project...")
|
||||||
selectFromFileDialog(projectPath)
|
selectFromFileDialog(projectPath)
|
||||||
@@ -60,11 +60,11 @@ def __createProjectOrFileSelectType__(category, template, fromWelcome = False, i
|
|||||||
if fromWelcome:
|
if fromWelcome:
|
||||||
if not isProject:
|
if not isProject:
|
||||||
test.fatal("'Create Project...' on Welcome screen only handles projects nowadays.")
|
test.fatal("'Create Project...' on Welcome screen only handles projects nowadays.")
|
||||||
wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton("Create Project...")
|
wsButton = getWelcomeScreenSideBarButton("Create Project...")
|
||||||
if not all((wsButtonFrame, wsButtonLabel)):
|
if not object.exists(wsButton):
|
||||||
test.fatal("Could not find 'Create Project...' button on Welcome Page")
|
test.fatal("Could not find 'Create Project...' button on Welcome Page")
|
||||||
return []
|
return []
|
||||||
mouseClick(wsButtonLabel)
|
mouseClick(wsButton)
|
||||||
elif isProject:
|
elif isProject:
|
||||||
invokeMenuItem("File", "New Project...")
|
invokeMenuItem("File", "New Project...")
|
||||||
else:
|
else:
|
||||||
|
@@ -4,30 +4,11 @@
|
|||||||
def __childrenOfType__(parentObject, typeName):
|
def __childrenOfType__(parentObject, typeName):
|
||||||
return [child for child in object.children(parentObject) if className(child) == typeName]
|
return [child for child in object.children(parentObject) if className(child) == typeName]
|
||||||
|
|
||||||
def __getWelcomeScreenButtonHelper__(buttonLabel, widgetWithQFrames, isUrlButton = False):
|
|
||||||
frames = __childrenOfType__(widgetWithQFrames, 'QWidget')
|
|
||||||
for frame in frames:
|
|
||||||
childCount = 1 # incorrect but okay for framed sidebar buttons
|
|
||||||
if isUrlButton:
|
|
||||||
childCount = len(__childrenOfType__(frame, 'QLabel'))
|
|
||||||
for occurrence in range(1, childCount + 1):
|
|
||||||
label = getChildByClass(frame, 'QLabel', occurrence)
|
|
||||||
if label is None:
|
|
||||||
continue
|
|
||||||
if str(label.text) == buttonLabel:
|
|
||||||
return frame, label
|
|
||||||
return None, None
|
|
||||||
|
|
||||||
def getWelcomeScreenSideBarButton(buttonLabel, isUrlButton = False):
|
def getWelcomeScreenSideBarButton(buttonLabel):
|
||||||
sideBar = waitForObject("{container={type='Welcome::Internal::SideArea' unnamed='1' "
|
return ("{text='%s' type='QPushButton' unnamed='1' visible='1' "
|
||||||
"window=':Qt Creator_Core::Internal::MainWindow'} type='QWidget' "
|
"window=':Qt Creator_Core::Internal::MainWindow'}" % buttonLabel)
|
||||||
"unnamed='1'}")
|
|
||||||
return __getWelcomeScreenButtonHelper__(buttonLabel, sideBar, isUrlButton)
|
|
||||||
|
|
||||||
def getWelcomeScreenBottomButton(buttonLabel):
|
|
||||||
bottomArea = waitForObject("{type='Welcome::Internal::BottomArea' unnamed='1' "
|
|
||||||
"window=':Qt Creator_Core::Internal::MainWindow'}")
|
|
||||||
return __getWelcomeScreenButtonHelper__(buttonLabel, bottomArea, False)
|
|
||||||
|
|
||||||
def getWelcomeTreeView(treeViewLabel):
|
def getWelcomeTreeView(treeViewLabel):
|
||||||
try:
|
try:
|
||||||
@@ -37,11 +18,11 @@ def getWelcomeTreeView(treeViewLabel):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def switchToSubMode(subModeLabel):
|
def switchToSubMode(subModeLabel):
|
||||||
wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(subModeLabel)
|
wsButton = getWelcomeScreenSideBarButton(subModeLabel)
|
||||||
frameAndLabelFound = all((wsButtonFrame, wsButtonLabel))
|
buttonFound = object.exists(wsButton)
|
||||||
if frameAndLabelFound:
|
if buttonFound:
|
||||||
mouseClick(wsButtonLabel)
|
mouseClick(wsButton)
|
||||||
return frameAndLabelFound
|
return buttonFound
|
||||||
|
|
||||||
def findExampleOrTutorial(tableView, regex, verbose=False):
|
def findExampleOrTutorial(tableView, regex, verbose=False):
|
||||||
filterModel = __childrenOfType__(tableView, 'QSortFilterProxyModel')
|
filterModel = __childrenOfType__(tableView, 'QSortFilterProxyModel')
|
||||||
|
@@ -14,25 +14,16 @@ def clickItemVerifyHelpCombo(button, expectedHelpComboRegex, testDetails):
|
|||||||
test.log("Found %s" % str(helpCombo.currentText))
|
test.log("Found %s" % str(helpCombo.currentText))
|
||||||
# select "Welcome" page from left toolbar again
|
# select "Welcome" page from left toolbar again
|
||||||
switchViewTo(ViewConstants.WELCOME)
|
switchViewTo(ViewConstants.WELCOME)
|
||||||
wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(getStarted)
|
return test.verify(object.exists(getWelcomeScreenSideBarButton(getStarted)),
|
||||||
return test.verify(all((wsButtonFrame, wsButtonLabel)),
|
|
||||||
"Verifying: '%s' button is being displayed." % getStarted)
|
"Verifying: '%s' button is being displayed." % getStarted)
|
||||||
def buttonActive(button):
|
def buttonActive(button):
|
||||||
# colors of the default theme for active button on Welcome page
|
return waitForObject(button).checked
|
||||||
defaultActiveRGB = (69, 206, 85)
|
|
||||||
# colors of the dark theme for active button on Welcome page
|
|
||||||
darkActiveRGB = (54, 193, 72)
|
|
||||||
# QPalette::Window (used background color of Welcome page buttons)
|
|
||||||
enumQPaletteWindow = 10
|
|
||||||
color = button.palette.color(enumQPaletteWindow)
|
|
||||||
current = (color.red, color.green, color.blue)
|
|
||||||
return current == defaultActiveRGB or current == darkActiveRGB
|
|
||||||
|
|
||||||
def waitForButtonsState(projectsActive, examplesActive, tutorialsActive, timeout=5000):
|
def waitForButtonsState(projectsActive, examplesActive, tutorialsActive, timeout=5000):
|
||||||
projButton = getWelcomeScreenSideBarButton('Projects')[0]
|
projButton = getWelcomeScreenSideBarButton('Projects')
|
||||||
exmpButton = getWelcomeScreenSideBarButton('Examples')[0]
|
exmpButton = getWelcomeScreenSideBarButton('Examples')
|
||||||
tutoButton = getWelcomeScreenSideBarButton('Tutorials')[0]
|
tutoButton = getWelcomeScreenSideBarButton('Tutorials')
|
||||||
if not all((projButton, exmpButton, tutoButton)):
|
if not all(map(object.exists, (projButton, exmpButton, tutoButton))):
|
||||||
return False
|
return False
|
||||||
return waitFor('buttonActive(projButton) == projectsActive '
|
return waitFor('buttonActive(projButton) == projectsActive '
|
||||||
'and buttonActive(exmpButton) == examplesActive '
|
'and buttonActive(exmpButton) == examplesActive '
|
||||||
@@ -65,25 +56,25 @@ def main():
|
|||||||
|
|
||||||
buttonsAndState = {'Projects':False, 'Examples':True, 'Tutorials':False}
|
buttonsAndState = {'Projects':False, 'Examples':True, 'Tutorials':False}
|
||||||
for button, state in buttonsAndState.items():
|
for button, state in buttonsAndState.items():
|
||||||
wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(button)
|
wsButton = getWelcomeScreenSideBarButton(button)
|
||||||
if test.verify(all((wsButtonFrame, wsButtonLabel)),
|
if test.verify(object.exists(wsButton),
|
||||||
"Verified whether '%s' button is shown." % button):
|
"Verified whether '%s' button is shown." % button):
|
||||||
test.compare(buttonActive(wsButtonFrame), state,
|
test.compare(buttonActive(wsButton), state,
|
||||||
"Verifying whether '%s' button is active (%s)." % (button, state))
|
"Verifying whether '%s' button is active (%s)." % (button, state))
|
||||||
|
|
||||||
# select Projects and roughly check this
|
# select Projects and roughly check this
|
||||||
switchToSubMode('Projects')
|
switchToSubMode('Projects')
|
||||||
for button in ['Create Project...', 'Open Project...']:
|
for button in ['Create Project...', 'Open Project...']:
|
||||||
wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(button)
|
wsButton = getWelcomeScreenSideBarButton(button)
|
||||||
if test.verify(all((wsButtonFrame, wsButtonLabel)),
|
if test.verify(object.exists(wsButton),
|
||||||
"Verified whether '%s' button is shown." % button):
|
"Verified whether '%s' button is shown." % button):
|
||||||
test.verify(not buttonActive(wsButtonFrame),
|
test.verify(not buttonActive(wsButton),
|
||||||
"Verifying whether '%s' button is inactive." % button)
|
"Verifying whether '%s' button is inactive." % button)
|
||||||
|
|
||||||
wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(getStarted)
|
wsButton = getWelcomeScreenSideBarButton(getStarted)
|
||||||
if test.verify(all((wsButtonFrame, wsButtonLabel)),
|
if test.verify(object.exists(wsButton),
|
||||||
"Verifying: Qt Creator displays Welcome Page with '%s' button." % getStarted):
|
"Verifying: Qt Creator displays Welcome Page with '%s' button." % getStarted):
|
||||||
if clickItemVerifyHelpCombo(wsButtonLabel, "Getting Started | Qt Creator Manual",
|
if clickItemVerifyHelpCombo(wsButton, "Getting Started | Qt Creator Manual",
|
||||||
"Verifying: Help with Creator Documentation is being opened."):
|
"Verifying: Help with Creator Documentation is being opened."):
|
||||||
|
|
||||||
textUrls = {'Online Community':'https://forum.qt.io',
|
textUrls = {'Online Community':'https://forum.qt.io',
|
||||||
@@ -92,13 +83,14 @@ def main():
|
|||||||
'User Guide':'qthelp://org.qt-project.qtcreator/doc/index.html'
|
'User Guide':'qthelp://org.qt-project.qtcreator/doc/index.html'
|
||||||
}
|
}
|
||||||
for text, url in textUrls.items():
|
for text, url in textUrls.items():
|
||||||
button, label = getWelcomeScreenBottomButton(text)
|
button = getWelcomeScreenSideBarButton(text)
|
||||||
if test.verify(all((button, label)),
|
if test.verify(object.exists(button),
|
||||||
"Verifying whether link button (%s) exists." % text):
|
"Verifying whether link button (%s) exists." % text):
|
||||||
test.compare(str(button.toolTip), url, "Verifying URL for %s" % text)
|
test.compare(str(waitForObject(button).toolTip), url,
|
||||||
wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(getStarted)
|
"Verifying URL for %s" % text)
|
||||||
if wsButtonLabel is not None:
|
wsButton = getWelcomeScreenSideBarButton(getStarted)
|
||||||
mouseClick(wsButtonLabel)
|
if object.exists(wsButton):
|
||||||
|
mouseClick(wsButton)
|
||||||
qcManualQModelIndexStr = getQModelIndexStr("text~='Qt Creator Manual [0-9.]+'",
|
qcManualQModelIndexStr = getQModelIndexStr("text~='Qt Creator Manual [0-9.]+'",
|
||||||
":Qt Creator_QHelpContentWidget")
|
":Qt Creator_QHelpContentWidget")
|
||||||
if str(waitForObject(":Qt Creator_HelpSelector_QComboBox").currentText) == "(Untitled)":
|
if str(waitForObject(":Qt Creator_HelpSelector_QComboBox").currentText) == "(Untitled)":
|
||||||
@@ -109,8 +101,7 @@ def main():
|
|||||||
|
|
||||||
# select "Welcome" page from left toolbar again
|
# select "Welcome" page from left toolbar again
|
||||||
switchViewTo(ViewConstants.WELCOME)
|
switchViewTo(ViewConstants.WELCOME)
|
||||||
wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(getStarted)
|
test.verify(object.exists(getWelcomeScreenSideBarButton(getStarted)),
|
||||||
test.verify(wsButtonFrame is not None and wsButtonLabel is not None,
|
|
||||||
"Verifying: Getting Started topic is being displayed.")
|
"Verifying: Getting Started topic is being displayed.")
|
||||||
# select Examples and roughly check them
|
# select Examples and roughly check them
|
||||||
switchToSubMode('Examples')
|
switchToSubMode('Examples')
|
||||||
|
@@ -6,8 +6,7 @@ source("../../shared/qtcreator.py")
|
|||||||
def checkTypeAndProperties(typePropertiesDetails):
|
def checkTypeAndProperties(typePropertiesDetails):
|
||||||
for (qType, props, detail) in typePropertiesDetails:
|
for (qType, props, detail) in typePropertiesDetails:
|
||||||
if qType == "QPushButton":
|
if qType == "QPushButton":
|
||||||
wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(props)
|
test.verify(object.exists(getWelcomeScreenSideBarButton(props)),
|
||||||
test.verify(all((wsButtonFrame, wsButtonLabel)),
|
|
||||||
"Verifying: Qt Creator displays Welcome Page with %s." % detail)
|
"Verifying: Qt Creator displays Welcome Page with %s." % detail)
|
||||||
elif qType == 'QTreeView':
|
elif qType == 'QTreeView':
|
||||||
treeView = getWelcomeTreeView(props)
|
treeView = getWelcomeTreeView(props)
|
||||||
@@ -59,8 +58,8 @@ def main():
|
|||||||
)
|
)
|
||||||
checkTypeAndProperties(typePropDet)
|
checkTypeAndProperties(typePropDet)
|
||||||
|
|
||||||
getStartedF, getStartedL = getWelcomeScreenSideBarButton("Get Started")
|
test.verify(object.exists(getWelcomeScreenSideBarButton("Get Started")),
|
||||||
test.verify(getStartedF is not None and getStartedL is not None, "'Get Started' button found")
|
"'Get Started' button found")
|
||||||
|
|
||||||
# select "Create Project" and try to create a new project
|
# select "Create Project" and try to create a new project
|
||||||
createNewQtQuickApplication(tempDir(), "SampleApp", fromWelcome = True)
|
createNewQtQuickApplication(tempDir(), "SampleApp", fromWelcome = True)
|
||||||
|
@@ -55,8 +55,7 @@ def main():
|
|||||||
qchs.extend([os.path.join(p, "qtopengl.qch"), os.path.join(p, "qtwidgets.qch")])
|
qchs.extend([os.path.join(p, "qtopengl.qch"), os.path.join(p, "qtwidgets.qch")])
|
||||||
addHelpDocumentation(qchs)
|
addHelpDocumentation(qchs)
|
||||||
setFixedHelpViewer(HelpViewer.HELPMODE)
|
setFixedHelpViewer(HelpViewer.HELPMODE)
|
||||||
wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton('Get Started')
|
if not test.verify(object.exists(getWelcomeScreenSideBarButton('Get Started')),
|
||||||
if not test.verify(all((wsButtonFrame, wsButtonLabel)),
|
|
||||||
"Verifying: Qt Creator displays Welcome Page with Getting Started."):
|
"Verifying: Qt Creator displays Welcome Page with Getting Started."):
|
||||||
test.fatal("Something's wrong - leaving test.")
|
test.fatal("Something's wrong - leaving test.")
|
||||||
invokeMenuItem("File", "Exit")
|
invokeMenuItem("File", "Exit")
|
||||||
|
@@ -15,8 +15,7 @@ def main():
|
|||||||
startQC()
|
startQC()
|
||||||
if not startedWithoutPluginError():
|
if not startedWithoutPluginError():
|
||||||
return
|
return
|
||||||
wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton('Get Started')
|
if not test.verify(object.exists(getWelcomeScreenSideBarButton('Get Started')),
|
||||||
if not test.verify(all((wsButtonFrame, wsButtonLabel)),
|
|
||||||
"Verifying: Qt Creator displays Welcome Page with Getting Started."):
|
"Verifying: Qt Creator displays Welcome Page with Getting Started."):
|
||||||
test.fatal("Something's wrong - leaving test.")
|
test.fatal("Something's wrong - leaving test.")
|
||||||
invokeMenuItem("File", "Exit")
|
invokeMenuItem("File", "Exit")
|
||||||
|
@@ -84,11 +84,11 @@ def createAndSwitchToSession(toSession):
|
|||||||
|
|
||||||
def checkWelcomePage(sessionName, isCurrent=False):
|
def checkWelcomePage(sessionName, isCurrent=False):
|
||||||
switchViewTo(ViewConstants.WELCOME)
|
switchViewTo(ViewConstants.WELCOME)
|
||||||
wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton('Projects')
|
wsButton = getWelcomeScreenSideBarButton('Projects')
|
||||||
if not all((wsButtonFrame, wsButtonLabel)):
|
if not object.exists(wsButton):
|
||||||
test.fatal("Something's pretty wrong - leaving check for WelcomePage.")
|
test.fatal("Something's pretty wrong - leaving check for WelcomePage.")
|
||||||
return
|
return
|
||||||
mouseClick(wsButtonLabel)
|
mouseClick(wsButton)
|
||||||
treeView = getWelcomeTreeView("Sessions")
|
treeView = getWelcomeTreeView("Sessions")
|
||||||
if not treeView:
|
if not treeView:
|
||||||
test.fatal("Failed to find Sessions tree view - leaving check for WelcomePage.")
|
test.fatal("Failed to find Sessions tree view - leaving check for WelcomePage.")
|
||||||
|
Reference in New Issue
Block a user