← Back to All Reports
PARTIALLY PASSED (81%)
Job Name
cancellation_test03
Pipeline ID
Job ID
#4466326
Branch
develop
Commit
N/A
Executed At
2026-10-23T18:56:11.186785
13
Passed
3
Failed
0
Skipped

Test Results (16 tests)

test_accept_first_offer[chromium-basic_monthly]
passed
⏱️ Duration: 7.33s
test_accept_first_offer[chromium-standard_monthly]
passed
⏱️ Duration: 7.40s
test_accept_first_offer[chromium-pro_monthly]
passed
⏱️ Duration: 7.47s
test_accept_first_offer[chromium-basic_annual]
failed
⏱️ Duration: 33.21s
❌ Error:
flow = Flow(plan_cta='button[data-qaid*="select-plan-ANNUAL_D1"]', monthly=False, first_offer=Offer(title='Having commitment ...1), second_offer=Offer(title='A special offer just for you!', card='.ncf-plan-card--half_price_annual_basic', cards=1)) cancellation_page = <pages.cancellation_page.CancellationPage object at 0x7f1ee1c743d0> billing_page = <pages.billing_page.BillingPage object at 0x7f1ee08f4af0> @pytest.mark.parametrize("flow", FLOWS, indirect=True) def test_accept_first_offer(flow, cancellation_page, billing_page): """'Can't find videos' → skip experts screen → accept 1st offer → subscription pending update.""" cancellation_page.start_cancellation(C.REASON_CANT_FIND_VIDEOS) cancellation_page.assert_offer(flow.first_offer) > cancellation_page.accept_offer() tests/cancellation/test_cancellation.py:72: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/cancellation_page.py:90: in accept_offer self.popup.get_by_role("button", name="Ok").click(timeout=self.T_NETWORK) /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:17876: in click self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:165: in click return await self._frame._click(self._selector, strict=True, **params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:593: in _click await self._channel.send("click", self._timeout, locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send return await self._connection.wrap_api_call( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <playwright._impl._connection.Connection object at 0x7f1ee1c98b80> cb = <function Channel.send.<locals>.<lambda> at 0x7f1ee033ba30> is_internal = False, title = None async def wrap_api_call( self, cb: Callable[[], Any], is_internal: bool = False, title: str = None
📸 Failure Screenshot:
Test failure screenshot
test_accept_first_offer[chromium-standard_annual]
passed
⏱️ Duration: 7.08s
test_accept_first_offer[chromium-pro_annual]
passed
⏱️ Duration: 7.36s
test_accept_second_offer[chromium-basic_monthly]
passed
⏱️ Duration: 9.11s
test_accept_second_offer[chromium-standard_monthly]
passed
⏱️ Duration: 7.78s
test_accept_second_offer[chromium-pro_monthly]
passed
⏱️ Duration: 8.37s
test_accept_second_offer[chromium-basic_annual]
failed
⏱️ Duration: 34.06s
❌ Error:
flow = Flow(plan_cta='button[data-qaid*="select-plan-ANNUAL_D1"]', monthly=False, first_offer=Offer(title='Having commitment ...1), second_offer=Offer(title='A special offer just for you!', card='.ncf-plan-card--half_price_annual_basic', cards=1)) cancellation_page = <pages.cancellation_page.CancellationPage object at 0x7f1ee0c43970> billing_page = <pages.billing_page.BillingPage object at 0x7f1ed9f65900> @pytest.mark.parametrize("flow", FLOWS, indirect=True) def test_accept_second_offer(flow, cancellation_page, billing_page): """'Too expensive' → decline 1st offer → accept 2nd offer → subscription pending update.""" _reach_second_offer(cancellation_page, flow) > cancellation_page.accept_offer() tests/cancellation/test_cancellation.py:80: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/cancellation_page.py:90: in accept_offer self.popup.get_by_role("button", name="Ok").click(timeout=self.T_NETWORK) /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:17876: in click self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:165: in click return await self._frame._click(self._selector, strict=True, **params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:593: in _click await self._channel.send("click", self._timeout, locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send return await self._connection.wrap_api_call( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <playwright._impl._connection.Connection object at 0x7f1ee1c98b80> cb = <function Channel.send.<locals>.<lambda> at 0x7f1ed9a69f30> is_internal = False, title = None async def wrap_api_call( self, cb: Callable[[], Any], is_internal: bool = False, title: str = None ) -> Any: if self._api_zone.get(): return await cb()
📸 Failure Screenshot:
Test failure screenshot
test_accept_second_offer[chromium-standard_annual]
failed
⏱️ Duration: 33.71s
❌ Error:
flow = Flow(plan_cta='button[data-qaid*="select-plan-ANNUAL_D2"]', monthly=False, first_offer=Offer(title='Having commitment ...es?', card=None, cards=1), second_offer=Offer(title='There’s a better way', card='.ncf-plan-card--downgrade', cards=1)) cancellation_page = <pages.cancellation_page.CancellationPage object at 0x7f1ee1c768c0> billing_page = <pages.billing_page.BillingPage object at 0x7f1ed9e78fa0> @pytest.mark.parametrize("flow", FLOWS, indirect=True) def test_accept_second_offer(flow, cancellation_page, billing_page): """'Too expensive' → decline 1st offer → accept 2nd offer → subscription pending update.""" _reach_second_offer(cancellation_page, flow) > cancellation_page.accept_offer() tests/cancellation/test_cancellation.py:80: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ pages/cancellation_page.py:90: in accept_offer self.popup.get_by_role("button", name="Ok").click(timeout=self.T_NETWORK) /usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:17876: in click self._sync( /usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:165: in click return await self._frame._click(self._selector, strict=True, **params) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:593: in _click await self._channel.send("click", self._timeout, locals_to_params(locals())) /usr/local/lib/python3.10/dist-packages/playwright/_impl/_connection.py:76: in send return await self._connection.wrap_api_call( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <playwright._impl._connection.Connection object at 0x7f1ee1c98b80> cb = <function Channel.send.<locals>.<lambda> at 0x7f1ee0c60e50> is_internal = False, title = None async def wrap_api_call( self, cb: Callable[[], Any], is_internal: bool = False, title: str = None ) -> Any: if self._api_zone.get(): return await cb()
📸 Failure Screenshot:
Test failure screenshot
test_accept_second_offer[chromium-pro_annual]
passed
⏱️ Duration: 8.31s
test_cancel_anyway[chromium-standard_monthly]
passed
⏱️ Duration: 5.18s
test_cancel_anyway[chromium-pro_annual]
passed
⏱️ Duration: 5.19s
test_close_offer[chromium-basic_monthly]
passed
⏱️ Duration: 2.81s
test_close_offer[chromium-standard_annual]
passed
⏱️ Duration: 3.53s