ブックマーク検索入力欄を消せません

ブックマーク検索入力に記入してリクエストを送信すると、入力の内容を削除できなくなります。

手順:

  1. ブックマーク検索入力に記入します。
  2. 検索を実行します。
  3. バックスペースキーを押して入力の内容を削除しようとします。
  4. 最初の文字に到達すると、入力の内容は現在のクエリの値にリセットされます。

ビデオ:

「いいね!」 3

私も再現できます。良い発見ですね! :fishing_pole:

「いいね!」 2

それは確かに奇妙ですね。この件に優先度タグを追加しました。今後4週間以内に誰かが確認しますが、それまでに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;

注: _searchTerm の初期値は undefined です。
注: 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を実行するか、JSランドでの変更がシステムテストプロセスで利用可能になる前にbin/ember-cli --buildを実行する必要があります。

「いいね!」 2

(これは開発者トピックに移動すべきでしょう)。

Alan、bin/ember-cli を実行しています(bin/ember-cli --build も試しました)。

何か間違っていますか? :thinking:

「いいね!」 1

変更をGitHubのブランチにプッシュしていただけますか? 何か問題があるか確認するお手伝いができます。

「いいね!」 2

PRを作成しました。

私の問題は、ローカルに変更がない場合でも、これらのデフォルトテストが失敗することです。
具体的には、偽造されたブックマークが利用できないようです。何か正しくロード/書き込みされていないように聞こえます。

PRでは、偽造されたブックマークに依存しない小さなテストを追加したので、ローカルで動作します。

「いいね!」 3

5件の投稿が新しいトピックに分割されました: WSL2システムでテストを実行する際に問題が発生しています

修正がマージされ、バグが修正されました。ありがとうございます! :rocket:

「いいね!」 1