From 5750ea01cf08c42b2a0ac4350c52a10969e72f52 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 4f23041f1..7eb3a225b 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_text('You have successfully updated the details of this meeting') - expect(page).to have_css(%(span[title="#{permissions.members.last.full_name}"])) - expect(page).to have_no_css(%(span[title="#{permissions.members.first.full_name}"])) + expect(page).to have_css(%(img[alt="#{permissions.members.last.full_name}"])) + expect(page).to have_no_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