fix keyboard ui

This commit is contained in:
javad committed 2026-09-17 10:11:18 +03:30
1 parent 83f4d7c728
commit a26ae28189
5 files changed
+54 -8

No files matched your search

+26 -3
View File
@@ -36,6 +36,23 @@ def assert_workspace_fits_visual_viewport(page):
assert metrics["pageWidth"] <= metrics["viewportWidth"] + 1
def assert_reply_input_is_visible(page):
metrics = page.evaluate(
"""() => {
const input = document.querySelector('form[data-ticket-composer] textarea');
const composer = document.querySelector('[data-composer-shell]');
const inputBox = input.getBoundingClientRect();
const composerBox = composer.getBoundingClientRect();
const viewportTop = window.visualViewport?.offsetTop || 0;
const viewportBottom = viewportTop + (window.visualViewport?.height || window.innerHeight);
const visibleTop = Math.max(inputBox.top, composerBox.top, viewportTop);
const visibleBottom = Math.min(inputBox.bottom, composerBox.bottom, viewportBottom);
return {visibleHeight: Math.max(0, visibleBottom - visibleTop), inputHeight: inputBox.height};
}"""
)
assert metrics["visibleHeight"] >= min(64, metrics["inputHeight"] * 0.6)
def test_magic_link_mobile_viewport_keeps_composer_messages_and_credit_visible(live_server, browser_page):
branding = SiteBranding.load()
branding.developer_credit_text = "امضای مقدس توسعه‌دهنده E2E"
@@ -61,16 +78,19 @@ def test_magic_link_mobile_viewport_keeps_composer_messages_and_credit_visible(l
conversation.expect_latest_message_above_composer()
conversation.open_composer()
page.set_viewport_size({"width": 390, "height": 620})
page.set_viewport_size({"width": 390, "height": 430})
expect(page.locator('form[data-ticket-composer] textarea')).to_be_focused()
expect(page.locator("[data-composer-shell]")).to_have_attribute("data-keyboard-open", "true")
page.locator('form[data-ticket-composer] textarea').fill("متن پاسخ باید هنگام تایپ دیده شود")
assert_reply_input_is_visible(page)
expect(credit).to_be_visible()
assert_workspace_fits_visual_viewport(page)
conversation.expect_latest_message_above_composer()
page.locator("[data-composer-close]").click()
expect(page.locator("[data-composer-shell].is-collapsed")).to_be_visible()
expect(credit).to_be_visible()
assert_workspace_fits_visual_viewport(page)
conversation.expect_latest_message_above_composer()
def test_staff_ticket_mobile_viewport_survives_open_close_and_rotation(live_server, browser_page):
@@ -95,9 +115,12 @@ def test_staff_ticket_mobile_viewport_survives_open_close_and_rotation(live_serv
conversation.open_composer()
page.set_viewport_size({"width": 844, "height": 390})
assert_workspace_fits_visual_viewport(page)
conversation.expect_latest_message_above_composer()
expect(page.locator("[data-composer-shell]")).to_have_attribute("data-keyboard-open", "true")
page.locator('form[data-ticket-composer] textarea').fill("پاسخ کارشناس هنگام باز بودن کیبورد")
assert_reply_input_is_visible(page)
expect(page.locator("[data-composer-close]")).to_be_visible()
page.locator("[data-composer-close]").click()
expect(page.locator("[data-composer-shell].is-collapsed")).to_be_visible()
assert_workspace_fits_visual_viewport(page)
conversation.expect_latest_message_above_composer()