Page chrome: #brand-home and #nav-hub are always present — both are same-origin links to /. Bot click → URL change → PASS.
Links & clicks
Page role: Exercises every click outcome the bot knows: URL change, intent scheme (no real navigation), popup, and dead click.
How the bot scores clicks: PASS if URL changes, a new form becomes visible, a popup opens, or the href is tel:/mailto:/sms:/whatsapp:/viber:/tg:. Otherwise FAIL.
Internal navigation PASS
Same-origin <a> to /. Click changes URL → PASS.
Same-origin link to /forms/contact. Click changes URL → PASS.
Same-origin link to /empty. Click changes URL → PASS.
Intent links PASS
Bot does not click these; it verifies the href scheme and scores PASS immediately.
tel: intent — phone conversion link.
mailto: intent — email conversion link.
sms: intent.
whatsapp: intent.
viber: intent.
tg: intent.
Popup PASS
target="_blank" external link. Playwright treats this as a popup → PASS.
<button> that calls window.open('/empty'). No href; popup event → PASS.
Non-<button> with role="button". Bot discovers [role=button]; click opens popup → PASS.
Dead controls FAIL
Visible button with no handler. Click succeeds but no navigation, form, or popup → intentional FAIL.
role="button" with no click effect → intentional FAIL (same scoring rule).