louislam/uptime-kuma

Accessibility: Login form missing aria-label and empty h1 tag

Open

Aperta il 1 giu 2026

Vedi su GitHub
 (2 commenti) (0 reazioni) (0 assegnatari)JavaScript (86.760 star) (7844 fork)batch import
feature-requestgood first issue

Descrizione

📑 I have found these related issues/pull requests

The login form (src/components/Login.vue) has a few accessibility issues:

  1. Empty <h1> tag — The <h1 class="h3 mb-3 fw-normal" /> is self-closing with no content. Screen readers announce an empty heading, which is confusing for visually impaired users.

  2. Form missing aria-label — The <form> element has no accessible name, so screen readers don't announce what the form is for.

  3. No timeout on login submission — If the WebSocket connection drops during login, the submit button stays disabled (processing = true) indefinitely with no error feedback to the user.

🛡️ Security Policy

📝 Description

No response

👟 Reproduction steps

  1. Open Uptime Kuma login page
  2. Enable a screen reader (VoiceOver on macOS or NVDA on Windows)
  3. Navigate through the page — notice the empty heading is announced as blank
  4. The form is not announced as "Login form" or similar
  5. For the timeout issue: start login, then disconnect network — button stays disabled forever

👀 Expected behavior

  1. Screen reader should announce a meaningful heading (e.g., "Login" or app name)
  2. Form should be announced as a login form
  3. If login fails due to connection loss, user should see an error message and button should re-enable after ~10 seconds

😓 Actual Behavior

  1. Screen reader announces empty heading
  2. Form has no accessible name
  3. Button stays disabled indefinitely on connection loss with no feedback

🐻 Uptime-Kuma Version

2.4.0

💻 Operating System and Arch

macOS 15 (Apple Silicon)

🌐 Browser

Google Chrome 137 (Official Build) (arm64)

🖥️ Deployment Environment

  • Runtime Environment:
    • Docker: Version X.X.X (Build Y.Y.Y)
    • Docker Compose: Version X.X.X
    • Portainer (BE/CE): Version X.X.X (LTS: Yes/No)
    • MariaDB: Version X.X.X (LTS: Yes/No)
    • Node.js: Version X.X.X (LTS: Yes/No)
    • Kubernetes (K3S/K8S): Version X.X.X (LTS: Yes/No, via [method/tool])
  • Database:
    • SQLite: Embedded
    • MariaDB: Embedded/External
  • Database Storage:
    • Filesystem:
      • Linux: ext4/XFS/Btrfs/ZFS/F2FS
      • macOS: APFS/ HFS+
      • Windows: NTFS/ReFS
    • Storage Medium: HDD/eMMC/SSD/NVMe
  • Uptime Kuma Setup:
    • Number of monitors: X

📝 Relevant log output

Guida contributor