diff --git a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
index cb6e9e405a49a6608c60ebbe1e3ad975218d9560..8ec89a7fad8aa3bf00c6e03a2bee8a641fd53e96 100644
--- a/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
+++ b/tests/auto/widgets/qwebenginepage/tst_qwebenginepage.cpp
@@ -2484,6 +2484,18 @@ void tst_QWebEnginePage::getUserMediaRequestDesktopVideoManyPages()
     const QString constraints = QStringLiteral("{video: { mandatory: { chromeMediaSource: 'desktop' }}}");
     const QWebEnginePage::Feature feature = QWebEnginePage::DesktopVideoCapture;
     std::vector<GetUserMediaTestPage> pages(10);
+
+    // Desktop capture needs to be on a desktop
+    std::vector<QWebEngineView> views(10);
+    for (size_t i = 0; i < views.size(); ++i) {
+        QWebEngineView *view = &(views[i]);
+        GetUserMediaTestPage *page = &(pages[i]);
+        view->setPage(page);
+        view->resize(640, 480);
+        view->show();
+        QVERIFY(QTest::qWaitForWindowExposed(view));
+    }
+
     for (GetUserMediaTestPage &page : pages)
         QTRY_VERIFY_WITH_TIMEOUT(page.loadSucceeded(), 20000);
     for (GetUserMediaTestPage &page : pages)
@@ -2505,6 +2517,14 @@ void tst_QWebEnginePage::getUserMediaRequestDesktopVideoManyRequests()
     const QString constraints = QStringLiteral("{video: { mandatory: { chromeMediaSource: 'desktop' }}}");
     const QWebEnginePage::Feature feature = QWebEnginePage::DesktopVideoCapture;
     GetUserMediaTestPage page;
+
+    // Desktop capture needs to be on a desktop
+    QWebEngineView view;
+    view.setPage(&page);
+    view.resize(640, 480);
+    view.show();
+    QVERIFY(QTest::qWaitForWindowExposed(&view));
+
     QTRY_VERIFY_WITH_TIMEOUT(page.loadSucceeded(), 20000);
     page.settings()->setAttribute(QWebEngineSettings::ScreenCaptureEnabled, true);
     for (int i = 0; i != 100; ++i) {