From b3251f2abc0ad28b22045e8cdf97d4068dd4e25d Mon Sep 17 00:00:00 2001 From: leonardomendix Date: Tue, 2 Jun 2026 16:30:22 +0200 Subject: [PATCH 1/3] test: add a route to use local video file --- .../video-player-web/e2e/VideoPlayer.spec.js | 49 +++++++++++++----- .../video-player-web/e2e/fixtures/stub.mp4 | Bin 0 -> 489 bytes 2 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 packages/pluggableWidgets/video-player-web/e2e/fixtures/stub.mp4 diff --git a/packages/pluggableWidgets/video-player-web/e2e/VideoPlayer.spec.js b/packages/pluggableWidgets/video-player-web/e2e/VideoPlayer.spec.js index bcd66d23ed..9b7f01b8f4 100644 --- a/packages/pluggableWidgets/video-player-web/e2e/VideoPlayer.spec.js +++ b/packages/pluggableWidgets/video-player-web/e2e/VideoPlayer.spec.js @@ -1,3 +1,4 @@ +import path from "path"; import { test, expect } from "@mendix/run-e2e/fixtures"; import { waitForWidget, waitFrames } from "@mendix/run-e2e/mendix-helpers"; @@ -111,25 +112,45 @@ test.describe("External video", () => { }); test("renders a poster", async ({ page }) => { + // Intercept the external video URL and serve a local stub so the test + // doesn't depend on third-party CDN availability in CI. + await page.route("**/*.mp4", route => + route.fulfill({ + status: 200, + contentType: "video/mp4", + path: path.join(import.meta.dirname, "fixtures/stub.mp4") + }) + ); + // Reload so the intercepted route applies to the video element fetch. + await page.reload(); + const widget = page.locator(".widget-video-player"); const videoLocator = page.locator(".widget-video-player video"); await widget.scrollIntoViewIfNeeded(); await expect(widget).toBeVisible(); await expect(videoLocator).toHaveAttribute("poster", /.+/); - // Wait for poster image to decode in-page before screenshotting. - // page.evaluate with a separate Image() is unreliable — the promise can - // resolve before the