Fix reply message truncation on 2 lines (#12929)

* Fix reply message truncation on 2 lines

* Add e2e tests for reply
This commit is contained in:
Florian Duros 2024-08-28 11:45:07 +02:00 committed by GitHub
parent ea3c5cf787
commit c6922c912e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 69 additions and 4 deletions

View file

@ -24,7 +24,34 @@ async function sendMessage(page: Page, message: string): Promise<Locator> {
await page.getByRole("textbox", { name: "Send a message…" }).fill(message); await page.getByRole("textbox", { name: "Send a message…" }).fill(message);
await page.getByRole("button", { name: "Send message" }).click(); await page.getByRole("button", { name: "Send message" }).click();
const msgTile = await page.locator(".mx_EventTile_last"); const msgTile = page.locator(".mx_EventTile_last");
await msgTile.locator(".mx_EventTile_receiptSent").waitFor();
return msgTile;
}
async function sendMultilineMessages(page: Page, messages: string[]) {
await page.getByRole("textbox", { name: "Send a message…" }).focus();
for (let i = 0; i < messages.length; i++) {
await page.keyboard.type(messages[i]);
if (i < messages.length - 1) await page.keyboard.press("Shift+Enter");
}
await page.getByRole("button", { name: "Send message" }).click();
const msgTile = page.locator(".mx_EventTile_last");
await msgTile.locator(".mx_EventTile_receiptSent").waitFor();
return msgTile;
}
async function replyMessage(page: Page, message: Locator, replyMessage: string): Promise<Locator> {
const line = message.locator(".mx_EventTile_line");
await line.hover();
await line.getByRole("button", { name: "Reply", exact: true }).click();
await page.getByRole("textbox", { name: "Send a reply…" }).fill(replyMessage);
await page.getByRole("button", { name: "Send message" }).click();
const msgTile = page.locator(".mx_EventTile_last");
await msgTile.locator(".mx_EventTile_receiptSent").waitFor(); await msgTile.locator(".mx_EventTile_receiptSent").waitFor();
return msgTile; return msgTile;
} }
@ -88,6 +115,22 @@ test.describe("Message rendering", () => {
}); });
}); });
test("should render a reply of a LTR message", async ({ page, user, app, room }) => {
await page.goto(`#/room/${room.roomId}`);
const msgTile = await sendMultilineMessages(page, [
"Fist line",
"Second line",
"Third line",
"Fourth line",
]);
await replyMessage(page, msgTile, "response to multiline message");
await expect(msgTile).toMatchScreenshot(`reply-message-ltr-${direction}displayname.png`, {
mask: [page.locator(".mx_MessageTimestamp")],
});
});
test("should render a basic RTL text message", async ({ page, user, app, room }) => { test("should render a basic RTL text message", async ({ page, user, app, room }) => {
await page.goto(`#/room/${room.roomId}`); await page.goto(`#/room/${room.roomId}`);
@ -122,6 +165,22 @@ test.describe("Message rendering", () => {
mask: [page.locator(".mx_MessageTimestamp")], mask: [page.locator(".mx_MessageTimestamp")],
}); });
}); });
test("should render a reply of a RTL message", async ({ page, user, app, room }) => {
await page.goto(`#/room/${room.roomId}`);
const msgTile = await sendMultilineMessages(page, [
"مرحبا بالعالم!",
"مرحبا بالعالم!",
"مرحبا بالعالم!",
"مرحبا بالعالم!",
]);
await replyMessage(page, msgTile, "مرحبا بالعالم!");
await expect(msgTile).toMatchScreenshot(`reply-message-trl-${direction}displayname.png`, {
mask: [page.locator(".mx_MessageTimestamp")],
});
});
}); });
}); });
}); });

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

View file

@ -25,7 +25,7 @@ limitations under the License.
white-space: nowrap; /* Enforce 'In reply to' to be a single line */ white-space: nowrap; /* Enforce 'In reply to' to be a single line */
color: $secondary-content; color: $secondary-content;
transition: color ease 0.15s; transition: color ease 0.15s;
font-weight: var(--cpd-font-weight-normal); font-weight: var(--cpd-font-weight-regular);
text-decoration: inherit; text-decoration: inherit;
&:hover { &:hover {

View file

@ -126,7 +126,8 @@ $left-gutter: 64px;
.mx_ReplyChain--expanded { .mx_ReplyChain--expanded {
.mx_EventTile_body { .mx_EventTile_body {
display: block; /* !important needed to override .mx_ReplyTile .mx_EventTile_content .mx_EventTile_body */
display: block !important;
overflow-y: scroll; overflow-y: scroll;
} }
@ -899,7 +900,7 @@ $left-gutter: 64px;
object-fit: contain; object-fit: contain;
object-position: left top; object-position: left top;
/* Override the default colors of the 'github-markdown-css' library /* Override the default colors of the 'github-markdown-css' library
(#fff for light theme, #000 for dark theme) to match the inherited theme */ (#fff for light theme, #000 for dark theme) to match the inherited theme */
background-color: inherit !important; background-color: inherit !important;
} }

View file

@ -77,6 +77,11 @@ limitations under the License.
font-size: $font-14px !important; /* Override the big emoji override */ font-size: $font-14px !important; /* Override the big emoji override */
} }
// in order to keep the message on two lines, we need to make the body inline
.mx_EventTile_body {
display: inline;
}
// Hide line numbers and edited indicator // Hide line numbers and edited indicator
.mx_EventTile_lineNumbers, .mx_EventTile_lineNumbers,
.mx_EventTile_edited { .mx_EventTile_edited {