Skip to content

Improve sign-in accessibility: explicit input labels and accessible inline link styling#976

Open
Copilot wants to merge 4 commits into
mainfrom
copilot/fix-accessibility-issues-sign-in
Open

Improve sign-in accessibility: explicit input labels and accessible inline link styling#976
Copilot wants to merge 4 commits into
mainfrom
copilot/fix-accessibility-issues-sign-in

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented May 21, 2026

This updates the /sign-in experience to resolve missing/orphaned label findings and improve inline link accessibility (contrast + non-color distinguishability) without changing auth flow, routing, or layout behavior.

  • Form label association on sign-in

    • Updated app/templates/sign-in.hbs to explicitly bind visible labels to existing input IDs:
      • for="account-field"id="account-field"
      • for="password-field"id="password-field"
    • Preserved existing input IDs used by tests and login behavior.
  • Inline link accessibility styling (scoped)

    • Updated app/styles/local.css to apply accessible inline-link treatment for non-nav, non-button links in main/sign-in content:
      • stronger link color
      • underline + underline offset
      • improved hover/focus color
    • Navbar links and button-style links are excluded.
  • Regression coverage for label semantics

    • Added a focused assertion in cypress/e2e/ui/login.test.ts to verify label-to-input association on /sign-in.
<label for="account-field">Account ID</label>
<el.control id="account-field" />

<label for="password-field">Password</label>
<el.control id="password-field" />

Sign-in accessibility update

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • accounts.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=5465 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/lighthouse.q33Z952 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13901340990921324203,4206398686112755335,262144 --disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,CertificateTransparencyComponentUpdater,DialMediaRouteProvider,InterestFeedContentSuggestions,MediaRouter,OptimizationHints,PaintHolding,PrivacySandboxSettings4,RenderDocument,Tran r (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome-stable --disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,CalculateNativeWinOcclusion,InterestFeedContentSuggestions,CertificateTransparencyComponentUpdater,AutofillServerCommunication,PrivacySandboxSettings4,RenderDocument --disable-extensions --disable-component-extensions-with-REDACTED-pages --disable-REDACTED-networking --disable-component-update --disable-client-side-phishing-detection --disable-sync --metrics-recording-only --disable-default-apps --mute-audio --no-default-browser-check --no-first-run --disable-REDACTEDing-occluded-windows --disable-renderer-REDACTEDing --disable-REDACTED-timer-throttling --disable-ipc-flooding-protection --password-store=basic --use-mock-keychain --force-fieldtrials=*BackgroundTracing/default/ (dns block)
  • android.clients.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=5465 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/lighthouse.q33Z952 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13901340990921324203,4206398686112755335,262144 --disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,CertificateTransparencyComponentUpdater,DialMediaRouteProvider,InterestFeedContentSuggestions,MediaRouter,OptimizationHints,PaintHolding,PrivacySandboxSettings4,RenderDocument,Tran r (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome-stable --disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,CalculateNativeWinOcclusion,InterestFeedContentSuggestions,CertificateTransparencyComponentUpdater,AutofillServerCommunication,PrivacySandboxSettings4,RenderDocument --disable-extensions --disable-component-extensions-with-REDACTED-pages --disable-REDACTED-networking --disable-component-update --disable-client-side-phishing-detection --disable-sync --metrics-recording-only --disable-default-apps --mute-audio --no-default-browser-check --no-first-run --disable-REDACTEDing-occluded-windows --disable-renderer-REDACTEDing --disable-REDACTED-timer-throttling --disable-ipc-flooding-protection --password-store=basic --use-mock-keychain --force-fieldtrials=*BackgroundTracing/default/ (dns block)
  • assets.datacite.org
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=5465 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/lighthouse.q33Z952 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13901340990921324203,4206398686112755335,262144 --disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,CertificateTransparencyComponentUpdater,DialMediaRouteProvider,InterestFeedContentSuggestions,MediaRouter,OptimizationHints,PaintHolding,PrivacySandboxSettings4,RenderDocument,Tran r (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome-stable --disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,CalculateNativeWinOcclusion,InterestFeedContentSuggestions,CertificateTransparencyComponentUpdater,AutofillServerCommunication,PrivacySandboxSettings4,RenderDocument --disable-extensions --disable-component-extensions-with-REDACTED-pages --disable-REDACTED-networking --disable-component-update --disable-client-side-phishing-detection --disable-sync --metrics-recording-only --disable-default-apps --mute-audio --no-default-browser-check --no-first-run --disable-REDACTEDing-occluded-windows --disable-renderer-REDACTEDing --disable-REDACTED-timer-throttling --disable-ipc-flooding-protection --password-store=basic --use-mock-keychain --force-fieldtrials=*BackgroundTracing/default/ (dns block)
  • assets.stage.datacite.org
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=5465 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/lighthouse.q33Z952 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13901340990921324203,4206398686112755335,262144 --disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,CertificateTransparencyComponentUpdater,DialMediaRouteProvider,InterestFeedContentSuggestions,MediaRouter,OptimizationHints,PaintHolding,PrivacySandboxSettings4,RenderDocument,Tran r (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome-stable --disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,CalculateNativeWinOcclusion,InterestFeedContentSuggestions,CertificateTransparencyComponentUpdater,AutofillServerCommunication,PrivacySandboxSettings4,RenderDocument --disable-extensions --disable-component-extensions-with-REDACTED-pages --disable-REDACTED-networking --disable-component-update --disable-client-side-phishing-detection --disable-sync --metrics-recording-only --disable-default-apps --mute-audio --no-default-browser-check --no-first-run --disable-REDACTEDing-occluded-windows --disable-renderer-REDACTEDing --disable-REDACTED-timer-throttling --disable-ipc-flooding-protection --password-store=basic --use-mock-keychain --force-fieldtrials=*BackgroundTracing/default/ (dns block)
  • cdn.jsdelivr.net
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=5465 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/lighthouse.q33Z952 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13901340990921324203,4206398686112755335,262144 --disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,CertificateTransparencyComponentUpdater,DialMediaRouteProvider,InterestFeedContentSuggestions,MediaRouter,OptimizationHints,PaintHolding,PrivacySandboxSettings4,RenderDocument,Tran r (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome-stable --disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,CalculateNativeWinOcclusion,InterestFeedContentSuggestions,CertificateTransparencyComponentUpdater,AutofillServerCommunication,PrivacySandboxSettings4,RenderDocument --disable-extensions --disable-component-extensions-with-REDACTED-pages --disable-REDACTED-networking --disable-component-update --disable-client-side-phishing-detection --disable-sync --metrics-recording-only --disable-default-apps --mute-audio --no-default-browser-check --no-first-run --disable-REDACTEDing-occluded-windows --disable-renderer-REDACTEDing --disable-REDACTED-timer-throttling --disable-ipc-flooding-protection --password-store=basic --use-mock-keychain --force-fieldtrials=*BackgroundTracing/default/ (dns block)
  • cdn.statuspage.io
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=5465 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/lighthouse.q33Z952 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13901340990921324203,4206398686112755335,262144 --disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,CertificateTransparencyComponentUpdater,DialMediaRouteProvider,InterestFeedContentSuggestions,MediaRouter,OptimizationHints,PaintHolding,PrivacySandboxSettings4,RenderDocument,Tran r (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome-stable --disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,CalculateNativeWinOcclusion,InterestFeedContentSuggestions,CertificateTransparencyComponentUpdater,AutofillServerCommunication,PrivacySandboxSettings4,RenderDocument --disable-extensions --disable-component-extensions-with-REDACTED-pages --disable-REDACTED-networking --disable-component-update --disable-client-side-phishing-detection --disable-sync --metrics-recording-only --disable-default-apps --mute-audio --no-default-browser-check --no-first-run --disable-REDACTEDing-occluded-windows --disable-renderer-REDACTEDing --disable-REDACTED-timer-throttling --disable-ipc-flooding-protection --password-store=basic --use-mock-keychain --force-fieldtrials=*BackgroundTracing/default/ (dns block)
  • cdnjs.cloudflare.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=5465 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/lighthouse.q33Z952 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13901340990921324203,4206398686112755335,262144 --disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,CertificateTransparencyComponentUpdater,DialMediaRouteProvider,InterestFeedContentSuggestions,MediaRouter,OptimizationHints,PaintHolding,PrivacySandboxSettings4,RenderDocument,Tran r (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome-stable --disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,CalculateNativeWinOcclusion,InterestFeedContentSuggestions,CertificateTransparencyComponentUpdater,AutofillServerCommunication,PrivacySandboxSettings4,RenderDocument --disable-extensions --disable-component-extensions-with-REDACTED-pages --disable-REDACTED-networking --disable-component-update --disable-client-side-phishing-detection --disable-sync --metrics-recording-only --disable-default-apps --mute-audio --no-default-browser-check --no-first-run --disable-REDACTEDing-occluded-windows --disable-renderer-REDACTEDing --disable-REDACTED-timer-throttling --disable-ipc-flooding-protection --password-store=basic --use-mock-keychain --force-fieldtrials=*BackgroundTracing/default/ (dns block)
  • clients2.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=5465 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/lighthouse.q33Z952 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13901340990921324203,4206398686112755335,262144 --disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,CertificateTransparencyComponentUpdater,DialMediaRouteProvider,InterestFeedContentSuggestions,MediaRouter,OptimizationHints,PaintHolding,PrivacySandboxSettings4,RenderDocument,Tran r (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome-stable --disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,CalculateNativeWinOcclusion,InterestFeedContentSuggestions,CertificateTransparencyComponentUpdater,AutofillServerCommunication,PrivacySandboxSettings4,RenderDocument --disable-extensions --disable-component-extensions-with-REDACTED-pages --disable-REDACTED-networking --disable-component-update --disable-client-side-phishing-detection --disable-sync --metrics-recording-only --disable-default-apps --mute-audio --no-default-browser-check --no-first-run --disable-REDACTEDing-occluded-windows --disable-renderer-REDACTEDing --disable-REDACTED-timer-throttling --disable-ipc-flooding-protection --password-store=basic --use-mock-keychain --force-fieldtrials=*BackgroundTracing/default/ (dns block)
  • download.cypress.io
    • Triggering command: /usr/local/bin/node node index.js --exec install (dns block)
  • fonts.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=5465 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/lighthouse.q33Z952 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13901340990921324203,4206398686112755335,262144 --disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,CertificateTransparencyComponentUpdater,DialMediaRouteProvider,InterestFeedContentSuggestions,MediaRouter,OptimizationHints,PaintHolding,PrivacySandboxSettings4,RenderDocument,Tran r (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome-stable --disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,CalculateNativeWinOcclusion,InterestFeedContentSuggestions,CertificateTransparencyComponentUpdater,AutofillServerCommunication,PrivacySandboxSettings4,RenderDocument --disable-extensions --disable-component-extensions-with-REDACTED-pages --disable-REDACTED-networking --disable-component-update --disable-client-side-phishing-detection --disable-sync --metrics-recording-only --disable-default-apps --mute-audio --no-default-browser-check --no-first-run --disable-REDACTEDing-occluded-windows --disable-renderer-REDACTEDing --disable-REDACTED-timer-throttling --disable-ipc-flooding-protection --password-store=basic --use-mock-keychain --force-fieldtrials=*BackgroundTracing/default/ (dns block)
  • google-analytics.com
    • Triggering command: /usr/local/bin/node node /home/REDACTED/work/bracco/bracco/node_modules/.bin/ember build --environment=production (dns block)
    • Triggering command: /usr/local/bin/node node ./node_modules/.bin/ember serve (dns block)
  • plausible.io
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=5465 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/lighthouse.q33Z952 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13901340990921324203,4206398686112755335,262144 --disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,CertificateTransparencyComponentUpdater,DialMediaRouteProvider,InterestFeedContentSuggestions,MediaRouter,OptimizationHints,PaintHolding,PrivacySandboxSettings4,RenderDocument,Tran r (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome-stable --disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,CalculateNativeWinOcclusion,InterestFeedContentSuggestions,CertificateTransparencyComponentUpdater,AutofillServerCommunication,PrivacySandboxSettings4,RenderDocument --disable-extensions --disable-component-extensions-with-REDACTED-pages --disable-REDACTED-networking --disable-component-update --disable-client-side-phishing-detection --disable-sync --metrics-recording-only --disable-default-apps --mute-audio --no-default-browser-check --no-first-run --disable-REDACTEDing-occluded-windows --disable-renderer-REDACTEDing --disable-REDACTED-timer-throttling --disable-ipc-flooding-protection --password-store=basic --use-mock-keychain --force-fieldtrials=*BackgroundTracing/default/ (dns block)
  • safebrowsingohttpgateway.googleapis.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=5465 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/lighthouse.q33Z952 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13901340990921324203,4206398686112755335,262144 --disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,CertificateTransparencyComponentUpdater,DialMediaRouteProvider,InterestFeedContentSuggestions,MediaRouter,OptimizationHints,PaintHolding,PrivacySandboxSettings4,RenderDocument,Tran r (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome-stable --disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,CalculateNativeWinOcclusion,InterestFeedContentSuggestions,CertificateTransparencyComponentUpdater,AutofillServerCommunication,PrivacySandboxSettings4,RenderDocument --disable-extensions --disable-component-extensions-with-REDACTED-pages --disable-REDACTED-networking --disable-component-update --disable-client-side-phishing-detection --disable-sync --metrics-recording-only --disable-default-apps --mute-audio --no-default-browser-check --no-first-run --disable-REDACTEDing-occluded-windows --disable-renderer-REDACTEDing --disable-REDACTED-timer-throttling --disable-ipc-flooding-protection --password-store=basic --use-mock-keychain --force-fieldtrials=*BackgroundTracing/default/ (dns block)
  • widget.usersnap.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=5465 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/lighthouse.q33Z952 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13901340990921324203,4206398686112755335,262144 --disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,CertificateTransparencyComponentUpdater,DialMediaRouteProvider,InterestFeedContentSuggestions,MediaRouter,OptimizationHints,PaintHolding,PrivacySandboxSettings4,RenderDocument,Tran r (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome-stable --disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,CalculateNativeWinOcclusion,InterestFeedContentSuggestions,CertificateTransparencyComponentUpdater,AutofillServerCommunication,PrivacySandboxSettings4,RenderDocument --disable-extensions --disable-component-extensions-with-REDACTED-pages --disable-REDACTED-networking --disable-component-update --disable-client-side-phishing-detection --disable-sync --metrics-recording-only --disable-default-apps --mute-audio --no-default-browser-check --no-first-run --disable-REDACTEDing-occluded-windows --disable-renderer-REDACTEDing --disable-REDACTED-timer-throttling --disable-ipc-flooding-protection --password-store=basic --use-mock-keychain --force-fieldtrials=*BackgroundTracing/default/ (dns block)
  • www.google.com
    • Triggering command: /proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --no-sandbox --use-angle=swiftshader-webgl --mute-audio --crashpad-handler-pid=5465 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/lighthouse.q33Z952 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,13901340990921324203,4206398686112755335,262144 --disable-features=AutofillServerCommunication,CalculateNativeWinOcclusion,CertificateTransparencyComponentUpdater,DialMediaRouteProvider,InterestFeedContentSuggestions,MediaRouter,OptimizationHints,PaintHolding,PrivacySandboxSettings4,RenderDocument,Tran r (dns block)
    • Triggering command: /opt/google/chrome/chrome /usr/bin/google-chrome-stable --disable-features=Translate,OptimizationHints,MediaRouter,DialMediaRouteProvider,CalculateNativeWinOcclusion,InterestFeedContentSuggestions,CertificateTransparencyComponentUpdater,AutofillServerCommunication,PrivacySandboxSettings4,RenderDocument --disable-extensions --disable-component-extensions-with-REDACTED-pages --disable-REDACTED-networking --disable-component-update --disable-client-side-phishing-detection --disable-sync --metrics-recording-only --disable-default-apps --mute-audio --no-default-browser-check --no-first-run --disable-REDACTEDing-occluded-windows --disable-renderer-REDACTEDing --disable-REDACTED-timer-throttling --disable-ipc-flooding-protection --password-store=basic --use-mock-keychain --force-fieldtrials=*BackgroundTracing/default/ (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

Create a new pull request in datacite/bracco to fix accessibility issues found on http://localhost:4200/sign-in.

Target issue summary:
Current Lighthouse accessibility score: 89.

Issues found:

  • 2 missing form labels
  • 3 contrast errors
  • 2 orphaned form label alerts
  • WAVE highlights account-field and password-field

Required fixes:

1. Fix missing form labels

Likely file:

  • app/templates/sign-in.hbs

Current rendered HTML shows visually present labels that are not programmatically associated with their inputs:

<label>Account ID</label>
<input id="account-field" class="form-control" type="text">

<label>Password</label>
<input id="password-field" class="form-control" type="password">

Update labels to use matching for attributes:

<label for="account-field">Account ID</label>
<input id="account-field" class="form-control" type="text" ...>

<label for="password-field">Password</label>
<input id="password-field" class="form-control" type="password" ...>

If Ember input helpers are used, ensure the rendered input keeps the same IDs and the labels use the exact same values.

2. Fix orphaned form label warnings

WAVE reports orphaned form labels because labels are not associated with controls.
The for / id fixes above should resolve this. Do not remove visible labels.

3. Fix contrast issues on sign-in page

WAVE/Lighthouse show contrast issues on:

  • Forgot password?
  • Need an account?
  • possibly inline auth/help links

Apply accessible inline link styling within main content/forms.

Preferred CSS in app/styles/local.css:

main a:not(.btn):not(.navbar-brand):not(.nav-link) {
  color: #005f8a;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 0.1em;
}

main a:not(.btn):not(.navbar-brand):not(.nav-link):hover,
main a:not(.btn):not(.navbar-brand):not(.nav-link):focus {
  color: #004766;
}

Do not alter:

  • navbar links
  • branded buttons
  • sign-in button styling unless necessary

4. Preserve behavior

Do not change:

  • Ember routes
  • authentication logic
  • form submission behavior
  • input IDs currently used by tests unless updating tests is required
  • visual layout beyond accessibility fixes

5. Validation

After changes:

  • run WAVE on http://localhost:4200/sign-in
  • run Lighthouse Accessibility on http://localhost:4200/sign-in

Expected:

  • missing form label errors resolved
  • orphaned form label alerts resolved
  • contrast warnings reduced/resolved
  • Lighthouse score improves from 89

The following is the prior conversation context from the user's chat exploration (may be truncated):

User: Continue Bracco accessibility fixes.

Current status:

  • WAVE errors are now 0
  • Lighthouse accessibility improved to 96
  • Remaining Lighthouse items:
    • Links rely on color to be distinguishable
    • Identical links have the same purpose
  • WAVE still shows 4 contrast errors on the hero/header area.

Fix remaining issues:

  1. Contrast
    Inspect app/styles/local.css and header/hero styles.
    Fix low contrast in:
  • main h1: “DataCite DOI Fabrica Test”
  • subtitle: “Register and manage DOIs and metadata.”
  • nav links: About, Support, Sign in

Avoid transparent light text on gradient backgrounds.
Use solid high-contrast colors or darken the hero overlay.
Target WCAG AA:

  • normal text >= 4.5:1
  • large text/icons >= 3:1
  1. Links rely only on color
    For inline content links in the main content area, add a non-color indicator.
    Preferred:
  • underline inline text links
  • keep nav/button links visually unchanged

Example:
main a:not(.btn):not(.navbar-brand) {
text-decoration: underline;
}

  1. Identical links have same purpose
    Review repeated links flagged by Lighthouse.
    If two links have identical visible text but different destinations, make the accessible text more specific using aria-label or clearer link text.
    Do not change routes/URLs unless clearly wrong.

Preserve visual layout and Ember behavior.
After changes, rerun WAVE and Lighthouse on http://localhost:4200/.

Assistant: I’ve requested the next round of Bracco accessibility fixes and am waiting for the cloud coding session to return an update.

Once it finishes, I’ll share the PR/task result for the remaining contrast, link distinguishability, and identical-link accessibility issues.

User: @copilot Accepted Confirmation: Confirm cloud agent session

Assistant: Started — I’ve continued the Bracco accessibility work for the remaining contrast and Lighthouse issues.

Track progress here:

data:
    - title: '[WIP] Fix contrast issues in header and hero section for accessibility'
      repository: datacite/bracco
      url: https://github.com/copilot/tasks/pull/PR_kwDOBb0Wo87cl24-?session_id=72a2817b-e55c-4474-ae5e-470f698be04f
      state: queued

I’ll share the result once the update is ready.

User: ````
Continue working on the CURRENT PR/branch only. Do NOT create a new branch or new PR.

Apply the remaining accessibility refinements directly to the existing ...

This pull request was created from Copilot chat.

Copilot AI changed the title [WIP] Fix accessibility issues on sign-in page Improve sign-in accessibility: explicit input labels and accessible inline link styling May 21, 2026
Copilot AI requested a review from ashwinisukale May 21, 2026 08:02
@ashwinisukale ashwinisukale marked this pull request as ready for review May 21, 2026 09:52
Copilot AI temporarily deployed to vercel-bracco-preview May 21, 2026 17:49 Inactive
@ashwinisukale ashwinisukale deployed to vercel-bracco-preview May 22, 2026 17:56 — with GitHub Actions Active
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants