# retoor import re from playwright.sync_api import expect from tests.conftest import BASE_URL UNICORN = "\U0001F984" def _open_composer(page): page.goto(f"{BASE_URL}/feed", wait_until="domcontentloaded") page.locator(".feed-fab").first.wait_for(state="visible", timeout=10000) page.locator(".feed-fab").first.click() def _create_plain_post_engagement_ui(page, content): _open_composer(page) page.fill("#post-content", content) page.locator("#create-post-modal button.btn-primary:has-text('Post')").click() page.wait_for_url(f"{BASE_URL}/posts/*", wait_until="domcontentloaded") def test_poll_builder_hidden_until_add_poll(alice): page, _ = alice _open_composer(page) expect(page.locator("[data-poll-builder]")).to_be_hidden() page.locator("[data-poll-toggle]").click() expect(page.locator("[data-poll-builder]")).to_be_visible() def test_reaction_palette_toggle_and_react(alice): page, _ = alice _create_plain_post_engagement_ui(page, "Post to react to in the reaction UI test.") expect(page.locator(".reaction-chip:visible")).to_have_count(0) expect(page.locator(".reaction-palette").first).to_be_hidden() page.locator(".reaction-add-btn").first.click() expect(page.locator(".reaction-palette").first).to_be_visible() page.locator(".reaction-palette-btn").first.click() expect(page.locator(".reaction-chip.reacted").first).to_be_visible() expect( page.locator(".reaction-chip.reacted").first.locator(".reaction-count") ).to_have_text("1") def test_reaction_with_an_emoji_outside_the_palette(alice): page, _ = alice _create_plain_post_engagement_ui(page, "Post to react to with an off-palette emoji.") page.locator(".reaction-add-btn").first.click() page.locator(".reaction-palette-more").first.click() picker = page.locator(".reaction-picker").first picker.wait_for(state="visible") picker.locator("emoji-picker").wait_for(state="attached") page.evaluate( """(unicode) => { const picker = document.querySelector(".reaction-picker emoji-picker"); picker.dispatchEvent(new CustomEvent("emoji-click", { detail: { unicode } })); }""", UNICORN, ) chip = page.locator(f'.reaction-chip[data-reaction-emoji="{UNICORN}"]') expect(chip).to_be_visible() expect(chip).to_have_class(re.compile("reacted")) expect(chip.locator(".reaction-count")).to_have_text("1") expect(picker).to_be_hidden() page.reload(wait_until="domcontentloaded") reloaded = page.locator(f'.reaction-chip[data-reaction-emoji="{UNICORN}"]') expect(reloaded).to_be_visible() expect(reloaded.locator(".reaction-count")).to_have_text("1")