Не удается очистить поле поиска закладок

При заполнении поля поиска закладок и отправке запроса невозможно удалить содержимое поля.

Шаги:

  1. Заполните поле поиска закладок.

  2. Запустите поиск.

  3. Попробуйте удалить содержимое поля, нажав клавишу Backspace.

  4. При достижении первой буквы содержимое поля сбрасывается до значения текущего запроса.

Видео:

3 лайка

Я тоже могу воспроизвести это. Хорошее обнаружение! :fishing_pole:

2 лайка

Ох, это действительно странно. Я добавил тег приоритета к этому вопросу. Кто-нибудь посмотрит его в течение следующих 4 недель, но если кто-то захочет отправить pull request (PR) в это время, будем рады.

2 лайка

Я посмотрел; проблема здесь:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/controllers/user-activity-bookmarks.js#L33

Вот что происходит.

Когда вы удаляете последний символ, вызывается get. В этот момент _searchTerm пуст.
Однако выражение this._searchTerm || this.q воспринимает пустую строку как ложное значение, и вместо этого отображается значение q.

Быстрое решение может выглядеть так:

return this._searchTerm !== undefined ? this._searchTerm : this.q;

Примечание: начальное значение _searchTermundefined.
Примечание: из-за computed("q") проблема не возникает при выборе/удалении (вероятно, потому что время слишком короткое для инвалидации кэша?).


Я хотел отправить PR, но..

основные тесты (без изменений) по какой-то причине не проходят.
Я использую bin/rspec spec/system/user_activity_bookmarks_spec.rb.
В логах сказано, что либо поиск отсутствует, либо закладки не созданы.
Не упускаю ли я что-то?

Логи

(base) arkshine@HOME:~/discourse$ bin/rspec spec/system/user_activity_bookmarks_spec.rb

Randomized with seed 38172
unknown OID 931304: failed to recognize type of ‘embeddings’. It will be treated as String.
FFF

Failures:

  1. User activity bookmarks can clear the query
    Failure/Error: super

    Capybara::ElementNotFound:
    Unable to find field “bookmark-search” that is not disabled

    ~~~~~ END JS LOGS ~~~~~
    
    # ./spec/system/page_objects/pages/user_activity_bookmarks.rb:24:in `fill_in_search'
    # ./spec/system/page_objects/pages/user_activity_bookmarks.rb:14:in `search_for'
    # ./spec/system/user_activity_bookmarks_spec.rb:51:in `block (2 levels) in <main>'
    
    
  2. User activity bookmarks can filter the list of bookmarks
    Failure/Error: super

    Capybara::ElementNotFound:
    Unable to find field “bookmark-search” that is not disabled

    ~~~~~ END JS LOGS ~~~~~
    
    # ./spec/system/page_objects/pages/user_activity_bookmarks.rb:24:in `fill_in_search'
    # ./spec/system/page_objects/pages/user_activity_bookmarks.rb:14:in `search_for'
    # ./spec/system/user_activity_bookmarks_spec.rb:44:in `block (2 levels) in <main>'
    
    
  3. User activity bookmarks can filter the list of bookmarks from the URL
    Failure/Error: expect(user_activity_bookmarks).to have_topic(bookmark_1.bookmarkable.topic)
    expected #<PageObjects::Pages::UserActivityBookmarks:0x00007f51dcb37b00>.has_topic?(#<Topic id: 699, title: "This is a test topic 0", last_posted_at: nil, created_at: "2025-03-19 04:35:...oad_id: nil, slow_mode_seconds: 0, bannered_until: nil, external_id: nil, visibility_reason_id: nil>) to be truthy, got false

    ~~~~~ END JS LOGS ~~~~~
    
    # ./spec/system/user_activity_bookmarks_spec.rb:40:in `block (2 levels) in <main>'
    
    

Finished in 21.7 seconds (files took 3.8 seconds to load)
3 examples, 3 failures

Failed examples:

rspec ./spec/system/user_activity_bookmarks_spec.rb:50 # User activity bookmarks can clear the query
rspec ./spec/system/user_activity_bookmarks_spec.rb:43 # User activity bookmarks can filter the list of bookmarks
rspec ./spec/system/user_activity_bookmarks_spec.rb:36 # User activity bookmarks can filter the list of bookmarks from the URL

4 лайка

Вам нужно запустить bin/ember-cli в фоновом режиме или выполнить bin/ember-cli --build перед тем, как ваши изменения в JavaScript станут доступны процессу системного тестирования.

2 лайка

(это, вероятно, стоит перенести в тему для разработчиков).

Алан, у меня запущен bin/ember-cli (я также пробовал bin/ember-cli --build).

Я что-то делаю не так? :thinking:

1 лайк

Не могли бы вы отправить свои изменения в ветку на GitHub? Я могу помочь вам проверить, что именно пошло не так.

2 лайка

Я создал PR:

Моя проблема в том, что эти стандартные тесты падают, даже без локальных изменений. В частности, для сгенерированных закладок они, похоже, недоступны. Похоже, что что-то не загружается/не записывается корректно.

В PR я добавил небольшой тест, который не зависит от сгенерированной закладки, поэтому он работает у меня локально.

3 лайка

5 сообщений были перенесены в новую тему: Возникли проблемы с запуском тестов в моей системе WSL2

Исправление слито, и ошибка устранена, спасибо! :rocket:

1 лайк