From 33be9cc1cd5d3821b07356bd8c951effc46416e7 Mon Sep 17 00:00:00 2001 From: Morgan Roderick Date: Sat, 25 Jul 2026 18:44:07 +0200 Subject: [PATCH] fix(js): use Bootstrap 5 vanilla API for tooltips `$('[data-bs-toggle="tooltip"]').tooltip()` is not a function in Bootstrap 5 because the bootstrap gem ships vanilla JS. The resulting TypeError aborted the application.js DOM-ready callback before Chosen was initialised, breaking Chosen-dependent dropdowns. Replace the jQuery call with Bootstrap 5's vanilla API and update the meeting feature spec to assert the organiser avatar's alt text instead of tooltip title, since Bootstrap 5's Tooltip constructor moves title to data-bs-original-title. --- app/assets/javascripts/application.js | 4 +++- spec/features/admin/meeting_spec.rb | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 669d5a754..e48d2d5d6 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -152,5 +152,7 @@ $(function() { no_results_text: 'No results matched' }); - $('[data-bs-toggle="tooltip"]').tooltip(); + document.querySelectorAll('[data-bs-toggle="tooltip"]').forEach((el) => { + new bootstrap.Tooltip(el); + }); }); diff --git a/spec/features/admin/meeting_spec.rb b/spec/features/admin/meeting_spec.rb index 99cfb6519..af3d959ae 100644 --- a/spec/features/admin/meeting_spec.rb +++ b/spec/features/admin/meeting_spec.rb @@ -58,8 +58,8 @@ click_on 'Save' expect(page).to have_content('You have successfully updated the details of this meeting') - expect(page).to have_css(%(span[title="#{permissions.members.last.full_name}"])) - expect(page).not_to have_css(%(span[title="#{permissions.members.first.full_name}"])) + expect(page).to have_css(%(img[alt="#{permissions.members.last.full_name}"])) + expect(page).not_to have_css(%(img[alt="#{permissions.members.first.full_name}"])) end scenario 'adding an organiser', :js do @@ -71,7 +71,7 @@ click_on 'Save' - expect(page).to have_css(%(span[title="#{new_organiser.full_name}"])) + expect(page).to have_css(%(img[alt="#{new_organiser.full_name}"])) end end