95 lines
3.7 KiB
Python
95 lines
3.7 KiB
Python
|
|
import re, json
|
|
from playwright.sync_api import sync_playwright
|
|
|
|
stages = [
|
|
("Homepage", "https://weval-consulting.com/"),
|
|
("Solutions Enterprise", "https://weval-consulting.com/solutions/wevia-enterprise.html"),
|
|
("Solutions Advisory", "https://weval-consulting.com/solutions/advisory.html"),
|
|
("Marketplace", "https://weval-consulting.com/marketplace"),
|
|
("WEVIA Master", "https://weval-consulting.com/products/wevia-master.html"),
|
|
("Products Index", "https://weval-consulting.com/products/"),
|
|
]
|
|
|
|
results = []
|
|
|
|
with sync_playwright() as p:
|
|
browser = p.chromium.launch(headless=True, args=["--no-sandbox"])
|
|
ctx = browser.new_context(viewport={"width":1440,"height":900})
|
|
page = ctx.new_page()
|
|
|
|
for name, url in stages:
|
|
# Capture console errors
|
|
console_errors = []
|
|
console_warnings = []
|
|
page.on("pageerror", lambda e: console_errors.append(f"pageerror: {str(e)[:120]}"))
|
|
page.on("console", lambda msg: (
|
|
console_errors.append(f"console.error: {msg.text[:120]}") if msg.type == "error"
|
|
else console_warnings.append(f"console.warning: {msg.text[:80]}") if msg.type == "warning"
|
|
else None
|
|
))
|
|
|
|
page.goto(url + "?cb=final-v-pw", wait_until="networkidle", timeout=25000)
|
|
page.wait_for_timeout(2500)
|
|
|
|
# Check if Logout button is visible
|
|
logout_locators = [
|
|
page.locator("#weval-gl"),
|
|
page.locator("#weval-global-logout"),
|
|
page.locator("a:has-text('Logout'):visible"),
|
|
]
|
|
has_logout = False
|
|
for loc in logout_locators:
|
|
if loc.count() > 0:
|
|
try:
|
|
if loc.first.is_visible():
|
|
has_logout = True
|
|
break
|
|
except: pass
|
|
|
|
# Count visible buttons (heuristic for "broken")
|
|
clickable_links = page.locator("a[href]:visible").count()
|
|
clickable_btns = page.locator("button:visible").count()
|
|
|
|
# Check specific WEVIA Master buttons
|
|
btn_info = {}
|
|
if "wevia-master" in url:
|
|
# Look for primary CTAs
|
|
cta_primary = page.locator(".btn-p, .btn-primary").count()
|
|
cta_outline = page.locator(".btn-o, .btn-outline").count()
|
|
back_to_suite = page.locator("a[href*='solutions/']").count()
|
|
btn_info = {
|
|
"cta_primary": cta_primary,
|
|
"cta_outline": cta_outline,
|
|
"back_to_suite": back_to_suite,
|
|
}
|
|
# Try clicking one button to verify it's functional
|
|
try:
|
|
first_cta = page.locator(".btn-p, .btn-primary").first
|
|
if first_cta.count() > 0:
|
|
href = first_cta.get_attribute("href")
|
|
btn_info["first_cta_href"] = href
|
|
except: pass
|
|
|
|
status = "✗ Logout visible!" if has_logout else "✓"
|
|
err_str = f" {len(console_errors)} errors" if console_errors else ""
|
|
warn_str = f" {len(console_warnings)} warns" if console_warnings else ""
|
|
|
|
print(f"{status} {name:<22} links={clickable_links} btns={clickable_btns}{err_str}{warn_str}")
|
|
if console_errors[:3]:
|
|
for e in console_errors[:3]:
|
|
print(f" {e}")
|
|
if btn_info:
|
|
print(f" buttons: {btn_info}")
|
|
|
|
results.append({
|
|
"name": name, "url": url, "has_logout": has_logout,
|
|
"errors": console_errors[:5], "warnings_count": len(console_warnings),
|
|
"btn_info": btn_info
|
|
})
|
|
|
|
browser.close()
|
|
|
|
with open("/opt/weval-l99/pw-logout-check.json", "w") as f:
|
|
json.dump(results, f, indent=2)
|