Test Results (6 tests)
⏱️ Duration: 39.33s
❌ Error:
self = <tests.test_active_stock.TestActiveStock object at 0x7f5f94a2e0b0>
page = <Page url='https://promo.com/active-stock'>
base_url = 'https://promo.com'
def test_as01_smoke_logged_in_create_page(self, page: Page, base_url: str) -> None:
"""Logged-in user on /active-stock sees header nav, curated catalog preview with category tags, recreate-btn on hover, and lands on /generate-from/."""
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)
tests/test_active_stock.py:38:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/active_stock_page.py:68: in navigate_to_active_stock
self.page.wait_for_load_state("networkidle")
/usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:9875: in wait_for_load_state
self._sync(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:580: in wait_for_load_state
return await self._main_frame.wait_for_load_state(**locals_to_params(locals()))
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:298: in wait_for_load_state
return await self._wait_for_load_state_impl(state, timeout)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Frame name= url='https://promo.com/active-stock'>, state = 'networkidle'
timeout = None
async def _wait_for_load_state_impl(
self, state: DocumentLoadState = None, timeout: float = None
) -> None:
if not state:
state = "load"
if state not in ("load", "domcontentloaded", "networkidle", "commit"):
raise Error(
"state: expected one of (load|domcontentloaded|networkidle|commit)"
)
waiter = self._setup_navigation_waiter("wait_for_load_state", timeout)
if
📸 Failure Screenshot:
⏱️ Duration: 37.53s
❌ Error:
self = <tests.test_active_stock.TestActiveStock object at 0x7f5f94a2da20>
page = <Page url='https://promo.com/active-stock'>
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)
tests/test_active_stock.py:63:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/active_stock_page.py:68: in navigate_to_active_stock
self.page.wait_for_load_state("networkidle")
/usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:9875: in wait_for_load_state
self._sync(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:580: in wait_for_load_state
return await self._main_frame.wait_for_load_state(**locals_to_params(locals()))
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:298: in wait_for_load_state
return await self._wait_for_load_state_impl(state, timeout)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Frame name= url='https://promo.com/active-stock'>, state = 'networkidle'
timeout = None
async def _wait_for_load_state_impl(
self, state: DocumentLoadState = None, timeout: float = None
) -> None:
if not state:
state = "load"
if state not in ("load", "domcontentloaded", "networkidle", "commit"):
raise Error(
"state: expected one of (load|domcontentloaded|networkidle|commit)"
)
waiter = self._setup_navigation_waiter("wait_for_load_state", timeout)
if state in
📸 Failure Screenshot:
⏱️ Duration: 37.05s
❌ Error:
self = <tests.test_active_stock.TestActiveStock object at 0x7f5f94a2d6c0>
page = <Page url='https://promo.com/active-stock/create'>
base_url = 'https://promo.com'
@pytest.mark.skip_smoke
def test_as04_generate_page_controls_after_image_activation(self, page: Page, base_url: str) -> None:
"""Logged-in user activates an image from the create grid and verifies all generator controls are visible."""
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_create(base_url)
tests/test_active_stock.py:76:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/active_stock_page.py:72: in navigate_to_create
self.page.wait_for_load_state("networkidle")
/usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:9875: in wait_for_load_state
self._sync(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:580: in wait_for_load_state
return await self._main_frame.wait_for_load_state(**locals_to_params(locals()))
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:298: in wait_for_load_state
return await self._wait_for_load_state_impl(state, timeout)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Frame name= url='https://promo.com/active-stock/create'>
state = 'networkidle', timeout = None
async def _wait_for_load_state_impl(
self, state: DocumentLoadState = None, timeout: float = None
) -> None:
if not state:
state = "load"
if state not in ("load", "domcontentloaded", "networkidle", "commit"):
raise Error(
"state: expected one of (load|domcontentloaded|networkidle|commit)"
)
waiter = self._setup_navigation_waiter("wait_for_load_state", timeout)
📸 Failure Screenshot:
⏱️ Duration: 38.33s
❌ Error:
self = <tests.test_active_stock.TestActiveStock object at 0x7f5f94a2d030>
page = <Page url='https://promo.com/active-stock'>
base_url = 'https://promo.com'
@pytest.mark.skip_smoke
def test_as05_full_generation_flow(self, page: Page, base_url: str) -> None:
"""Logged-in user activates an image, configures Kling 3 Standard generation, and waits for video result."""
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)
tests/test_active_stock.py:89:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/active_stock_page.py:68: in navigate_to_active_stock
self.page.wait_for_load_state("networkidle")
/usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:9875: in wait_for_load_state
self._sync(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:580: in wait_for_load_state
return await self._main_frame.wait_for_load_state(**locals_to_params(locals()))
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:298: in wait_for_load_state
return await self._wait_for_load_state_impl(state, timeout)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Frame name= url='https://promo.com/active-stock'>, state = 'networkidle'
timeout = None
async def _wait_for_load_state_impl(
self, state: DocumentLoadState = None, timeout: float = None
) -> None:
if not state:
state = "load"
if state not in ("load", "domcontentloaded", "networkidle", "commit"):
raise Error(
"state: expected one of (load|domcontentloaded|networkidle|commit)"
)
waiter = self._setup_navigation_waiter("wait_for_load_state", timeout)
if state in self._load_s
📸 Failure Screenshot:
⏱️ Duration: 37.24s
❌ Error:
self = <tests.test_active_stock.TestActiveStock object at 0x7f5f94a2ccd0>
page = <Page url='https://promo.com/active-stock/create'>
base_url = 'https://promo.com'
@pytest.mark.skip_smoke
@pytest.mark.skipif(
_UPLOAD_PHOTO_NOT_ON_TEST03,
reason="Upload Photo not yet deployed to test03 (present on test05 and prod)",
)
def test_as06_upload_own_photo(self, page: Page, base_url: str) -> None:
"""Logged-in user uploads their own photo on the create page and lands on the generate page with it as the source image.
Upload Photo has an asymmetric rollout: present on prod and test05, absent
on test03 (its build's i18n bundle has no upload-photo-* keys, and
upload-photo-btn/upload-photo-input are absent from the DOM there). Skipped
only on test03 until the rollout catches up there.
"""
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_create(base_url)
tests/test_active_stock.py:131:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/active_stock_page.py:72: in navigate_to_create
self.page.wait_for_load_state("networkidle")
/usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:9875: in wait_for_load_state
self._sync(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:580: in wait_for_load_state
return await self._main_frame.wait_for_load_state(**locals_to_params(locals()))
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:298: in wait_for_load_state
return await self._wait_for_load_state_impl(state, timeout)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <Frame name= url='https://promo.com/active-stock/create'>
state = 'networkidle', timeout = None
asyn
📸 Failure Screenshot: