⏱️ Duration: 20.45s
❌ Error:
self = <tests.test_active_stock.TestActiveStock object at 0x7fcb49382890>
page = <Page url='https://promo.com/activecast/my-videos'>
base_url = 'https://promo.com'
@pytest.mark.skip_smoke
def test_as03_my_videos_action_buttons(self, page: Page, base_url: str) -> None:
"""Logged-in user navigates to My Videos, confirms at least one video exists, and hovers to reveal action buttons."""
login_page = LoginPage(page)
login_page.login_directly(base_url, general_mail(), get_password())
login_page.assert_logged_in_as(fullname)
active_stock = ActiveStockPage(page)
active_stock.navigate_to_active_stock(base_url)
active_stock.go_to_my_videos()
active_stock.assert_has_at_least_one_video()
> active_stock.hover_first_video_and_assert_action_buttons()
tests/test_active_stock.py:57:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pages.active_stock_page.ActiveStockPage object at 0x7fcb49356cb0>
def hover_first_video_and_assert_action_buttons(self) -> None:
"""Hovers the first completed video card, asserts recreate + download appear,
then opens the kebab ("Options for ...") menu and asserts delete appears there.
force=True: the My Videos grid keeps reflowing as thumbnails lazy-load,
so plain hover()'s stability check never settles and times out even
though the card is already visible. force=True skips that check and
dispatches the hover event directly at the element's location.
The kebab trigger is opened via a JS-dispatched click, not Playwright's
click() — real mouse movement to the trigger's coordinates drops the
card's :hover state (which the overlay, including the trigger itself,
depends on) before the click registers, leaving the menu closed.
"""
index = self._first_completed_video_index()
assert index is not None, (
"Ever
📸 Failure Screenshot: