Test Results (6 tests)
⏱️ Duration: 35.84s
❌ Error:
self = <tests.test_autopilot.TestAutopilot object at 0x7f00e3761bd0>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f00e375ec20>
login_page = <pages.login_page.LoginPage object at 0x7f00e375e230>
base_url = 'https://promo.com'
@pytest.mark.skip_testenv
def test_a01p_verify_actions_on_ai_posts_in_planner(
self, autopilot_page, login_page, base_url
):
"""
A01P Verify actions on the AI posts in planner (prod only)
Same scenario as A01T — runs on prod, skipped on testenv.
"""
login_page.login_directly(base_url, email_ai, get_password())
autopilot_page.go_to_planner(base_url)
autopilot_page.ensure_ai_posts_exist()
# i-icon tooltip
autopilot_page.hover_i_icon(1)
autopilot_page.assert_i_icon_tooltip_visible(1)
autopilot_page.assert_ai_badge_tooltip_visible()
# Post 1: full preview checks + regeneration
autopilot_page.open_ai_post(1)
autopilot_page.assert_ai_post_tag_visible()
> autopilot_page.assert_aspect_ratios_visible()
tests/test_autopilot.py:159:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/autopilot_page.py:658: in assert_aspect_ratios_visible
self.page.locator(selector).wait_for(state="visible", timeout=self.T_ACTION)
/usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:20539: in wait_for
self._sync(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:748: in wait_for
await self._frame.wait_for_selector(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:394: in wait_for_selector
await self._channel.send(
/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 0x7f00e375c
📸 Failure Screenshot:
⏱️ Duration: 43.11s
❌ Error:
self = <tests.test_autopilot.TestAutopilot object at 0x7f00e3760f10>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f00e1ac7340>
login_page = <pages.login_page.LoginPage object at 0x7f00e1ac7ee0>
base_url = 'https://promo.com'
@pytest.mark.skip_smoke
def test_a03_verify_validation_errors_for_ai_onboarding(
self, autopilot_page, login_page, base_url
):
"""
A03 Verify validation errors for AI onboarding inputs
Feature scenario:
Given AI user is logged in
When I open Planner
And I click Generate video posts in the banner
And I click Add new brand
Then Continue button is disabled
When I continue without a website
And I click the Generate AI posts button
Then Validation errors are displayed
When I provide business name and business description
Then Validation errors are hidden
"""
> login_page.login_directly(base_url, email_ai, get_password())
tests/test_autopilot.py:227:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/login_page.py:116: in login_directly
self.page.wait_for_function(
/usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:12761: in wait_for_function
self._sync(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_page.py:1151: in wait_for_function
return await self._main_frame.wait_for_function(**locals_to_params(locals()))
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:940: in wait_for_function
await self._channel.send("waitForFunction", self._timeout, params)
/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 0x7f00e375ca60>
cb = <function Channel.send.<loc
📸 Failure Screenshot:
⏱️ Duration: 25.88s
❌ Error:
self = <tests.test_autopilot.TestAutopilot object at 0x7f00e37607c0>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f00e375f520>
login_page = <pages.login_page.LoginPage object at 0x7f00e375f850>
publisher_page = <pages.publisher_page.PublisherPage object at 0x7f00e375c9d0>
base_url = 'https://promo.com'
@pytest.mark.skip_smoke
@pytest.mark.skip_sanity
def test_a06_schedule_an_ai_post(
self, autopilot_page, login_page, publisher_page, base_url
):
"""
A06 Schedule an AI post
Feature scenario:
Given AI user is logged in
When I open Planner
Then I clean all scheduled posts for the current month
When I click on 2 AI Post
And I click the schedule button
And I schedule an AI post (calendar confirm)
And I complete the schedule flow on the publisher page
And I click the view planner button
Then I verify that user is redirected to the planner
Then Assert amount of scheduled posts in planner: 1
"""
login_page.login_directly(base_url, email_ai, get_password())
autopilot_page.go_to_planner(base_url)
autopilot_page.clean_scheduled_posts()
autopilot_page.open_ai_post(2)
autopilot_page.click_schedule_button()
> autopilot_page.schedule_ai_post()
tests/test_autopilot.py:328:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/autopilot_page.py:1096: in schedule_ai_post
apply_btn.wait_for(state="visible", timeout=self.T_ACTION)
/usr/local/lib/python3.10/dist-packages/playwright/sync_api/_generated.py:20539: in wait_for
self._sync(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_locator.py:748: in wait_for
await self._frame.wait_for_selector(
/usr/local/lib/python3.10/dist-packages/playwright/_impl/_frame.py:394: in wait_for_selector
await self._channel.send(
/usr/local/lib/python3.10/dist-packages/p
📸 Failure Screenshot:
⏱️ Duration: 15.40s
❌ Error:
self = <tests.test_autopilot.TestAutopilot object at 0x7f00e3760d00>
autopilot_page = <pages.autopilot_page.AutopilotPage object at 0x7f00e1a32800>
sign_up_page = <pages.sign_up_page.SignUpPage object at 0x7f00e1a33ca0>
my_account_page = <pages.my_account_page.MyAccountPage object at 0x7f00e1a33cd0>
base_url = 'https://promo.com'
@pytest.mark.skip_smoke
def test_a07_free_user_has_no_brand_options_in_wizard(
self, autopilot_page, sign_up_page, my_account_page, base_url
):
"""
A07 Free user does not see my brand or logo options in the autopilot wizard
Feature scenario:
When I create a new account
And I continue without a website (autopilot wizard landing)
Then I verify if there is no option to add brand
When I open the settings page
Then I delete my account
"""
random_email = f"promo.auto.a07.{uuid.uuid4().hex[:8]}@promo.com"
> sign_up_page.create_account(
base_url=base_url,
email=random_email,
full_name=fullname,
password=random_password,
)
tests/test_autopilot.py:353:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pages.sign_up_page.SignUpPage object at 0x7f00e1a33ca0>
base_url = 'https://promo.com', email = 'promo.auto.a07.f22cca96@promo.com'
full_name = 'Automate Promo', password = '123456789'
def create_account(self, base_url: str, email: str, full_name: str, password: str):
"""
Creates a new account by navigating directly to /signup.
Mirrors: signup_process_steps_email(browser, random_email)
Test environments (testingpromo.com) are behind Cloudflare Access —
CF headers are injected at the browser-context level in conftest.py.
"""
self.page.goto(f"{base_url}/signup")
self.page.locator(self.FULL_NAME_INPUT).wait_for(state="visible", timeout=self.T_SLOW)
self.page.l
📸 Failure Screenshot: