From 757e4e1395fa1c84510d61b8911f04ba3f5c9cb0 Mon Sep 17 00:00:00 2001 From: Half-Shot Date: Tue, 3 Jun 2025 13:57:57 +0100 Subject: [PATCH] Update tests --- .../e2e/modules/custom-component.spec.ts | 5 +++++ .../sample-files/custom-component-module.js | 12 +++++++++++- ...stom-component-tile-fall-through-linux.png | Bin 0 -> 3803 bytes .../custom-component-tile-linux.png | Bin 4128 -> 4098 bytes 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 playwright/snapshots/modules/custom-component.spec.ts/custom-component-tile-fall-through-linux.png diff --git a/playwright/e2e/modules/custom-component.spec.ts b/playwright/e2e/modules/custom-component.spec.ts index e0741f18ce..0a48c800c7 100644 --- a/playwright/e2e/modules/custom-component.spec.ts +++ b/playwright/e2e/modules/custom-component.spec.ts @@ -28,6 +28,11 @@ test.describe("Custom Component Module", () => { await app.client.sendMessage(room.roomId, "Simple message"); await expect(await page.getByText("Simple message")).toMatchScreenshot("custom-component-tile.png"); }); + test("should fall through if one module does not render a component", { tag: "@screenshot" }, async ({ page, room, app }) => { + await app.viewRoomById(room.roomId); + await app.client.sendMessage(room.roomId, "Fall through here"); + await expect(await page.getByText("Fall through here")).toMatchScreenshot("custom-component-tile-fall-through.png"); + }); test( "should render the original content of a textual event conditionally", { tag: "@screenshot" }, diff --git a/playwright/sample-files/custom-component-module.js b/playwright/sample-files/custom-component-module.js index 14cd378838..62cfe883da 100644 --- a/playwright/sample-files/custom-component-module.js +++ b/playwright/sample-files/custom-component-module.js @@ -9,13 +9,23 @@ export default class CustomComponentModule { static moduleApiVersion = "^1.0.0"; constructor(api) { this.api = api; - this.api.customComponents.register("TextualBody", (props, originalComponent) => { + this.api.customComponents.registerMessageRenderer("m.room.message", (props, originalComponent) => { const body = props.mxEvent.getContent().body; if (body === "Do not replace me") { return originalComponent(); } + else if (body === "Fall through here"){ + return null; + } return `Custom text for ${body}`; }); + this.api.customComponents.registerMessageRenderer(/m\.room\.message/, (props) => { + const body = props.mxEvent.getContent().body; + if (body !== "Fall through here") { + return null; + } + return `Fallthrough text for ${body}`; + }); } async load() {} } diff --git a/playwright/snapshots/modules/custom-component.spec.ts/custom-component-tile-fall-through-linux.png b/playwright/snapshots/modules/custom-component.spec.ts/custom-component-tile-fall-through-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..952b0110b6526bed692a63031cc063ba9fd7165c GIT binary patch literal 3803 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 Ruqyxn002ovPDHLkV1k8JUu6IQ literal 0 HcmV?d00001 diff --git a/playwright/snapshots/modules/custom-component.spec.ts/custom-component-tile-linux.png b/playwright/snapshots/modules/custom-component.spec.ts/custom-component-tile-linux.png index ed626c902a1972a8c65cea633abe6f492521b80a..410365982b864a0a97d16e2a78a4acf3421ef15a 100644 GIT binary patch delta 4087 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 P+=Qx