from playwright.sync_api import expect from .payments import PaymentsPage class PaymentLinkPage(PaymentsPage): def open_link(self, path): self.goto(path) expect(self.page.get_by_role('heading', name='جزئیات واریز', exact=True)).to_be_visible() def copy_all(self): self.page.get_by_role('button', name='کپی کامل اطلاعات', exact=True).click() expect(self.page.get_by_text('کپی شد', exact=True).or_( self.page.get_by_role('heading', name='متن را انتخاب و کپی کنید'))).to_be_visible() if self.page.get_by_role('dialog').is_visible(): self.page.get_by_role('button', name='بستن', exact=True).click() def open_receipt_form(self, linked): if linked: self.page.get_by_role('link', name='ارسال فیش این واریز', exact=True).click() else: self.page.get_by_role('link', name='ارسال فیش واریز مستقل', exact=True).click() expect(self.page.get_by_role('heading', name='ارسال فیش واریزی', exact=True)).to_be_visible() def show_required_errors(self): self.page.get_by_role('button', name='ثبت و ارسال فیش', exact=True).click() expect(self.page.locator('#receipt-errors')).to_be_visible() expect(self.page.locator('#id_paid_amount')).to_be_focused() def submit_payment(self, png, account_id=None): if account_id is not None: self.page.locator('#id_destination_account').select_option(str(account_id)) self.page.get_by_label('شناسه واریز که با آن پرداخت انجام داده‌اید (اختیاری)', exact=True).fill('') expect(self.page.locator('#id_deposit_id')).not_to_have_attribute('required', '') self.page.locator('#id_paid_amount').fill('۱۲۳۴۵') expect(self.page.locator('#id_paid_amount')).to_have_value('۱۲٬۳۴۵') self.page.get_by_role('button', name='امروز', exact=True).click() with self.page.expect_file_chooser() as picker: self.page.locator('label.customer-file-button').click() picker.value.set_files({'name': 'screenshot.png', 'mimeType': 'image/png', 'buffer': png}) expect(self.page.locator('#receipt-file-status')).to_contain_text('screenshot.png') expect(self.page.locator('#receipt-file-preview')).to_be_visible() self.page.get_by_role('button', name='ثبت و ارسال فیش', exact=True).click() expect(self.page.locator('.flash')).to_contain_text('فیش ثبت شد و در انتظار بررسی است.')