Files
customerTicket/tests/e2e/pages/dispatches.py
T

90 lines
3.8 KiB
Python

from pathlib import Path
from django.urls import reverse
from playwright.sync_api import expect
from tests.e2e.pages.base import BasePage
class DispatchWorkspacePage(BasePage):
@property
def review_dialog(self):
return self.page.get_by_role("dialog", name="بررسی نهایی ارسال گروهی")
def _activate(self, control, destination, *, hidden=False):
control.click()
if hidden:
expect(destination).to_be_hidden()
else:
expect(destination).to_be_visible()
def open_composer(self):
self.goto(reverse("staff_tickets:dispatch_create"))
self.page.get_by_role("tab", name="ارسال جدید").wait_for(state="visible")
def open_history(self):
self.page.get_by_role("tab", name="سوابق ارسال").click()
def return_to_composer(self):
self.page.get_by_role("tab", name="ارسال جدید").click()
def compose(self, unit, group, category, subject, body):
self.page.get_by_label("واحد ارسال‌کننده").select_option(str(unit.pk))
self.page.get_by_label("گروه مخاطبان", exact=False).select_option(str(group.pk))
self.page.get_by_label("دسته‌بندی", exact=False).select_option(str(category.pk))
self.page.get_by_label("موضوع استعلام یا پیام", exact=False).fill(subject)
self.page.get_by_label("متن پیام", exact=False).fill(body)
def review(self):
self._activate(self.page.get_by_role("button", name="بررسی و ادامه"), self.review_dialog)
def cancel_review(self):
self._activate(self.review_dialog.get_by_role("button", name="بازگشت و ویرایش"), self.review_dialog, hidden=True)
def send(self):
self._activate(
self.review_dialog.get_by_role("button", name="تأیید و ارسال گروهی"),
self.page.get_by_role("heading", name="وضعیت پیامک، مشاهده و پاسخ"),
)
def open_report(self, dispatch):
self.goto(reverse("staff_tickets:dispatch_detail", args=[dispatch.public_id]))
def filter_recipients(self, label):
self.page.get_by_label("نمایش مخاطبان").select_option(label=label)
def search_recipient(self, text):
self.page.get_by_role("searchbox", name="جستجوی مخاطب").fill(text)
def reset_recipients(self):
self.page.get_by_role("button", name="پاک کردن فیلتر", exact=True).click()
def visible_recipients(self):
return self.page.locator("[data-recipient-row]:visible")
def open_conversation(self):
self.page.locator(".dispatch-reply-link").first.click()
def review_opening(self):
self._activate(self.page.get_by_role("link", name="بازگشایی همه پاسخ‌ها", exact=True),
self.page.get_by_role("heading", name="تأیید بازگشایی همه پاسخ‌ها"))
def confirm_opening(self):
self._activate(self.page.get_by_role("button", name="تأیید و بازگشایی همه پاسخ‌ها"),
self.page.get_by_role("heading", name="پاسخ‌ها بازگشایی شده‌اند"))
def choose_response_mode(self, label):
self.page.get_by_role("radio", name=label, exact=True).check()
@property
def opening_sms(self):
return self.page.get_by_role("checkbox", name="اطلاع‌رسانی بازگشایی با پیامک", exact=True)
def expect_fits_viewport(self):
assert self.page.evaluate("document.documentElement.scrollWidth <= document.documentElement.clientWidth + 1")
def save_screenshot(self, name):
directory = Path("test-results/dispatch-design")
directory.mkdir(parents=True, exist_ok=True)
self.page.screenshot(path=str(directory / name), full_page=True)