북마크 검색 입력창을 지울 수 없습니다

북마크 검색 입력란에 내용을 입력하고 요청을 보내면, 입력된 내용을 삭제할 수 없습니다.

재현 단계:

  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는 빈 문자열을 falsy로 취급하므로, 대신 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개의 좋아요

JS 변경 사항이 시스템 테스트 프로세스에서 사용 가능하려면 bin/ember-cli를 백그라운드에서 실행하거나 bin/ember-cli --build를 실행해야 합니다.

2개의 좋아요

(이것은 개발 관련 주제로 이동하는 것이 좋을 것 같습니다).

Alan, 저는 bin/ember-cli를 실행하고 있습니다 (bin/ember-cli --build도 시도해 보았습니다).

제가 뭔가 잘못하고 있는 건가요? :thinking:

1개의 좋아요

변경 사항을 GitHub의 브랜치로 push해 주시겠어요? 무엇이 문제일지 확인해 드릴 수 있습니다.

2개의 좋아요

PR를 생성했습니다:

제 문제는 로컬 변경 사항이 없어도 이 기본 테스트가 실패한다는 점입니다.
구체적으로, 생성된(fabricated) 북마크의 경우 사용 가능하지 않은 것 같습니다. 뭔가 제대로 로드되거나 기록되지 않는 것 같습니다.

PR에서는 생성된 북마크에 의존하지 않는 작은 테스트를 추가하여, 제 로컬 환경에서는 정상적으로 작동하도록 했습니다.

3개의 좋아요

게시물 5개가 새 주제로 분리되었습니다: WSL2 시스템에서 테스트 실행 시 문제 발생

수정이 병합되었고 버그가 수정되었습니다. 감사합니다! :rocket:

1개의 좋아요