@@ -500,6 +500,26 @@ func TestListSelection(t *testing.T) {
500500 assert.Equal(t, items[1].ID(), l.selectedItem)
501501 golden.RequireEqual(t, []byte(l.View()))
502502 })
503+ t.Run("should skip none selectable items in the middle", func(t *testing.T) {
504+ t.Parallel()
505+ l := New(WithDirection(Forward)).(*list)
506+ l.SetSize(100, 10)
507+ items := []Item{}
508+ item := NewSelectsableItem("Item initial")
509+ items = append(items, item)
510+ items = append(items, NewSimpleItem("None Selectable"))
511+ for i := range 5 {
512+ item := NewSelectsableItem(fmt.Sprintf("Item %d", i))
513+ items = append(items, item)
514+ }
515+ cmd := l.SetItems(items)
516+ if cmd != nil {
517+ cmd()
518+ }
519+ l.SelectItemBelow()
520+ assert.Equal(t, items[2].ID(), l.selectedItem)
521+ golden.RequireEqual(t, []byte(l.View()))
522+ })
503523}
504524
505525type SelectableItem interface {