From 7bd60e0ddbc2a67d23c0ec26c1b055cfd5d77c90 Mon Sep 17 00:00:00 2001 From: Samuel Reichert Date: Tue, 26 May 2026 16:05:24 +0200 Subject: [PATCH 1/6] test(video-player): wait for widget after tab clicks, fix poster race --- .../video-player-web/e2e/VideoPlayer.spec.js | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/packages/pluggableWidgets/video-player-web/e2e/VideoPlayer.spec.js b/packages/pluggableWidgets/video-player-web/e2e/VideoPlayer.spec.js index 8ba37034a7..78d72d2223 100644 --- a/packages/pluggableWidgets/video-player-web/e2e/VideoPlayer.spec.js +++ b/packages/pluggableWidgets/video-player-web/e2e/VideoPlayer.spec.js @@ -1,5 +1,5 @@ import { test, expect } from "@mendix/run-e2e/fixtures"; -import { waitForDataReady } from "@mendix/run-e2e/mendix-helpers"; +import { waitForWidget } from "@mendix/run-e2e/mendix-helpers"; test.describe("Video Player", () => { test.beforeEach(async ({ page }) => { @@ -41,6 +41,7 @@ test.describe("Tab page", () => { test("renders youtube video", async ({ page }) => { await page.locator(".mx-name-tabPage1").click(); + await waitForWidget(page, "videoPlayer1"); await expect( page.locator(".widget-video-player.widget-video-player-container.mx-name-videoPlayer1.size-box iframe") ).toBeVisible(); @@ -52,6 +53,7 @@ test.describe("Tab page", () => { test("renders vimeo video", async ({ page }) => { await page.locator(".mx-name-tabPage5").click(); + await waitForWidget(page, "videoPlayer5"); await expect( page.locator(".widget-video-player.widget-video-player-container.mx-name-videoPlayer5.size-box iframe") ).toBeVisible(); @@ -63,6 +65,7 @@ test.describe("Tab page", () => { test("renders dailymotion video", async ({ page }) => { await page.locator(".mx-name-tabPage4").click(); + await waitForWidget(page, "videoPlayer4"); await expect( page.locator(".widget-video-player.widget-video-player-container.mx-name-videoPlayer4.size-box iframe") ).toBeVisible(); @@ -74,6 +77,7 @@ test.describe("Tab page", () => { test("renders html5 video", async ({ page }) => { await page.locator(".mx-name-tabPage3").click(); + await waitForWidget(page, "videoPlayer3"); await expect( page.locator(".widget-video-player.widget-video-player-container.mx-name-videoPlayer3.size-box video") ).toBeVisible(); @@ -112,7 +116,19 @@ test.describe("External video", () => { await widget.scrollIntoViewIfNeeded(); await expect(widget).toBeVisible(); await expect(videoLocator).toHaveAttribute("poster", /.+/); - await waitForDataReady(page); + // Wait for poster image to decode in-page before screenshotting. + // page.evaluate with a separate Image() is unreliable — the promise can + // resolve before the