← Back to All Reports
TESTS FAILED (17%)
Job Name
billing_test03
Pipeline ID
Job ID
#4449278
Branch
master
Commit
N/A
Executed At
2026-10-13T21:09:15.331076
1
Passed
5
Failed
0
Skipped

Test Results (6 tests)

test_bi02_upgrade_plan_via_change_plan_button[chromium]
passed
⏱️ Duration: 47.30s
test_bi03_downgrade_plan_via_change_plan_button[chromium]
failed
⏱️ Duration: 110.38s
❌ Error:
sign_up_page = <pages.sign_up_page.SignUpPage object at 0x7f1164283a00> pricing_page = <pages.pricing_page.PricingPage object at 0x7f1164283760> billing_page = <pages.billing_page.BillingPage object at 0x7f1164283010> base_url = 'https://test03.testingpromo.com' @pytest.mark.skip_prod def test_bi03_downgrade_plan_via_change_plan_button( sign_up_page, pricing_page, billing_page, base_url ): """ Bi03 User can downgrade his plan using Change plan button. Standard Annual user opens Billing, clicks Change Plan, selects Basic Monthly from the embedded widget, closes the confirmation, and ends up with a pending downgrade (still on Standard until period end). """ email = f"promo.auto.bi03.{uuid.uuid4().hex[:8]}@promo.com" > _signup_and_purchase_plan( sign_up_page, pricing_page, base_url, email, PricingPage.STANDARD_ANNUAL_CTA, monthly=False, ) tests/billing/test_billing.py:106: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/billing/test_billing.py:59: in _signup_and_purchase_plan pricing_page.purchase_plan_direct(plan_button_selector, monthly=monthly) pages/pricing_page.py:179: in purchase_plan_direct self.page.wait_for_function( /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:12761: in wait_for_function self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:1151: in wait_for_function return await self._main_frame.wait_for_function(**locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:940: in wait_for_function await self._channel.send("waitForFunction", self._timeout, params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send return await self._connection.wrap_api_call( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <playwright
📸 Failure Screenshot:
Test failure screenshot
test_bi04_update_payment_method_and_email[chromium]
failed
⏱️ Duration: 15.57s
❌ Error:
sign_up_page = <pages.sign_up_page.SignUpPage object at 0x7f115f750430> pricing_page = <pages.pricing_page.PricingPage object at 0x7f115f751180> billing_page = <pages.billing_page.BillingPage object at 0x7f115f7514b0> base_url = 'https://test03.testingpromo.com' @pytest.mark.skip_prod def test_bi04_update_payment_method_and_email( sign_up_page, pricing_page, billing_page, base_url ): """ Bi04 User can update his payment method and email address. Pro Annual user opens Billing, updates the card to a different valid test card, updates the billing email, and both changes are reflected. """ email = f"promo.auto.bi04.{uuid.uuid4().hex[:8]}@promo.com" > _signup_and_purchase_plan( sign_up_page, pricing_page, base_url, email, PricingPage.PRO_ANNUAL_CTA, monthly=False, ) tests/billing/test_billing.py:136: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/billing/test_billing.py:44: in _signup_and_purchase_plan sign_up_page.create_account( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pages.sign_up_page.SignUpPage object at 0x7f115f750430> base_url = 'https://test03.testingpromo.com' email = 'promo.auto.bi04.0e47c01c@promo.com', full_name = 'Automate Promo' password = '123456789' def create_account(self, base_url: str, email: str, full_name: str, password: str): """ Creates a new account by navigating directly to /signup. Mirrors: signup_process_steps_email(browser, random_email) Test environments (testingpromo.com) are behind Cloudflare Access — CF headers are injected at the browser-context level in conftest.py. """ self.page.goto(f"{base_url}/signup") self.page.locator(self.FULL_NAME_INPUT).wait_for(state="visible", timeout=self.T_SLOW) # On some test envs the cookie banner overlaps the Sign up but
📸 Failure Screenshot:
Test failure screenshot
test_bi05_standard_user_redirected_from_upgrade_page[chromium]
failed
⏱️ Duration: 15.53s
❌ Error:
sign_up_page = <pages.sign_up_page.SignUpPage object at 0x7f115ec22680> pricing_page = <pages.pricing_page.PricingPage object at 0x7f115ec224a0> billing_page = <pages.billing_page.BillingPage object at 0x7f115ec225c0> base_url = 'https://test03.testingpromo.com' @pytest.mark.skip_prod_skip_smoke def test_bi05_standard_user_redirected_from_upgrade_page( sign_up_page, pricing_page, billing_page, base_url ): """ Bi05 Standard user tries to access upgrade page but is redirected to billing. A Standard Monthly user (already on the plan the upgrade page sells) is redirected straight to Billing instead of seeing the upgrade offer. """ email = f"promo.auto.bi05.{uuid.uuid4().hex[:8]}@promo.com" > _signup_and_purchase_plan( sign_up_page, pricing_page, base_url, email, PricingPage.STANDARD_MONTHLY_CTA, monthly=True, ) tests/billing/test_billing.py:165: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/billing/test_billing.py:44: in _signup_and_purchase_plan sign_up_page.create_account( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pages.sign_up_page.SignUpPage object at 0x7f115ec22680> base_url = 'https://test03.testingpromo.com' email = 'promo.auto.bi05.99427038@promo.com', full_name = 'Automate Promo' password = '123456789' def create_account(self, base_url: str, email: str, full_name: str, password: str): """ Creates a new account by navigating directly to /signup. Mirrors: signup_process_steps_email(browser, random_email) Test environments (testingpromo.com) are behind Cloudflare Access — CF headers are injected at the browser-context level in conftest.py. """ self.page.goto(f"{base_url}/signup") self.page.locator(self.FULL_NAME_INPUT).wait_for(state="visible", timeout=self.T_SLOW) # On some test
📸 Failure Screenshot:
Test failure screenshot
test_bi06_basic_monthly_upgrades_via_upgrade_page[chromium]
failed
⏱️ Duration: 15.60s
❌ Error:
sign_up_page = <pages.sign_up_page.SignUpPage object at 0x7f115f751e40> pricing_page = <pages.pricing_page.PricingPage object at 0x7f115ec0f970> billing_page = <pages.billing_page.BillingPage object at 0x7f115ec0fc10> base_url = 'https://test03.testingpromo.com' @pytest.mark.skip_prod_skip_smoke def test_bi06_basic_monthly_upgrades_via_upgrade_page( sign_up_page, pricing_page, billing_page, base_url ): """ Bi06 Basic monthly user upgrades plan to standard via the upgrade page. """ email = f"promo.auto.bi06.{uuid.uuid4().hex[:8]}@promo.com" > _signup_and_purchase_plan( sign_up_page, pricing_page, base_url, email, PricingPage.BASIC_MONTHLY_CTA, monthly=True, ) tests/billing/test_billing.py:186: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/billing/test_billing.py:44: in _signup_and_purchase_plan sign_up_page.create_account( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pages.sign_up_page.SignUpPage object at 0x7f115f751e40> base_url = 'https://test03.testingpromo.com' email = 'promo.auto.bi06.01dc286e@promo.com', full_name = 'Automate Promo' password = '123456789' def create_account(self, base_url: str, email: str, full_name: str, password: str): """ Creates a new account by navigating directly to /signup. Mirrors: signup_process_steps_email(browser, random_email) Test environments (testingpromo.com) are behind Cloudflare Access — CF headers are injected at the browser-context level in conftest.py. """ self.page.goto(f"{base_url}/signup") self.page.locator(self.FULL_NAME_INPUT).wait_for(state="visible", timeout=self.T_SLOW) # On some test envs the cookie banner overlaps the Sign up button and # silently swallows the click (no navigation, no error) — dismiss it first. cookies_btn = self.page.lo
📸 Failure Screenshot:
Test failure screenshot
test_bi07_basic_annual_upgrades_via_upgrade_page[chromium]
failed
⏱️ Duration: 15.65s
❌ Error:
sign_up_page = <pages.sign_up_page.SignUpPage object at 0x7f115ec219c0> pricing_page = <pages.pricing_page.PricingPage object at 0x7f115ec21b40> billing_page = <pages.billing_page.BillingPage object at 0x7f115ec21960> login_page = <pages.login_page.LoginPage object at 0x7f115eb7e980> base_url = 'https://test03.testingpromo.com' @pytest.mark.skip_prod_skip_smoke def test_bi07_basic_annual_upgrades_via_upgrade_page( sign_up_page, pricing_page, billing_page, login_page, base_url ): """ Bi07 Basic annual user upgrades plan to standard via the upgrade page. Covers the signed-out edge case: the upgrade page is reachable while logged out, attempting to upgrade surfaces an inline login form, and completing login finishes the upgrade. Scope note: the source scenario also asserts the Monthly/Annual toggle is hidden on this page (both signed out and signed back in). Verified empirically (2026-09-13) that the toggle IS visible for a signed-out visitor on the current product — that assertion no longer reflects real behavior (the source itself flagged this exact step as "to_improve... please review" even at the time it was written), so it was dropped rather than encoding a false expectation. """ email = f"promo.auto.bi07.{uuid.uuid4().hex[:8]}@promo.com" > _signup_and_purchase_plan( sign_up_page, pricing_page, base_url, email, PricingPage.BASIC_ANNUAL_CTA, monthly=False, ) tests/billing/test_billing.py:226: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/billing/test_billing.py:44: in _signup_and_purchase_plan sign_up_page.create_account( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <pages.sign_up_page.SignUpPage object at 0x7f115ec219c0> base_url = 'https://test03.testingpromo.com' email = 'promo.auto.bi07.8821b88
📸 Failure Screenshot:
Test failure screenshot