Test Results (6 tests)
⏱️ Duration: 93.64s
❌ Error:
self = <tests.test_web_general.TestWebPhase1 object at 0x7fd8fad775e0>
login_page = <pages.login_page.LoginPage object at 0x7fd8fad9c130>
main_page = <pages.main_page.MainPage object at 0x7fd8fad9dff0>
base_url = 'https://promo.com'
@pytest.mark.skip_smoke
def test_w02_verify_clicking_main_logo(self, login_page, main_page, base_url):
"""
W02 Verify clicking main logo
Logo click should redirect to the Planner from: pricing page (not logged),
My Account (logged), and Brand Manager (logged).
"""
page = login_page.page
# Not logged — from pricing page
login_page.go_to_home(base_url)
login_page.skip_cookies()
page.goto(f"{base_url}/pricing")
page.wait_for_load_state("domcontentloaded")
main_page.click_main_logo()
main_page.verify_redirected_to_x(planner_page_title)
# Log in
login_page.login_directly(base_url, general_mail(), get_password())
# Logged — from My Account
page.goto(f"{base_url}/settings")
page.wait_for_load_state("domcontentloaded")
main_page.click_main_logo()
main_page.verify_redirected_to_x(planner_page_title)
# Logged — from Brand Manager
page.locator(MainPage.HEADER_DASHBOARD).wait_for(state="visible", timeout=15_000)
page.locator(MainPage.HEADER_DASHBOARD).hover()
page.locator(MainPage.HEADER_DASHBOARD_BRAND_MANAGER).wait_for(
state="visible", timeout=10_000
)
page.locator(MainPage.HEADER_DASHBOARD_BRAND_MANAGER).click()
page.wait_for_load_state("domcontentloaded")
main_page.click_main_logo()
> main_page.verify_redirected_to_x(planner_page_title)
tests/test_web_general.py:119:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pages.main_page.MainPage object at 0x7fd8fad9dff0>
expected_title = 'Promo Planner'
def verify_redirected_to_x(self, e
📸 Failure Screenshot:
⏱️ Duration: 46.36s
❌ Error:
self = <tests.test_web_general.TestWebPhase1 object at 0x7fd8fad77b80>
login_page = <pages.login_page.LoginPage object at 0x7fd8f9253b50>
my_account_page = <pages.my_account_page.MyAccountPage object at 0x7fd8f9253910>
base_url = 'https://promo.com'
@pytest.mark.skip_smoke
def test_w21_verify_incorrect_change_of_password(
self, login_page, my_account_page, base_url
):
"""
W21 Verify incorrect change of password
Tries to save a new password where confirmation doesn't match; expects an
error message in the settings iframe.
"""
login_page.login_directly(base_url, general_mail(), get_password())
my_account_page.go_to_my_account()
> my_account_page.change_password_incorrectly(
current_pass=get_password(),
new_pass=random_password,
confirm_pass="abcde",
)
tests/test_web_general.py:132:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/my_account_page.py:109: in change_password_incorrectly
settings.locator(self.NEW_PASS_INPUT).wait_for(state="visible", timeout=self.T_LOAD)
/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 0x7fd8fad75960>
cb = <function Channel.send.<locals>.<lambda> at 0x7fd8fa2f9750>
is_internal = False, title = None
async def wrap_api_call(
self, cb: Callable[[], Any], is_internal: bool = False, title: s
📸 Failure Screenshot:
⏱️ Duration: 342.78s
❌ Error:
self = <tests.test_web_general.TestWebPhase1 object at 0x7fd8fad75ab0>
main_page = <pages.main_page.MainPage object at 0x7fd8f8764e50>
@pytest.mark.skip_testenv
@pytest.mark.skip_smoke
@pytest.mark.skip_sanity
def test_w26_promo_performance_tests(self, main_page):
"""
W26 Promo Performance Tests
Navigates to key prod URLs and asserts that server response and DOM
processing times are within acceptable limits.
"""
> main_page.check_performance(_PERF_URLS)
tests/test_web_general.py:206:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
pages/main_page.py:263: in check_performance
server_avg, dom_avg = self.measure_page_performance(url)
pages/main_page.py:256: in measure_page_performance
round(statistics.mean(server_times), 2),
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
data = []
def mean(data):
"""Return the sample arithmetic mean of data.
>>> mean([1, 2, 3, 4, 4])
2.8
>>> from fractions import Fraction as F
>>> mean([F(3, 7), F(1, 21), F(5, 3), F(1, 3)])
Fraction(13, 21)
>>> from decimal import Decimal as D
>>> mean([D("0.5"), D("0.75"), D("0.625"), D("0.375")])
Decimal('0.5625')
If ``data`` is empty, StatisticsError will be raised.
"""
if iter(data) is data:
data = list(data)
n = len(data)
if n < 1:
> raise StatisticsError('mean requires at least one data point')
E statistics.StatisticsError: mean requires at least one data point
/usr/lib/python3.10/statistics.py:328: StatisticsError
📸 Failure Screenshot: