40 lines
2.0 KiB
Python
40 lines
2.0 KiB
Python
from django.urls import reverse
|
|
from playwright.sync_api import expect
|
|
|
|
from .base import BasePage
|
|
|
|
|
|
class CustomerTicketsPage(BasePage):
|
|
def assert_dock(self, active):
|
|
dock = self.page.get_by_role('navigation', name='دسترسی سریع مشتری')
|
|
expect(dock.get_by_role('link')).to_have_count(3)
|
|
for name in ('خدمات', 'درخواستها', 'پروفایل'):
|
|
expect(dock.get_by_role('link', name=name, exact=True)).to_be_visible()
|
|
expect(dock.locator('[aria-current]')).to_have_text(active)
|
|
for link in dock.get_by_role('link').all():
|
|
box = link.bounding_box()
|
|
assert box['width'] >= 44 and box['height'] >= 44
|
|
|
|
def follow_dock(self, name, destination):
|
|
self.page.get_by_role('navigation', name='دسترسی سریع مشتری').get_by_role(
|
|
'link', name=name, exact=True
|
|
).click()
|
|
expect(self.page).to_have_url(self.url(reverse(destination)))
|
|
|
|
def assert_history(self, subject=None):
|
|
expect(self.page.get_by_role('heading', name='درخواستهای من', exact=True)).to_be_visible()
|
|
if subject:
|
|
card = self.page.locator('.tickets-list-card').filter(has_text=subject)
|
|
expect(card.get_by_role('heading', name=subject, exact=True)).to_be_visible()
|
|
expect(card).to_contain_text('مشاهده و پیگیری')
|
|
else:
|
|
expect(self.page.get_by_role('heading', name='هنوز درخواستی ثبت نشده')).to_be_visible()
|
|
expect(self.page.get_by_role('link', name='ثبت اولین درخواست')).to_be_visible()
|
|
assert self.page.evaluate('document.documentElement.scrollWidth <= document.documentElement.clientWidth + 1')
|
|
|
|
def start_request(self):
|
|
self.page.get_by_role('link', name='ثبت درخواست جدید', exact=True).click()
|
|
expect(self.page).to_have_url(self.url(reverse('tickets:new')))
|
|
expect(self.page.locator('.ticket-wizard-page')).to_be_visible()
|
|
|