{
  "name": "Aditus — AAI Public Accessibility Test Site",
  "operator": "Accessibility Assurance Institute",
  "url": "https://aditus.ie",
  "lab": "https://aditus.ie/lab.html",
  "purpose": "A deliberately imperfect public accessibility test target for scanners, manual testing, training and remediation demonstrations.",
  "important_note": "Not every test can or should be detected automatically. The manifest contains automated, manual and mixed test cases.",
  "version": "1.4",
  "test_cases": [
    {
      "id": "ADITUS-001",
      "name": "Meaningful image without text alternative",
      "wcag": [
        "1.1.1"
      ],
      "method": "automated/manual"
    },
    {
      "id": "ADITUS-002",
      "name": "Meaningful image incorrectly marked decorative",
      "wcag": [
        "1.1.1"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-003",
      "name": "Insufficient text contrast",
      "wcag": [
        "1.4.3"
      ],
      "method": "automated"
    },
    {
      "id": "ADITUS-004",
      "name": "Error identified through colour alone",
      "wcag": [
        "1.4.1",
        "3.3.1"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-005",
      "name": "Visible focus indicator removed",
      "wcag": [
        "2.4.7"
      ],
      "method": "manual/automated"
    },
    {
      "id": "ADITUS-006",
      "name": "Positive tabindex disrupts focus order",
      "wcag": [
        "2.4.3"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-007",
      "name": "Heading hierarchy does not represent structure",
      "wcag": [
        "1.3.1"
      ],
      "method": "manual/automated"
    },
    {
      "id": "ADITUS-008",
      "name": "Visual heading lacks heading semantics",
      "wcag": [
        "1.3.1"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-009",
      "name": "Ambiguous link purpose",
      "wcag": [
        "2.4.4"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-010",
      "name": "Empty link accessible name",
      "wcag": [
        "2.4.4",
        "4.1.2"
      ],
      "method": "automated"
    },
    {
      "id": "ADITUS-011",
      "name": "Focusable element hidden from accessibility tree",
      "wcag": [
        "4.1.2"
      ],
      "method": "automated/manual"
    },
    {
      "id": "ADITUS-012",
      "name": "Custom control cannot be operated by keyboard",
      "wcag": [
        "2.1.1"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-013",
      "name": "Custom disclosure lacks programmatic state",
      "wcag": [
        "4.1.2"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-014",
      "name": "Form input lacks accessible label",
      "wcag": [
        "1.3.1",
        "3.3.2"
      ],
      "method": "automated/manual"
    },
    {
      "id": "ADITUS-015",
      "name": "Label references the wrong input",
      "wcag": [
        "1.3.1",
        "3.3.2"
      ],
      "method": "automated/manual"
    },
    {
      "id": "ADITUS-016",
      "name": "aria-describedby references missing content",
      "wcag": [
        "1.3.1"
      ],
      "method": "automated"
    },
    {
      "id": "ADITUS-017",
      "name": "Empty button lacks accessible name",
      "wcag": [
        "4.1.2"
      ],
      "method": "automated"
    },
    {
      "id": "ADITUS-018",
      "name": "Visual list lacks list semantics",
      "wcag": [
        "1.3.1"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-019",
      "name": "Data table does not expose header relationships",
      "wcag": [
        "1.3.1"
      ],
      "method": "automated/manual"
    },
    {
      "id": "ADITUS-020",
      "name": "Pointer target is too small",
      "wcag": [
        "2.5.8"
      ],
      "method": "manual/automated"
    },
    {
      "id": "ADITUS-021",
      "name": "Language change is not programmatically identified",
      "wcag": [
        "3.1.2"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-022",
      "name": "Page language is not programmatically identified",
      "wcag": [
        "3.1.1"
      ],
      "method": "automated"
    },
    {
      "id": "ADITUS-023",
      "name": "Embedded frame lacks accessible name",
      "wcag": [
        "4.1.2"
      ],
      "method": "automated"
    },
    {
      "id": "ADITUS-024",
      "name": "Dynamic status message is not programmatically exposed",
      "wcag": [
        "4.1.3"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-025",
      "name": "Dialog focus is not managed",
      "wcag": [
        "2.4.3"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-026",
      "name": "Dialog lacks programmatic accessible name",
      "wcag": [
        "4.1.2"
      ],
      "method": "manual/automated"
    },
    {
      "id": "ADITUS-027",
      "name": "Fixed-width content prevents reflow",
      "wcag": [
        "1.4.10"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-028",
      "name": "Accessible name contradicts visible label",
      "wcag": [
        "2.5.3"
      ],
      "method": "automated/manual"
    },
    {
      "id": "ADITUS-029",
      "name": "Broken ARIA relationship",
      "wcag": [
        "4.1.2"
      ],
      "method": "automated/manual"
    },
    {
      "id": "ADITUS-030",
      "name": "Text content is clipped after text adaptation",
      "wcag": [
        "1.4.12"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-031",
      "name": "Functionality requires dragging without simple pointer alternative",
      "wcag": [
        "2.5.7"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-032",
      "name": "Region landmark lacks accessible name",
      "wcag": [
        "1.3.1"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-033",
      "name": "ARIA button lacks keyboard behaviour",
      "wcag": [
        "2.1.1",
        "4.1.2"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-034",
      "name": "Instructions rely on visual position",
      "wcag": [
        "1.3.3"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-035",
      "name": "Page title is not descriptive",
      "wcag": [
        "2.4.2"
      ],
      "method": "manual"
    },
    {
      "id": "ADITUS-036",
      "name": "Authentication error is not programmatically announced",
      "wcag": [
        "4.1.3"
      ],
      "method": "manual",
      "location": "/login.php"
    },
    {
      "id": "ADITUS-037",
      "name": "Protected form fields rely on placeholder text",
      "wcag": [
        "1.3.1",
        "3.3.2"
      ],
      "method": "automated/manual",
      "location": "/member.php"
    },
    {
      "id": "ADITUS-038",
      "name": "Protected custom control lacks keyboard activation",
      "wcag": [
        "2.1.1"
      ],
      "method": "manual",
      "location": "/member.php"
    },
    {
      "id": "ADITUS-039",
      "name": "Protected dynamic status is not programmatically announced",
      "wcag": [
        "4.1.3"
      ],
      "method": "manual",
      "location": "/member.php"
    },
    {
      "id": "ADITUS-040",
      "name": "Protected data table lacks header relationships",
      "wcag": [
        "1.3.1"
      ],
      "method": "automated/manual",
      "location": "/member.php"
    },
    {
      "id": "ADITUS-041",
      "name": "Protected link has ambiguous purpose",
      "wcag": [
        "2.4.4"
      ],
      "method": "manual",
      "location": "/member.php"
    },
    {
      "id": "ADITUS-042",
      "name": "Solutions meaningful image lacks alternative text",
      "wcag": [
        "1.1.1"
      ],
      "method": "automated/manual",
      "location": "/solutions.php"
    },
    {
      "id": "ADITUS-043",
      "name": "Solutions links repeat ambiguous visible text",
      "wcag": [
        "2.4.4"
      ],
      "method": "manual",
      "location": "/solutions.php"
    },
    {
      "id": "ADITUS-044",
      "name": "Programme cards contain duplicate DOM identifiers",
      "wcag": [
        "4.1.1"
      ],
      "method": "automated",
      "location": "/programmes.php"
    },
    {
      "id": "ADITUS-045",
      "name": "Programme availability relies on colour",
      "wcag": [
        "1.4.1"
      ],
      "method": "manual",
      "location": "/programmes.php"
    },
    {
      "id": "ADITUS-046",
      "name": "Resource download links have repeated generic names",
      "wcag": [
        "2.4.4"
      ],
      "method": "manual",
      "location": "/resources.php"
    },
    {
      "id": "ADITUS-047",
      "name": "Embedded resource frame lacks accessible name",
      "wcag": [
        "4.1.2"
      ],
      "method": "automated",
      "location": "/resources.php"
    },
    {
      "id": "ADITUS-048",
      "name": "Resource metadata has insufficient colour contrast",
      "wcag": [
        "1.4.3"
      ],
      "method": "automated",
      "location": "/resources.php"
    },
    {
      "id": "ADITUS-049",
      "name": "Event registration pointer target is too small",
      "wcag": [
        "2.5.8"
      ],
      "method": "manual/automated",
      "location": "/events.php"
    },
    {
      "id": "ADITUS-050",
      "name": "Event control references missing descriptive content",
      "wcag": [
        "1.3.1",
        "4.1.2"
      ],
      "method": "automated/manual",
      "location": "/events.php"
    },
    {
      "id": "ADITUS-051",
      "name": "News image has unhelpful alternative text",
      "wcag": [
        "1.1.1"
      ],
      "method": "manual",
      "location": "/news.php"
    },
    {
      "id": "ADITUS-052",
      "name": "News cards repeat generic link text",
      "wcag": [
        "2.4.4"
      ],
      "method": "manual",
      "location": "/news.php"
    },
    {
      "id": "ADITUS-053",
      "name": "News article contains empty heading",
      "wcag": [
        "1.3.1"
      ],
      "method": "automated/manual",
      "location": "/news-community.php"
    },
    {
      "id": "ADITUS-054",
      "name": "Language change is not identified programmatically",
      "wcag": [
        "3.1.2"
      ],
      "method": "manual",
      "location": "/news-community.php"
    },
    {
      "id": "ADITUS-055",
      "name": "News article contains empty link",
      "wcag": [
        "2.4.4",
        "4.1.2"
      ],
      "method": "automated",
      "location": "/news-community.php"
    },
    {
      "id": "ADITUS-056",
      "name": "Career links repeat ambiguous Apply text",
      "wcag": [
        "2.4.4"
      ],
      "method": "manual",
      "location": "/careers.php"
    },
    {
      "id": "ADITUS-057",
      "name": "Career email label references wrong control",
      "wcag": [
        "1.3.1",
        "3.3.2"
      ],
      "method": "automated/manual",
      "location": "/careers.php"
    },
    {
      "id": "ADITUS-058",
      "name": "Career role select lacks accessible label",
      "wcag": [
        "1.3.1",
        "3.3.2"
      ],
      "method": "automated/manual",
      "location": "/careers.php"
    },
    {
      "id": "ADITUS-059",
      "name": "Impact chart relies on visual presentation",
      "wcag": [
        "1.3.1",
        "1.4.1"
      ],
      "method": "manual",
      "location": "/impact.php"
    },
    {
      "id": "ADITUS-060",
      "name": "Impact visual heading lacks heading semantics",
      "wcag": [
        "1.3.1"
      ],
      "method": "manual",
      "location": "/impact.php"
    },
    {
      "id": "ADITUS-061",
      "name": "Member dashboard table lacks header relationships",
      "wcag": [
        "1.3.1"
      ],
      "method": "automated/manual",
      "location": "/member.php"
    },
    {
      "id": "ADITUS-062",
      "name": "Member dashboard heading hierarchy skips levels",
      "wcag": [
        "1.3.1"
      ],
      "method": "automated/manual",
      "location": "/member.php"
    },
    {
      "id": "ADITUS-063",
      "name": "Member dashboard link has ambiguous purpose",
      "wcag": [
        "2.4.4"
      ],
      "method": "manual",
      "location": "/member.php"
    },
    {
      "id": "ADITUS-064",
      "name": "Member telephone label references wrong control",
      "wcag": [
        "1.3.1",
        "3.3.2"
      ],
      "method": "automated/manual",
      "location": "/member-profile.php"
    },
    {
      "id": "ADITUS-065",
      "name": "Member email field references missing help content",
      "wcag": [
        "1.3.1",
        "4.1.2"
      ],
      "method": "automated",
      "location": "/member-profile.php"
    },
    {
      "id": "ADITUS-066",
      "name": "Member profile field relies on placeholder",
      "wcag": [
        "1.3.1",
        "3.3.2"
      ],
      "method": "automated/manual",
      "location": "/member-profile.php"
    },
    {
      "id": "ADITUS-067",
      "name": "Member project filter lacks accessible label",
      "wcag": [
        "1.3.1",
        "3.3.2"
      ],
      "method": "automated/manual",
      "location": "/member-projects.php"
    },
    {
      "id": "ADITUS-068",
      "name": "Member project cards contain duplicate IDs",
      "wcag": [
        "4.1.1"
      ],
      "method": "automated",
      "location": "/member-projects.php"
    },
    {
      "id": "ADITUS-069",
      "name": "Member project control has broken ARIA relationship",
      "wcag": [
        "4.1.2"
      ],
      "method": "automated/manual",
      "location": "/member-projects.php"
    },
    {
      "id": "ADITUS-070",
      "name": "Member documents icon button lacks accessible name",
      "wcag": [
        "4.1.2"
      ],
      "method": "automated",
      "location": "/member-documents.php"
    },
    {
      "id": "ADITUS-071",
      "name": "Member document status relies on colour",
      "wcag": [
        "1.4.1"
      ],
      "method": "manual",
      "location": "/member-documents.php"
    },
    {
      "id": "ADITUS-072",
      "name": "Member document links repeat generic names",
      "wcag": [
        "2.4.4"
      ],
      "method": "manual",
      "location": "/member-documents.php"
    },
    {
      "id": "ADITUS-073",
      "name": "Member message rows are mouse-only controls",
      "wcag": [
        "2.1.1",
        "4.1.2"
      ],
      "method": "manual",
      "location": "/member-messages.php"
    },
    {
      "id": "ADITUS-074",
      "name": "Member message reply field lacks accessible label",
      "wcag": [
        "1.3.1",
        "3.3.2"
      ],
      "method": "automated/manual",
      "location": "/member-messages.php"
    },
    {
      "id": "ADITUS-075",
      "name": "Member notification switches lack programmatic state",
      "wcag": [
        "4.1.2"
      ],
      "method": "automated/manual",
      "location": "/member-settings.php"
    },
    {
      "id": "ADITUS-076",
      "name": "Member new-password field lacks accessible label",
      "wcag": [
        "1.3.1",
        "3.3.2"
      ],
      "method": "automated/manual",
      "location": "/member-settings.php"
    },
    {
      "id": "ADITUS-077",
      "name": "Member password confirmation references missing help",
      "wcag": [
        "1.3.1",
        "4.1.2"
      ],
      "method": "automated",
      "location": "/member-settings.php"
    },
    {
      "id": "ADITUS-078",
      "name": "Member privacy checkbox lacks programmatic state",
      "wcag": [
        "4.1.2"
      ],
      "method": "automated/manual",
      "location": "/member-settings.php"
    }
  ],
  "expansion_marker": "AAI_ADITUS_PUBLIC_EXPANSION_PASS1B_V1",
  "secure_expansion_marker": "AAI_ADITUS_SECURE_EXPANSION_PASS2A_V1",
  "secure_expansion_complete_marker": "AAI_ADITUS_SECURE_EXPANSION_PASS2B_V1"
}
