Add accessibility settings preferences
This commit is contained in:
+77
-3
@@ -2671,9 +2671,9 @@ func TestUIAccessibilityLabelsDescribeFocusableControls(t *testing.T) {
|
||||
func TestFieldFocusAppearanceScalesForHighDPI(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
lo := fieldFocusAppearance(unit.Metric{PxPerDp: 1, PxPerSp: 1}, true)
|
||||
hi := fieldFocusAppearance(unit.Metric{PxPerDp: 2.5, PxPerSp: 2.5}, true)
|
||||
unfocused := fieldFocusAppearance(unit.Metric{PxPerDp: 1, PxPerSp: 1}, false)
|
||||
lo := fieldFocusAppearance(unit.Metric{PxPerDp: 1, PxPerSp: 1}, defaultAccessibilityPreferences(), true)
|
||||
hi := fieldFocusAppearance(unit.Metric{PxPerDp: 2.5, PxPerSp: 2.5}, defaultAccessibilityPreferences(), true)
|
||||
unfocused := fieldFocusAppearance(unit.Metric{PxPerDp: 1, PxPerSp: 1}, defaultAccessibilityPreferences(), false)
|
||||
|
||||
if got := lo.MinHeight; got != 44 {
|
||||
t.Fatalf("fieldFocusAppearance(low).MinHeight = %d, want 44", got)
|
||||
@@ -2935,6 +2935,26 @@ func TestUIStatusToastExpiresAfterConfiguredTimeout(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestUIReducedMotionKeepsStatusToastVisible(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
now := time.Date(2026, time.March, 29, 12, 0, 0, 0, time.UTC)
|
||||
u := newUIWithModel("desktop", vault.Model{})
|
||||
u.now = func() time.Time { return now }
|
||||
u.statusBannerTTL = statusBannerLong
|
||||
u.applyAccessibilityPreferences(accessibilityPreferences{ReducedMotion: true})
|
||||
|
||||
u.showStatusMessage("synchronize vault complete")
|
||||
if !u.statusExpiresAt.IsZero() {
|
||||
t.Fatalf("statusExpiresAt with reduced motion = %v, want zero", u.statusExpiresAt)
|
||||
}
|
||||
|
||||
now = now.Add(statusBannerLong * 2)
|
||||
if got := u.statusToastSurface(); got.Kind != bannerStatus || got.Message != "synchronize vault complete" {
|
||||
t.Fatalf("statusToastSurface() with reduced motion = %#v, want persistent status toast", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUIAutofillStatusSurfaceUsesPendingApproval(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
@@ -3538,6 +3558,60 @@ func TestUIDenseLayoutPreferencePersists(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestUIAccessibilityPreferencesPersist(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
configPath := filepath.Join(t.TempDir(), "ui-prefs.json")
|
||||
|
||||
first := newUIWithSession("desktop", &session.Manager{})
|
||||
first.uiPreferencesPath = configPath
|
||||
first.applyAccessibilityPreferences(accessibilityPreferences{
|
||||
DisplayDensity: displayDensityComfortable,
|
||||
Contrast: contrastHigh,
|
||||
ReducedMotion: true,
|
||||
KeyboardFocus: keyboardFocusProminent,
|
||||
})
|
||||
first.saveUIPreferences()
|
||||
|
||||
second := newUIWithSession("desktop", &session.Manager{})
|
||||
second.uiPreferencesPath = configPath
|
||||
second.loadUIPreferences()
|
||||
|
||||
if second.denseLayout {
|
||||
t.Fatal("denseLayout after reload = true, want comfortable layout preference")
|
||||
}
|
||||
if got := second.accessibilityPrefs; got != (accessibilityPreferences{
|
||||
DisplayDensity: displayDensityComfortable,
|
||||
Contrast: contrastHigh,
|
||||
ReducedMotion: true,
|
||||
KeyboardFocus: keyboardFocusProminent,
|
||||
}) {
|
||||
t.Fatalf("accessibilityPrefs after reload = %#v, want comfortable/high/reduced/prominent", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFieldFocusAppearanceUsesAccessibilityPreferences(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
metric := unit.Metric{PxPerDp: 1, PxPerSp: 1}
|
||||
base := fieldFocusAppearance(metric, defaultAccessibilityPreferences(), true)
|
||||
comfortable := fieldFocusAppearance(metric, accessibilityPreferences{
|
||||
DisplayDensity: displayDensityComfortable,
|
||||
Contrast: contrastHigh,
|
||||
KeyboardFocus: keyboardFocusProminent,
|
||||
}, true)
|
||||
|
||||
if comfortable.MinHeight <= base.MinHeight {
|
||||
t.Fatalf("fieldFocusAppearance(comfortable).MinHeight = %d, want > %d", comfortable.MinHeight, base.MinHeight)
|
||||
}
|
||||
if comfortable.OutlineWidth <= base.OutlineWidth {
|
||||
t.Fatalf("fieldFocusAppearance(prominent).OutlineWidth = %d, want > %d", comfortable.OutlineWidth, base.OutlineWidth)
|
||||
}
|
||||
if comfortable.OutlineColor.A <= base.OutlineColor.A {
|
||||
t.Fatalf("fieldFocusAppearance(high contrast).OutlineColor.A = %d, want > %d", comfortable.OutlineColor.A, base.OutlineColor.A)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUIEntryRowMetricsUseDenseLayout(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user