Test Results (15 tests)
⏱️ Duration: 705.08s
❌ Error:
browser = <selenium.webdriver.remote.webdriver.WebDriver (session="b260e2f0be36eceed824a9beffefc239")>
def go_to_my_account(browser):
"""
Goes to My Account page with screenshot upload on failure
"""
time.sleep(4)
# Close any modals/popups that might be blocking the menu
skip_offer_modal(browser)
time.sleep(1)
# Try to find and hover over username menu with retry logic and screenshots
max_attempts = 5
for attempt in range(max_attempts):
if is_visible(browser, USERNAME_MENU, 10):
do_hover(browser, USERNAME_MENU, 5)
break
else:
print(f"USERNAME_MENU not visible in go_to_my_account, attempt {attempt + 1}/{max_attempts}")
# Take screenshot and upload to R2
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
job_id = os.getenv('CI_JOB_ID', 'local')
filename = f"my_account_username_missing_{job_id}_{timestamp}_attempt{attempt}.png"
screenshot_url = upload_screenshot_to_r2(browser, filename)
print(f"Screenshot uploaded: {screenshot_url}")
if attempt < max_attempts - 1:
browser.refresh()
time.sleep(4)
skip_offer_modal(browser)
else:
# Final screenshot before failing
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
job_id = os.getenv('CI_JOB_ID', 'local')
filename = f"my_account_username_final_fail_{job_id}_{timestamp}.png"
screenshot_url = upload_screenshot_to_r2(browser, filename)
print(f"Final failure screenshot: {screenshot_url}")
# If username menu never appeared, user might not be logged in
raise AssertionError("USERNAME_MENU never became visible. User may not be logged in.")
# Click My Account
📸 Failure Screenshot:
⏱️ Duration: 173.03s
❌ Error:
fixturefunc = <function ai_provide_website_or_topic at 0x7fd2e1eec430>
request = <FixtureRequest for <Function test_ai08_free_user_generates_a_video_for_the_amazon_product_with_a_store>>
kwargs = {'browser': <selenium.webdriver.remote.webdriver.WebDriver (session="22780534a22f8f2bf58cc8583587b19b")>, 'input1': 'standard_amazon_product'}
def call_fixture_func(
fixturefunc: "_FixtureFunc[FixtureValue]", request: FixtureRequest, kwargs
) -> FixtureValue:
if is_generator(fixturefunc):
fixturefunc = cast(
Callable[..., Generator[FixtureValue, None, None]], fixturefunc
)
generator = fixturefunc(**kwargs)
try:
fixture_result = next(generator)
except StopIteration:
raise ValueError(f"{request.fixturename} did not yield a value") from None
finalizer = functools.partial(_teardown_yield_fixture, fixturefunc, generator)
request.addfinalizer(finalizer)
else:
fixturefunc = cast(Callable[..., FixtureValue], fixturefunc)
> fixture_result = fixturefunc(**kwargs)
venv/lib/python3.10/site-packages/_pytest/fixtures.py:917:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_autopilot_page.py:205: in ai_provide_website_or_topic
bs_fail_with_traceback(browser, ai_provide_website_or_topic, e)
helpers/common_helpers.py:815: in bs_fail_with_traceback
raise exception
tests/test_autopilot_page.py:203: in ai_provide_website_or_topic
provide_web_or_topic_autopilot(browser, inputs[input1])
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
browser = <selenium.webdriver.remote.webdriver.WebDriver (session="22780534a22f8f2bf58cc8583587b19b")>
ai_input = 'amazon.com/dp/B0BRH2RNHX'
def provide_web_or_topic_autopilot(browser, ai_input: str):
"""
ai_input (str): chosen website or topic from testdata.py
act
📸 Failure Screenshot:
⏱️ Duration: 250.30s
❌ Error:
fixturefunc = <function ai_onboarding_timer at 0x7fd2e1eedf30>
request = <FixtureRequest for <Function test_ai09p_free_user_generates_a_video_based_on_amazon_listing_that_contains_videos[amazon_product_with_videos]>>
kwargs = {'browser': <selenium.webdriver.remote.webdriver.WebDriver (session="9fefa106cbd940c44693d590e274dd2f")>}
def call_fixture_func(
fixturefunc: "_FixtureFunc[FixtureValue]", request: FixtureRequest, kwargs
) -> FixtureValue:
if is_generator(fixturefunc):
fixturefunc = cast(
Callable[..., Generator[FixtureValue, None, None]], fixturefunc
)
generator = fixturefunc(**kwargs)
try:
fixture_result = next(generator)
except StopIteration:
raise ValueError(f"{request.fixturename} did not yield a value") from None
finalizer = functools.partial(_teardown_yield_fixture, fixturefunc, generator)
request.addfinalizer(finalizer)
else:
fixturefunc = cast(Callable[..., FixtureValue], fixturefunc)
> fixture_result = fixturefunc(**kwargs)
venv/lib/python3.10/site-packages/_pytest/fixtures.py:917:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_autopilot_page.py:335: in ai_onboarding_timer
bs_fail_with_traceback(browser, ai_onboarding_timer, e)
helpers/common_helpers.py:815: in bs_fail_with_traceback
raise exception
tests/test_autopilot_page.py:333: in ai_onboarding_timer
video_generation_screen_displayed(browser)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
browser = <selenium.webdriver.remote.webdriver.WebDriver (session="9fefa106cbd940c44693d590e274dd2f")>
def video_generation_screen_displayed(browser):
"""
Verify that the video generation screen is displayed
"""
> assert is_visible(browser, AI_GENERATOR_TIMER, 10)
E AssertionError
pages/autopilo
📸 Failure Screenshot:
⏱️ Duration: 182.86s
❌ Error:
fixturefunc = <function ai_onboarding_timer at 0x7fd2e1eedf30>
request = <FixtureRequest for <Function test_ai09p_free_user_generates_a_video_based_on_amazon_listing_that_contains_videos[amazon_product_with_videos2]>>
kwargs = {'browser': <selenium.webdriver.remote.webdriver.WebDriver (session="3af29f29468380244eec9b3f6d4a98f6")>}
def call_fixture_func(
fixturefunc: "_FixtureFunc[FixtureValue]", request: FixtureRequest, kwargs
) -> FixtureValue:
if is_generator(fixturefunc):
fixturefunc = cast(
Callable[..., Generator[FixtureValue, None, None]], fixturefunc
)
generator = fixturefunc(**kwargs)
try:
fixture_result = next(generator)
except StopIteration:
raise ValueError(f"{request.fixturename} did not yield a value") from None
finalizer = functools.partial(_teardown_yield_fixture, fixturefunc, generator)
request.addfinalizer(finalizer)
else:
fixturefunc = cast(Callable[..., FixtureValue], fixturefunc)
> fixture_result = fixturefunc(**kwargs)
venv/lib/python3.10/site-packages/_pytest/fixtures.py:917:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_autopilot_page.py:335: in ai_onboarding_timer
bs_fail_with_traceback(browser, ai_onboarding_timer, e)
helpers/common_helpers.py:815: in bs_fail_with_traceback
raise exception
tests/test_autopilot_page.py:333: in ai_onboarding_timer
video_generation_screen_displayed(browser)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
browser = <selenium.webdriver.remote.webdriver.WebDriver (session="3af29f29468380244eec9b3f6d4a98f6")>
def video_generation_screen_displayed(browser):
"""
Verify that the video generation screen is displayed
"""
> assert is_visible(browser, AI_GENERATOR_TIMER, 10)
E AssertionError
pages/autopil
📸 Failure Screenshot:
⏱️ Duration: 406.61s
❌ Error:
fixturefunc = <function skip_the_educational_video at 0x7fd2e1eee4d0>
request = <FixtureRequest for <Function test_ai11_new_user_tries_ai_generation_from_homepage__release>>
kwargs = {'browser': <selenium.webdriver.remote.webdriver.WebDriver (session="ccae8b8a0a558d5e61c5a18d5081a6ae")>}
def call_fixture_func(
fixturefunc: "_FixtureFunc[FixtureValue]", request: FixtureRequest, kwargs
) -> FixtureValue:
if is_generator(fixturefunc):
fixturefunc = cast(
Callable[..., Generator[FixtureValue, None, None]], fixturefunc
)
generator = fixturefunc(**kwargs)
try:
fixture_result = next(generator)
except StopIteration:
raise ValueError(f"{request.fixturename} did not yield a value") from None
finalizer = functools.partial(_teardown_yield_fixture, fixturefunc, generator)
request.addfinalizer(finalizer)
else:
fixturefunc = cast(Callable[..., FixtureValue], fixturefunc)
> fixture_result = fixturefunc(**kwargs)
venv/lib/python3.10/site-packages/_pytest/fixtures.py:917:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_autopilot_page.py:365: in skip_the_educational_video
bs_fail_with_traceback(browser, skip_the_educational_video, e)
helpers/common_helpers.py:815: in bs_fail_with_traceback
raise exception
tests/test_autopilot_page.py:362: in skip_the_educational_video
do_click(browser, AI_GENERATOR_SKIP_VIDEO)
helpers/common_helpers.py:200: in do_click
WebDriverWait(browser, sec, poll_frequency=0.4).until(
venv/lib/python3.10/site-packages/selenium/webdriver/support/wait.py:92: in until
value = method(self._driver)
venv/lib/python3.10/site-packages/selenium/webdriver/support/expected_conditions.py:357: in _predicate
if element and element.is_enabled():
venv/lib/python3.10/site-packages/selenium/webdriver/remote/webelement.py:191: in
📸 Failure Screenshot:
⏱️ Duration: 160.82s
❌ Error:
fixturefunc = <function ai_fetched_assets at 0x7fd2e1eecaf0>
request = <FixtureRequest for <Function test_ai13_new_user_tries_ai_generation_from_homepage_with_custom_dates__release>>
kwargs = {'browser': <selenium.webdriver.remote.webdriver.WebDriver (session="a901c4b607a167bea17196d79c25fe11")>}
def call_fixture_func(
fixturefunc: "_FixtureFunc[FixtureValue]", request: FixtureRequest, kwargs
) -> FixtureValue:
if is_generator(fixturefunc):
fixturefunc = cast(
Callable[..., Generator[FixtureValue, None, None]], fixturefunc
)
generator = fixturefunc(**kwargs)
try:
fixture_result = next(generator)
except StopIteration:
raise ValueError(f"{request.fixturename} did not yield a value") from None
finalizer = functools.partial(_teardown_yield_fixture, fixturefunc, generator)
request.addfinalizer(finalizer)
else:
fixturefunc = cast(Callable[..., FixtureValue], fixturefunc)
> fixture_result = fixturefunc(**kwargs)
venv/lib/python3.10/site-packages/_pytest/fixtures.py:917:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_autopilot_page.py:238: in ai_fetched_assets
bs_fail_with_traceback(browser, ai_fetched_assets, e)
helpers/common_helpers.py:815: in bs_fail_with_traceback
raise exception
tests/test_autopilot_page.py:236: in ai_fetched_assets
assets_fetched_ai(browser, PROMO_BUSINESS_NAME_FETCHED, 3)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
browser = <selenium.webdriver.remote.webdriver.WebDriver (session="a901c4b607a167bea17196d79c25fe11")>
business_name = ('xpath', '//input[contains(@value, "Promo.com")]')
number_colors = 3
def assets_fetched_ai(browser, business_name: tuple, number_colors: int):
"""
First verifies that used is redirected to the 2nd step of the onboarding
📸 Failure Screenshot:
⏱️ Duration: 345.47s
❌ Error:
fixturefunc = <function ai_onboarding_timer at 0x7fd2e1eedf30>
request = <FixtureRequest for <Function test_ai14_new_user_tries_ai_generation_from_homepage_for_amazon_product>>
kwargs = {'browser': <selenium.webdriver.remote.webdriver.WebDriver (session="f9ad6934ec0a6bfb68e0aeffe38d6e6c")>}
def call_fixture_func(
fixturefunc: "_FixtureFunc[FixtureValue]", request: FixtureRequest, kwargs
) -> FixtureValue:
if is_generator(fixturefunc):
fixturefunc = cast(
Callable[..., Generator[FixtureValue, None, None]], fixturefunc
)
generator = fixturefunc(**kwargs)
try:
fixture_result = next(generator)
except StopIteration:
raise ValueError(f"{request.fixturename} did not yield a value") from None
finalizer = functools.partial(_teardown_yield_fixture, fixturefunc, generator)
request.addfinalizer(finalizer)
else:
fixturefunc = cast(Callable[..., FixtureValue], fixturefunc)
> fixture_result = fixturefunc(**kwargs)
venv/lib/python3.10/site-packages/_pytest/fixtures.py:917:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_autopilot_page.py:335: in ai_onboarding_timer
bs_fail_with_traceback(browser, ai_onboarding_timer, e)
helpers/common_helpers.py:815: in bs_fail_with_traceback
raise exception
tests/test_autopilot_page.py:333: in ai_onboarding_timer
video_generation_screen_displayed(browser)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
browser = <selenium.webdriver.remote.webdriver.WebDriver (session="f9ad6934ec0a6bfb68e0aeffe38d6e6c")>
def video_generation_screen_displayed(browser):
"""
Verify that the video generation screen is displayed
"""
> assert is_visible(browser, AI_GENERATOR_TIMER, 10)
E AssertionError
pages/autopilot_page.py:525: AssertionError
📸 Failure Screenshot:
⏱️ Duration: 227.91s
❌ Error:
fixturefunc = <function ai_onboarding_timer at 0x7f44d3197f40>
request = <FixtureRequest for <Function test_ai09p_free_user_generates_a_video_based_on_amazon_listing_that_contains_videos[amazon_product_with_videos3]>>
kwargs = {'browser': <selenium.webdriver.remote.webdriver.WebDriver (session="e960ec657d82cb1324c84f362cb3d429")>}
def call_fixture_func(
fixturefunc: "_FixtureFunc[FixtureValue]", request: FixtureRequest, kwargs
) -> FixtureValue:
if is_generator(fixturefunc):
fixturefunc = cast(
Callable[..., Generator[FixtureValue, None, None]], fixturefunc
)
generator = fixturefunc(**kwargs)
try:
fixture_result = next(generator)
except StopIteration:
raise ValueError(f"{request.fixturename} did not yield a value") from None
finalizer = functools.partial(_teardown_yield_fixture, fixturefunc, generator)
request.addfinalizer(finalizer)
else:
fixturefunc = cast(Callable[..., FixtureValue], fixturefunc)
> fixture_result = fixturefunc(**kwargs)
venv/lib/python3.10/site-packages/_pytest/fixtures.py:917:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_autopilot_page.py:335: in ai_onboarding_timer
bs_fail_with_traceback(browser, ai_onboarding_timer, e)
helpers/common_helpers.py:815: in bs_fail_with_traceback
raise exception
tests/test_autopilot_page.py:333: in ai_onboarding_timer
video_generation_screen_displayed(browser)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
browser = <selenium.webdriver.remote.webdriver.WebDriver (session="e960ec657d82cb1324c84f362cb3d429")>
def video_generation_screen_displayed(browser):
"""
Verify that the video generation screen is displayed
"""
> assert is_visible(browser, AI_GENERATOR_TIMER, 10)
E AssertionError
pages/autopil
📸 Failure Screenshot:
⏱️ Duration: 465.02s
❌ Error:
fixturefunc = <function video_generation_elements_displayed at 0x7f44d342c160>
request = <FixtureRequest for <Function test_ai15_new_user_tries_ai_generation_from_homepage_for_topic>>
kwargs = {'browser': <selenium.webdriver.remote.webdriver.WebDriver (session="9c7002a3d8adb89bec2fd3541d37377c")>}
def call_fixture_func(
fixturefunc: "_FixtureFunc[FixtureValue]", request: FixtureRequest, kwargs
) -> FixtureValue:
if is_generator(fixturefunc):
fixturefunc = cast(
Callable[..., Generator[FixtureValue, None, None]], fixturefunc
)
generator = fixturefunc(**kwargs)
try:
fixture_result = next(generator)
except StopIteration:
raise ValueError(f"{request.fixturename} did not yield a value") from None
finalizer = functools.partial(_teardown_yield_fixture, fixturefunc, generator)
request.addfinalizer(finalizer)
else:
fixturefunc = cast(Callable[..., FixtureValue], fixturefunc)
> fixture_result = fixturefunc(**kwargs)
venv/lib/python3.10/site-packages/_pytest/fixtures.py:917:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/test_autopilot_page.py:345: in video_generation_elements_displayed
bs_fail_with_traceback(browser, video_generation_elements_displayed, e)
helpers/common_helpers.py:815: in bs_fail_with_traceback
raise exception
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
browser = <selenium.webdriver.remote.webdriver.WebDriver (session="9c7002a3d8adb89bec2fd3541d37377c")>
@then('I verify that all video generation elements are displayed')
def video_generation_elements_displayed(browser):
video_related_buttons = [AI_GENERATOR_YOUTUBE_PLAYER, AI_GENERATOR_CHECKBOX, AI_GENERATOR_SKIP_VIDEO]
try:
for element in video_related_buttons:
> assert is_visible(browser
📸 Failure Screenshot: