⏱️ Duration: 15.89s
❌ 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 0x7f4df7d12f20>
billing_page = <pages.billing_page.BillingPage object at 0x7f4dfc36ac50>
@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)
tests/cancellation/test_cancellation.py:70:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/cancellation_page.py:72: in start_cancellation
self.popup.get_by_text(reason, exact=True).click(timeout=self.T_LOAD)
/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 0x7f4dfcdf65c0>
cb = <function Channel.send.<locals>.<lambda> at 0x7f4df7dbd900>
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()
task = asyncio.
📸 Failure Screenshot:
⏱️ Duration: 33.98s
❌ 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 0x7f4df4b3db10>
billing_page = <pages.billing_page.BillingPage object at 0x7f4df4f15c00>
@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 0x7f4dfcdf65c0>
cb = <function Channel.send.<locals>.<lambda> at 0x7f4df7eee9e0>
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: