From 24cda5fc5952078c1ac75473fe0e00532e6fa3c7 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 18 Dec 2023 21:05:06 +0000 Subject: [PATCH] Fix threaded reply playwright tests (#12070) It appears the bug with these tests was just that the MessageBuilder wasn't setting the thread relation on the reply messages as this didn't happen trying to repro it manually, so fix the builder and re-enable the tests. The flip side of this is that it implies buggy clients that don't set thread relations properly will cause stuck notifs in Element Web. I've filed this as https://github.com/element-hq/element-web/issues/26787 --- playwright/e2e/read-receipts/index.ts | 9 +++++++++ playwright/e2e/read-receipts/redactions.spec.ts | 9 +++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/playwright/e2e/read-receipts/index.ts b/playwright/e2e/read-receipts/index.ts index efa93dc9d4..fcdecc06d9 100644 --- a/playwright/e2e/read-receipts/index.ts +++ b/playwright/e2e/read-receipts/index.ts @@ -155,10 +155,19 @@ export class MessageBuilder { public async getContent(room: JSHandle): Promise> { const ev = await this.messageFinder.getMessage(room, targetMessage, true); return ev.evaluate((ev, newMessage) => { + const threadRel = + ev.getRelation()?.rel_type === "m.thread" + ? { + rel_type: "m.thread", + event_id: ev.getRelation().event_id, + } + : {}; + return { "msgtype": "m.text", "body": newMessage, "m.relates_to": { + ...threadRel, "m.in_reply_to": { event_id: ev.getId(), }, diff --git a/playwright/e2e/read-receipts/redactions.spec.ts b/playwright/e2e/read-receipts/redactions.spec.ts index a68e6aa36d..5ec202ed0d 100644 --- a/playwright/e2e/read-receipts/redactions.spec.ts +++ b/playwright/e2e/read-receipts/redactions.spec.ts @@ -642,8 +642,7 @@ test.describe("Read receipts", () => { await util.assertRead(room2); await util.assertReadThread("Root"); }); - // XXX: fails because the read count drops to 1 but not to zero (this is a genuine stuck unread case) - test.skip("Reading a reply to a redacted message marks the thread as read", async ({ + test("Reading a reply to a redacted message marks the thread as read", async ({ roomAlpha: room1, roomBeta: room2, util, @@ -760,8 +759,7 @@ test.describe("Read receipts", () => { // Then the room is still read await util.assertRead(room2); }); - // XXX: fails for the same reason as "Reading a reply to a redacted message marks the thread as read" - test.skip("A thread with an unread reply to a redacted message is still unread after restart", async ({ + test("A thread with an unread reply to a redacted message is still unread after restart", async ({ roomAlpha: room1, roomBeta: room2, util, @@ -791,8 +789,7 @@ test.describe("Read receipts", () => { await util.assertRead(room2); await util.assertReadThread("Root"); }); - // XXX: fails for the same reason as "Reading a reply to a redacted message marks the thread as read - test.skip("A thread with a read reply to a redacted message is still read after restart", async ({ + test("A thread with a read reply to a redacted message is still read after restart", async ({ roomAlpha: room1, roomBeta: room2, util,