summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPeter Varga <pvarga@inf.u-szeged.hu>2017-02-15 11:49:25 +0100
committerPeter Varga <pvarga@inf.u-szeged.hu>2017-03-03 05:51:25 +0000
commit78d8985c6bdb7bf9d04fa5e6936aadab5174c6d2 (patch)
tree49d4a45b617b105704bc942274fc4195c61180da /tests
parentc7edb365f6c9c3d614fb6bb2fe03de3dd6d2d5a8 (diff)
Rework change locale tests for 55-based Chromium
Error pages no longer have useful titles in Chromium 55. Test the error page content instead. Tests have been also stabilized. Task-number: QTBUG-58022 Change-Id: If5c3e2b1df2cb3ee8b48d651e6f19360fa484f17 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/quick/qquickwebengineview/tst_qquickwebengineview.cpp40
-rw-r--r--tests/auto/quick/shared/util.h22
-rw-r--r--tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp50
3 files changed, 69 insertions, 43 deletions
diff --git a/tests/auto/quick/qquickwebengineview/tst_qquickwebengineview.cpp b/tests/auto/quick/qquickwebengineview/tst_qquickwebengineview.cpp
index 010e1c457..a6818c6ef 100644
--- a/tests/auto/quick/qquickwebengineview/tst_qquickwebengineview.cpp
+++ b/tests/auto/quick/qquickwebengineview/tst_qquickwebengineview.cpp
@@ -685,38 +685,38 @@ void tst_QQuickWebEngineView::inputEventForwardingDisabledWhenActiveFocusOnPress
void tst_QQuickWebEngineView::changeLocale()
{
- QSKIP("Error pages no longer have useful titles in Chromium 55");
+ QStringList errorLines;
QUrl url("http://non.existent/");
QLocale::setDefault(QLocale("de"));
- QQuickWebEngineView *viewDE = newWebEngineView();
- QSignalSpy titleSpyHU(viewDE, SIGNAL(titleChanged()));
-
+ QScopedPointer<QQuickWebEngineView> viewDE(newWebEngineView());
viewDE->setUrl(url);
- QVERIFY(waitForLoadFailed(viewDE));
- QTRY_COMPARE(titleSpyHU.size(), 2);
- QCOMPARE(viewDE->title(), QStringLiteral("Nicht verf\u00FCgbar: %1").arg(url.toString()));
+ QVERIFY(waitForLoadFailed(viewDE.data()));
- QLocale::setDefault(QLocale("en"));
- QQuickWebEngineView *viewEN = newWebEngineView();
- QSignalSpy titleSpyEN(viewEN, SIGNAL(titleChanged()));
+ QTRY_VERIFY(!bodyInnerText(viewDE.data()).isEmpty());
+ errorLines = bodyInnerText(viewDE.data()).split(QRegExp("[\r\n]"), QString::SkipEmptyParts);
+ QCOMPARE(errorLines.first(), QStringLiteral("Diese Website ist nicht erreichbar"));
+ QLocale::setDefault(QLocale("en"));
+ QScopedPointer<QQuickWebEngineView> viewEN(newWebEngineView());
viewEN->setUrl(url);
- QVERIFY(waitForLoadFailed(viewEN));
- QTRY_COMPARE(titleSpyEN.size(), 2);
- QCOMPARE(viewEN->title(), QStringLiteral("%1 is not available").arg(url.toString()));
+ QVERIFY(waitForLoadFailed(viewEN.data()));
+
+ QTRY_VERIFY(!bodyInnerText(viewEN.data()).isEmpty());
+ errorLines = bodyInnerText(viewEN.data()).split(QRegExp("[\r\n]"), QString::SkipEmptyParts);
+ QCOMPARE(errorLines.first(), QStringLiteral("This site can\u2019t be reached"));
+ // Reset error page
viewDE->setUrl(QUrl("about:blank"));
- QVERIFY(waitForLoadSucceeded(viewDE));
- titleSpyHU.clear();
+ QVERIFY(waitForLoadSucceeded(viewDE.data()));
+ // Check whether an existing QWebEngineView keeps the language settings after changing the default locale
viewDE->setUrl(url);
- QVERIFY(waitForLoadFailed(viewDE));
- QTRY_COMPARE(titleSpyHU.size(), 2);
- QCOMPARE(viewDE->title(), QStringLiteral("Nicht verf\u00FCgbar: %1").arg(url.toString()));
+ QVERIFY(waitForLoadFailed(viewDE.data()));
- delete viewDE;
- delete viewEN;
+ QTRY_VERIFY(!bodyInnerText(viewDE.data()).isEmpty());
+ errorLines = bodyInnerText(viewDE.data()).split(QRegExp("[\r\n]"), QString::SkipEmptyParts);
+ QCOMPARE(errorLines.first(), QStringLiteral("Diese Website ist nicht erreichbar"));
}
void tst_QQuickWebEngineView::userScripts()
diff --git a/tests/auto/quick/shared/util.h b/tests/auto/quick/shared/util.h
index 98a7c1007..dce0afb8e 100644
--- a/tests/auto/quick/shared/util.h
+++ b/tests/auto/quick/shared/util.h
@@ -120,4 +120,26 @@ inline bool waitForViewportReady(QQuickWebEngineView *webEngineView, int timeout
#endif
}
+inline QString bodyInnerText(QQuickWebEngineView *webEngineView)
+{
+ qRegisterMetaType<QQuickWebEngineView::JavaScriptConsoleMessageLevel>("JavaScriptConsoleMessageLevel");
+ QSignalSpy consoleMessageSpy(webEngineView, &QQuickWebEngineView::javaScriptConsoleMessage);
+
+ webEngineView->runJavaScript(
+ "if (document.body == null)"
+ " console.log('');"
+ "else"
+ " console.log(document.body.innerText);"
+ );
+
+ if (!consoleMessageSpy.wait())
+ return QString();
+
+ QList<QVariant> arguments = consoleMessageSpy.takeFirst();
+ if (static_cast<QQuickWebEngineView::JavaScriptConsoleMessageLevel>(arguments.at(0).toInt()) != QQuickWebEngineView::InfoMessageLevel)
+ return QString();
+
+ return arguments.at(1).toString();
+}
+
#endif /* UTIL_H */
diff --git a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
index 3b683e541..8057b5beb 100644
--- a/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
+++ b/tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp
@@ -865,37 +865,41 @@ void tst_QWebEngineView::focusOnNavigation()
void tst_QWebEngineView::changeLocale()
{
- QSKIP("Error pages no longer have useful titles in Chromium 55");
+ QStringList errorLines;
QUrl url("http://non.existent/");
QLocale::setDefault(QLocale("de"));
QWebEngineView viewDE;
- viewDE.setUrl(url);
+ QSignalSpy loadFinishedSpyDE(&viewDE, SIGNAL(loadFinished(bool)));
+ viewDE.load(url);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpyDE.count(), 1, 12000);
- QSignalSpy spyTitleChangedDE(&viewDE, &QWebEngineView::titleChanged);
- QVERIFY(spyTitleChangedDE.wait());
- QSignalSpy spyFinishedDE(&viewDE, &QWebEngineView::loadFinished);
- QVERIFY(spyFinishedDE.wait());
- QCOMPARE(viewDE.title(), QStringLiteral("Nicht verf\u00FCgbar: %1").arg(url.toString()));
+ QTRY_VERIFY(!toPlainTextSync(viewDE.page()).isEmpty());
+ errorLines = toPlainTextSync(viewDE.page()).split(QRegExp("[\r\n]"), QString::SkipEmptyParts);
+ QCOMPARE(errorLines.first(), QStringLiteral("Diese Website ist nicht erreichbar"));
QLocale::setDefault(QLocale("en"));
QWebEngineView viewEN;
- viewEN.setUrl(url);
-
- QSignalSpy spyTitleChangedEN(&viewEN, &QWebEngineView::titleChanged);
- QVERIFY(spyTitleChangedEN.wait());
- QSignalSpy spyFinishedEN(&viewEN, &QWebEngineView::loadFinished);
- QVERIFY(spyFinishedEN.wait());
- QCOMPARE(viewEN.title(), QStringLiteral("%1 is not available").arg(url.toString()));
-
- viewDE.setUrl(QUrl("about:blank"));
- QVERIFY(spyFinishedDE.wait());
-
- viewDE.setUrl(url);
-
- QVERIFY(spyTitleChangedDE.wait());
- QVERIFY(spyFinishedDE.wait());
- QCOMPARE(viewDE.title(), QStringLiteral("Nicht verf\u00FCgbar: %1").arg(url.toString()));
+ QSignalSpy loadFinishedSpyEN(&viewEN, SIGNAL(loadFinished(bool)));
+ viewEN.load(url);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpyEN.count(), 1, 12000);
+
+ QTRY_VERIFY(!toPlainTextSync(viewEN.page()).isEmpty());
+ errorLines = toPlainTextSync(viewEN.page()).split(QRegExp("[\r\n]"), QString::SkipEmptyParts);
+ QCOMPARE(errorLines.first(), QStringLiteral("This site can\u2019t be reached"));
+
+ // Reset error page
+ viewDE.load(QUrl("about:blank"));
+ QVERIFY(loadFinishedSpyDE.wait());
+ loadFinishedSpyDE.clear();
+
+ // Check whether an existing QWebEngineView keeps the language settings after changing the default locale
+ viewDE.load(url);
+ QTRY_COMPARE_WITH_TIMEOUT(loadFinishedSpyDE.count(), 1, 12000);
+
+ QTRY_VERIFY(!toPlainTextSync(viewDE.page()).isEmpty());
+ errorLines = toPlainTextSync(viewDE.page()).split(QRegExp("[\r\n]"), QString::SkipEmptyParts);
+ QCOMPARE(errorLines.first(), QStringLiteral("Diese Website ist nicht erreichbar"));
}
void tst_QWebEngineView::inputMethodsTextFormat_data()