Impossible d'effacer le champ de recherche du signet

Lorsque nous remplissons le champ de recherche des favoris et envoyons la requête, nous ne pouvons pas supprimer le contenu du champ.

Étapes :

  1. Remplir le champ de recherche des favoris
  2. Lancer la recherche
  3. Essayer de supprimer le contenu du champ en appuyant sur la touche retour arrière
  4. En atteignant la première lettre, le contenu du champ est réinitialisé à la valeur de la requête actuelle

Vidéo :

3 « J'aime »

Je peux aussi reproduire cela. Belle prise ! :fishing_pole:

2 « J'aime »

C’est vraiment étrange, j’ai ajouté une étiquette de priorité à cela, quelqu’un examinera cela dans les 4 prochaines semaines, mais si quelqu’un a envie de soumettre une PR entre-temps, vous êtes les bienvenus.

2 « J'aime »

J’ai jeté un œil ; le problème se situe ici :

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

Voici ce qui se passe.

Lorsque vous supprimez le dernier caractère, get est appelé. À ce stade, _searchTerm est vide.
Cependant, this._searchTerm || this.q traitera la chaîne vide comme fausse, et la valeur de q sera affichée à la place.

Une solution rapide pourrait être de vérifier de cette façon :

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

Note : la valeur initiale de _searchTerm est undefined.
Note : en raison de computed("q"), le problème ne se produit pas lorsque vous sélectionnez/supprimez (probablement parce que le timing est trop serré pour invalider le cache ?)


Je voulais faire une PR, mais...

les tests principaux (sans modification) échouent pour une raison quelconque.
J’utilise bin/rspec spec/system/user_activity_bookmarks_spec.rb.
Le log indique que la recherche est absente ou que les signets ne sont pas créés.
Manque-t-il quelque chose ?

Logs

(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 « J'aime »

Vous devrez exécuter bin/ember-cli en arrière-plan ou exécuter bin/ember-cli --build avant que vos modifications dans le domaine JS ne soient disponibles pour le processus de test système.

2 « J'aime »

(ceci devrait probablement être déplacé vers un sujet de développement).

Alan, j’exécute bin/ember-cli (j’ai aussi essayé bin/ember-cli --build).

Est-ce que je fais quelque chose de mal ? :thinking:

1 « J'aime »

Pouvez-vous s’il vous plaît pousser vos modifications vers une branche sur GitHub ? Je peux vous aider à examiner ce qui pourrait poser problème.

2 « J'aime »

J’ai fait la PR :

Mon problème est que ces tests par défaut échouent, même sans modifications locales.
Plus précisément, pour les signets fabriqués, ils semblent ne pas être disponibles. Il semble que quelque chose ne soit pas chargé/écrit correctement.

Dans la PR, j’ai ajouté un petit test qui ne repose pas sur un signet fabriqué, il fonctionne donc localement.

3 « J'aime »

5 messages ont été déplacées vers un nouveau sujet : Problèmes d’exécution des tests sur mon système WSL2

La correction a été fusionnée et le bug est corrigé, merci ! :rocket:

1 « J'aime »