diff options
author | Peter Varga <pvarga@inf.u-szeged.hu> | 2017-02-15 11:49:25 +0100 |
---|---|---|
committer | Peter Varga <pvarga@inf.u-szeged.hu> | 2017-03-03 05:51:25 +0000 |
commit | 78d8985c6bdb7bf9d04fa5e6936aadab5174c6d2 (patch) | |
tree | 49d4a45b617b105704bc942274fc4195c61180da /tests/auto | |
parent | c7edb365f6c9c3d614fb6bb2fe03de3dd6d2d5a8 (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/auto')
-rw-r--r-- | tests/auto/quick/qquickwebengineview/tst_qquickwebengineview.cpp | 40 | ||||
-rw-r--r-- | tests/auto/quick/shared/util.h | 22 | ||||
-rw-r--r-- | tests/auto/widgets/qwebengineview/tst_qwebengineview.cpp | 50 |
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() |