diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index b62e4e8..4a48ca3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -453,7 +453,6 @@ jobs:
path: |
reports/a11y_report.html
reports/accessibility.json
- reports/accessibility_report.json
reports/accessibility_login_report.json
retention-days: 30
diff --git a/README.md b/README.md
index 27967f5..514daa1 100644
--- a/README.md
+++ b/README.md
@@ -278,7 +278,6 @@ After each run, reports are written to `reports/`:
| `reports/e2e_combined.json` | Merged shard JSON (CI test-summary job) |
| `reports/e2e_summary.md` | Merged Markdown posted to GitHub Step Summary |
| `reports/a11y_report.html` | Accessibility HTML report |
-| `reports/accessibility_report.json` | Structured axe violations JSON |
| `reports/accessibility_*_report.json` | Authenticated-route axe results |
| `reports/performance_metrics.json` | Public-page timing metrics |
| `reports/performance_metrics_auth.json` | Authenticated-route timing metrics |
diff --git a/tests/accessibility/test_accessibility.py b/tests/accessibility/test_accessibility.py
index 5e6b43d..9e3da95 100644
--- a/tests/accessibility/test_accessibility.py
+++ b/tests/accessibility/test_accessibility.py
@@ -2,11 +2,9 @@
Accessibility tests for the Parakh platform using axe-playwright-python.
Targets WCAG 2.1 AA compliance.
-Reports are saved to reports/accessibility_report.json.
+The login page report is saved to reports/accessibility_login_report.json.
"""
-import json
-
import pytest
from playwright.sync_api import Page
@@ -48,27 +46,6 @@ def _critical_violations(axe_results: dict) -> list[dict]:
class TestAxeScans:
- def test_homepage_has_no_critical_axe_violations(self, page: Page):
- """Homepage must pass axe WCAG 2.1 AA scan with no critical/serious issues."""
- _require_axe()
- home = HomePage(page)
- home.go_to_home()
-
- results = _run_axe(page)
- critical = _critical_violations(results)
-
- # Save full report
- report = build_axe_report(results.get("violations", []), page.url)
- save_json_report(report, "accessibility_report.json")
-
- assert len(critical) == 0, (
- f"Found {len(critical)} critical/serious axe violations on homepage:\n"
- + json.dumps(
- [{"id": v["id"], "impact": v["impact"], "description": v["description"]} for v in critical],
- indent=2,
- )
- )
-
def test_login_page_has_no_critical_axe_violations(self, page: Page):
"""Login page must pass axe WCAG 2.1 AA scan with no critical/serious issues.
@@ -108,30 +85,6 @@ def test_login_page_has_no_critical_axe_violations(self, page: Page):
class TestImagesAndLinks:
- def test_images_have_alt_text(self, page: Page):
- """Every
element must have a non-empty alt attribute."""
- home = HomePage(page)
- home.go_to_home()
-
- images = page.locator("img")
- count = images.count()
- if count == 0:
- pytest.skip("No
elements found on the page")
-
- missing_alt = []
- for i in range(count):
- img = images.nth(i)
- alt = img.get_attribute("alt")
- src = img.get_attribute("src") or f"img[{i}]"
- if alt is None:
- missing_alt.append(f"Missing alt: {src}")
- # Note: alt="" is acceptable for decorative images
-
- assert len(missing_alt) == 0, (
- f"{len(missing_alt)} image(s) missing alt attribute:\n"
- + "\n".join(missing_alt)
- )
-
@pytest.mark.xfail(reason="App bug #9 — see docs/app_bugs.md", strict=False)
def test_social_links_have_accessible_names(self, page: Page):
"""Footer icon-only links must have aria-label or visible text."""
@@ -214,58 +167,6 @@ def test_lang_attribute_set(self, page: Page):
f" element must have a non-empty lang attribute, got: '{lang}'"
)
- def test_buttons_have_accessible_names(self, page: Page):
- """Every button must have either visible text or an aria-label."""
- home = HomePage(page)
- home.go_to_home()
-
- buttons = page.locator("button")
- count = buttons.count()
- if count == 0:
- pytest.skip("No