From c6ad8b0c27c7038198e03d3ef0834561f2e020ea Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 18 Dec 2023 20:35:27 +0000 Subject: [PATCH] Fix threaded reply playwright tests 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 efa93dc9d42..fcdecc06d97 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 a68e6aa36da..5ec202ed0d4 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,