forked from qt-creator/qt-creator
SquishTests: Fix testing of welcome page
The examples and tutorials part of the welcome page got a new approach which is either having a sectioned grid view or a non-sectioned grid view (while searching). That means we have now a model holding the items of several other (sub)models and a filter model taking care of what is shown while searching. While searching we need to check the filter model, while for not-search the original list view could be used as we did before this patch. But as there are no access or verification of the whole list this done is just replacing the old approach. Change-Id: I1777340f8c6ea88af3bfc20a600ee1c174a18807 Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -729,6 +729,7 @@ void SectionedGridView::setSearchString(const QString &searchString)
|
|||||||
// We don't have a grid set for searching yet.
|
// We don't have a grid set for searching yet.
|
||||||
// Create all items view for filtering.
|
// Create all items view for filtering.
|
||||||
m_allItemsView.reset(new GridView);
|
m_allItemsView.reset(new GridView);
|
||||||
|
m_allItemsView->setObjectName("AllItemsView"); // used by Squish
|
||||||
m_allItemsView->setModel(new ListModelFilter(m_allItemsModel.get(), m_allItemsView.get()));
|
m_allItemsView->setModel(new ListModelFilter(m_allItemsModel.get(), m_allItemsView.get()));
|
||||||
if (m_itemDelegate)
|
if (m_itemDelegate)
|
||||||
m_allItemsView->setItemDelegate(m_itemDelegate);
|
m_allItemsView->setItemDelegate(m_itemDelegate);
|
||||||
|
@@ -44,7 +44,15 @@ def switchToSubMode(subModeLabel):
|
|||||||
return frameAndLabelFound
|
return frameAndLabelFound
|
||||||
|
|
||||||
def findExampleOrTutorial(tableView, regex, verbose=False):
|
def findExampleOrTutorial(tableView, regex, verbose=False):
|
||||||
children = __childrenOfType__(tableView, 'QModelIndex')
|
filterModel = __childrenOfType__(tableView, 'QSortFilterProxyModel')
|
||||||
|
if len(filterModel) != 1:
|
||||||
|
test.fatal("Something's wrong - could not find filter proxy model.")
|
||||||
|
return None
|
||||||
|
filterModel = filterModel[0]
|
||||||
|
if filterModel.rowCount() == 0:
|
||||||
|
return None
|
||||||
|
|
||||||
|
children = dumpIndices(filterModel)
|
||||||
for child in children:
|
for child in children:
|
||||||
if re.match(regex, str(child.text)):
|
if re.match(regex, str(child.text)):
|
||||||
if verbose:
|
if verbose:
|
||||||
|
@@ -137,7 +137,7 @@ def main():
|
|||||||
for (qType, prop, info) in expect:
|
for (qType, prop, info) in expect:
|
||||||
test.verify(checkIfObjectExists(search % (qType, prop)),
|
test.verify(checkIfObjectExists(search % (qType, prop)),
|
||||||
"Verifying whether %s is shown" % info)
|
"Verifying whether %s is shown" % info)
|
||||||
checkTableViewForContent(search % (expect[0][0], expect[0][1]), "Help: Creating .*", "Tutorials",
|
checkTableViewForContent(search % (expect[0][0], expect[0][1]), "Creating .*", "Tutorials",
|
||||||
"Verifying that at least one tutorial is displayed.")
|
"Verifying that at least one tutorial is displayed.")
|
||||||
# exit Qt Creator
|
# exit Qt Creator
|
||||||
invokeMenuItem("File", "Exit")
|
invokeMenuItem("File", "Exit")
|
||||||
|
@@ -21,19 +21,21 @@ def handlePackagingMessageBoxes():
|
|||||||
|
|
||||||
def openExample(examplesLineEdit, input, exampleRegex, exampleName, waitForChildCount=0):
|
def openExample(examplesLineEdit, input, exampleRegex, exampleName, waitForChildCount=0):
|
||||||
replaceEditorContent(examplesLineEdit, input)
|
replaceEditorContent(examplesLineEdit, input)
|
||||||
listView = waitForObject("{type='QListView' unnamed='1' visible='1' "
|
listView = waitForObject("{type='QListView' name='AllItemsView' visible='1' "
|
||||||
"window=':Qt Creator_Core::Internal::MainWindow'}")
|
"window=':Qt Creator_Core::Internal::MainWindow'}")
|
||||||
|
filterModel = __childrenOfType__(listView, 'QSortFilterProxyModel')
|
||||||
|
if len(filterModel) != 1:
|
||||||
|
test.fatal("Failed to find filter proxy model.")
|
||||||
|
return None
|
||||||
|
|
||||||
|
filterModel = filterModel[0]
|
||||||
if waitForChildCount > 0:
|
if waitForChildCount > 0:
|
||||||
|
waitFor("filterModel.rowCount() == waitForChildCount", 3000)
|
||||||
def childCount(view):
|
|
||||||
return len(__childrenOfType__(view, 'QModelIndex'))
|
|
||||||
|
|
||||||
waitFor("childCount(listView) == waitForChildCount", 3000)
|
|
||||||
|
|
||||||
waitFor('findExampleOrTutorial(listView, exampleRegex) is not None', 3000)
|
waitFor('findExampleOrTutorial(listView, exampleRegex) is not None', 3000)
|
||||||
example = findExampleOrTutorial(listView, exampleRegex, True)
|
example = findExampleOrTutorial(listView, exampleRegex, True)
|
||||||
if test.verify(example is not None, "Verifying: Example (%s) is shown." % exampleName):
|
if test.verify(example is not None, "Verifying: Example (%s) is shown." % exampleName):
|
||||||
mouseClick(example)
|
mouseClick(waitForObjectItem(listView, str(example.text)))
|
||||||
handlePackagingMessageBoxes()
|
handlePackagingMessageBoxes()
|
||||||
helpWidget = waitForObject(":Help Widget_Help::Internal::HelpWidget")
|
helpWidget = waitForObject(":Help Widget_Help::Internal::HelpWidget")
|
||||||
test.verify(waitFor('exampleName in str(helpWidget.windowTitle)', 5000),
|
test.verify(waitFor('exampleName in str(helpWidget.windowTitle)', 5000),
|
||||||
@@ -74,7 +76,7 @@ def main():
|
|||||||
combo = waitForObject(search % (expect[2][0], expect[2][1]))
|
combo = waitForObject(search % (expect[2][0], expect[2][1]))
|
||||||
test.log("Using examples from Kit %s." % str(combo.currentText))
|
test.log("Using examples from Kit %s." % str(combo.currentText))
|
||||||
replaceEditorContent(examplesLineEdit, "qwerty")
|
replaceEditorContent(examplesLineEdit, "qwerty")
|
||||||
listView = waitForObject(search % (expect[0][0], expect[0][1]))
|
listView = waitForObject("{type='QListView' name='AllItemsView'}")
|
||||||
waitFor('findExampleOrTutorial(listView, ".*") is None', 3000)
|
waitFor('findExampleOrTutorial(listView, ".*") is None', 3000)
|
||||||
example = findExampleOrTutorial(listView, ".*", True)
|
example = findExampleOrTutorial(listView, ".*", True)
|
||||||
test.verify(example is None, "Verifying: No example is shown.")
|
test.verify(example is None, "Verifying: No example is shown.")
|
||||||
|
@@ -6,7 +6,7 @@ source("../../shared/qtcreator.py")
|
|||||||
|
|
||||||
def __waitForListView__():
|
def __waitForListView__():
|
||||||
listView = waitForObject("{container=':Qt Creator.WelcomeScreenStackedWidget' "
|
listView = waitForObject("{container=':Qt Creator.WelcomeScreenStackedWidget' "
|
||||||
"type='QListView' unnamed='1' visible='1'}")
|
"type='QListView' name='AllItemsView' visible='1'}")
|
||||||
return listView
|
return listView
|
||||||
|
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ def main():
|
|||||||
tutorial = findExampleOrTutorial(listView, ".*", True)
|
tutorial = findExampleOrTutorial(listView, ".*", True)
|
||||||
test.verify(tutorial is None,
|
test.verify(tutorial is None,
|
||||||
"Verifying: 'Tutorials' topic is opened and nothing is shown.")
|
"Verifying: 'Tutorials' topic is opened and nothing is shown.")
|
||||||
bnr = "Help: Building and Running an Example"
|
bnr = "Building and Running an Example"
|
||||||
replaceEditorContent(searchTutorials, bnr.lower())
|
replaceEditorContent(searchTutorials, bnr.lower())
|
||||||
listView = __waitForListView__()
|
listView = __waitForListView__()
|
||||||
waitFor('findExampleOrTutorial(listView, "%s.*") is not None' % bnr, 3000)
|
waitFor('findExampleOrTutorial(listView, "%s.*") is not None' % bnr, 3000)
|
||||||
@@ -43,7 +43,7 @@ def main():
|
|||||||
# clicking before documentation was updated will open the tutorial in browser
|
# clicking before documentation was updated will open the tutorial in browser
|
||||||
progressBarWait(warn=False)
|
progressBarWait(warn=False)
|
||||||
# select a text tutorial
|
# select a text tutorial
|
||||||
mouseClick(tutorial)
|
mouseClick(waitForObjectItem(listView, str(tutorial.text)))
|
||||||
test.verify("Building and Running an Example" in
|
test.verify("Building and Running an Example" in
|
||||||
str(waitForObject(":Help Widget_Help::Internal::HelpWidget").windowTitle),
|
str(waitForObject(":Help Widget_Help::Internal::HelpWidget").windowTitle),
|
||||||
"Verifying: The tutorial is opened inside Help.")
|
"Verifying: The tutorial is opened inside Help.")
|
||||||
@@ -52,7 +52,7 @@ def main():
|
|||||||
# check a demonstration video link
|
# check a demonstration video link
|
||||||
mouseClick(searchTutorials)
|
mouseClick(searchTutorials)
|
||||||
replaceEditorContent(searchTutorials, "embedded device")
|
replaceEditorContent(searchTutorials, "embedded device")
|
||||||
embeddedTutorial = "Online: How to install and set up Qt for Device Creation.*"
|
embeddedTutorial = "How to install and set up Qt for Device Creation.*"
|
||||||
listView = __waitForListView__()
|
listView = __waitForListView__()
|
||||||
waitFor('findExampleOrTutorial(listView, embeddedTutorial) is not None', 3000)
|
waitFor('findExampleOrTutorial(listView, embeddedTutorial) is not None', 3000)
|
||||||
tutorial = findExampleOrTutorial(listView, embeddedTutorial, True)
|
tutorial = findExampleOrTutorial(listView, embeddedTutorial, True)
|
||||||
|
Reference in New Issue
Block a user