VA025-vis-01 — Both links visible

FAIL — vesper-duplicate-link-text. Two fully visible links share accessible name "Visit section" but point to different destinations. Baseline positive case.

VA025-vis-02 — Second link inside display:none

PASS — no duplicate-link-text. The second link is inside a display:none container and must be excluded from the relational check.

VA025-vis-03 — Second link inside visibility:hidden

PASS — no duplicate-link-text. The second link is inside a visibility:hidden container and must be excluded.

VA025-vis-04 — Second link inside aria-hidden="true"

PASS — no duplicate-link-text. The second link is inside an aria-hidden container and is not in the accessibility tree.

VA025-vis-05 — Second link parent has hidden attribute

PASS — no duplicate-link-text. The second link's parent has the HTML hidden attribute and must be excluded.

VA025-vis-06 — Second link is sr-only (clip-path)

FAIL — vesper-duplicate-link-text. Screen-reader-only content is still in the accessibility tree. The sr-only link must NOT be excluded — it is a real link for AT users. This is the critical over-filter test.

VA025-vis-07 — Second link at position absolute top:-9999px

FAIL — vesper-duplicate-link-text. Off-screen-positioned links (skip-link pattern) remain in the accessibility tree. Must NOT be excluded.

VA025-vis-08 — Second link in offscreen translateX drawer

FAIL — vesper-duplicate-link-text. A link inside a CSS transform offscreen drawer is still in the accessibility tree. Must NOT be excluded.