Files
weval-l99/pw-logout-check.py
opus-wire 7f67eb6bdf auto-push
2026-04-18 14:33:55 +02:00

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)