Test Results (3 tests)
⏱️ Duration: 24.08s
❌ Error:
self = <tests.test_active_stock.TestActiveStock object at 0x7ff49b7c3d00>
page = <Page url='https://promo.com/active-stock/generate?imageId=1072528872&imageSource=getty&imageTitle=The+man+screaming+w...qpUiWJ_XLJMBk3be4snkQ4bnF_7AwcIxQC5elQhldck%3D&term=Bizarre&searchType=search&searchTerm=Bizarre&searchRatio=vertical'>
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)
active_stock.assert_grid_has_at_least_20_items()
active_stock.hover_second_item_and_assert_activate_btn()
> active_stock.activate_image_and_assert_generate_page()
tests/test_active_stock.py:79:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pages.active_stock_page.ActiveStockPage object at 0x7ff49b7cb730>
def activate_image_and_assert_generate_page(self) -> None:
"""Clicks activate-image, then asserts URL, all generator controls visible, and crop/link controls absent."""
with self.page.expect_navigation(timeout=self.T_NETWORK):
self.page.locator(self.ACTIVATE_IMAGE_BTN).first.click(force=True)
# "networkidle" never resolves on this page (continuous analytics/chat-widget
# traffic), so rely on domcontentloaded plus the action-based waits below.
self.page.wait_for_load_state("domcontentloaded")
assert "/active-stock/generate?imageId=" in self.page.url, (
f"Expected URL to contain '/active-stock/generate?imageId=', got: {self.page.url}"
)
visible_selectors
📸 Failure Screenshot:
⏱️ Duration: 19.25s
❌ Error:
self = <tests.test_active_stock.TestActiveStock object at 0x7ff49b7c39a0>
page = <Page url='https://promo.com/active-stock/generate?imageId=1072528872&imageSource=getty&imageTitle=The+man+screaming+w...qpUiWJ_XLJMBk3be4snkQ4bnF_7AwcIxQC5elQhldck%3D&term=Bizarre&searchType=search&searchTerm=Bizarre&searchRatio=vertical'>
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)
active_stock.click_create_in_nav()
active_stock.assert_grid_has_at_least_20_items()
active_stock.hover_first_item_and_click_activate()
active_stock.select_second_action_template()
active_stock.fill_scene_action(
"The man is indoors, wearing the same pink polo shirt. "
"Preserve his identity, hairstyle, outfit. The man is terrifies and shouts."
)
active_stock.assert_speaker_chip_avatar_visible()
active_stock.fill_scene_text(
"Hi, I'm your ActiveStock Terrified Avatar. "
"I can help you create inspiring content with real footage from places all over the world."
)
active_stock.select_model("Kling 3 Standard")
duration_before_sync = active_stock.get_duration_label()
active_stock.enable_smart_sync()
> active_stock.assert_duration_auto_synced_and_enabled(duration_before_sync)
tests/test_active_stock.py:107:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pages.active_stock_page.ActiveStockPage object at 0x7ff49900b4f0>
previous_label = 'Duration
📸 Failure Screenshot:
⏱️ Duration: 32.58s
❌ Error:
self = <tests.test_active_stock.TestActiveStock object at 0x7ff49b7c0d00>
page = <Page url='https://promo.com/active-stock/generate'>
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)
active_stock.click_upload_photo_and_upload(swans_photo_path)
> active_stock.assert_generate_page_title_contains_filename("swans.jpg")
tests/test_active_stock.py:133:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pages.active_stock_page.ActiveStockPage object at 0x7ff49b7cbcd0>
filename = 'swans.jpg'
def assert_generate_page_title_contains_filename(self, filename: str) -> None:
title = self.page.locator(self.GENERATE_PAGE_TITLE)
> expect(title).to_be_visible(timeout=self.T_UPLOAD)
E AssertionError: Locator expected to be visible
E Actual value: None
E Error: element(s) not found
E Call log:
E - Expect "to_be_visible" with timeout 25000ms
E - waiting for locator("h1.generate-page__title.text-title-micro")
E
E Aria snapshot:
📸 Failure Screenshot: