2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-03-04 01:15:08 +08:00
discourse/spec/system/admin_groups_list_spec.rb
Krzysztof Kotlarek d992559cea
UX: Prevent page reload on admin groups search (#35960)
When searching for groups in the admin panel, each keystroke was
triggering a full page reload due to `refreshModel: true` on the filter
query parameter. This made the search experience jarring and unusable
for fast typers.

Changes:
- Remove `refreshModel: true` from filter query param
- Add client-side filtering that manually fetches filtered groups
- Maintain server-side filtering and pagination support
- Keep URL sync for bookmarking/sharing

Demo:

https://github.com/user-attachments/assets/431c6632-d459-417d-9e33-a01e7624e260
2025-11-12 09:26:15 +08:00

38 lines
965 B
Ruby

# frozen_string_literal: true
describe "Admin Users Page", type: :system do
fab!(:current_user, :admin)
fab!(:group_1) { Fabricate(:group, name: "group_a") }
fab!(:group_2) { Fabricate(:group, name: "group_b") }
fab!(:group_3) { Fabricate(:group, name: "group_c") }
let(:admin_groups_page) { PageObjects::Pages::AdminGroups.new }
before { sign_in(current_user) }
it "shows list of active users and allows to filter" do
admin_groups_page.visit
expect(admin_groups_page).to have_groups(
%w[
admins
group_a
group_b
group_c
moderators
staff
trust_level_0
trust_level_1
trust_level_2
trust_level_3
trust_level_4
],
)
admin_groups_page.search("group")
expect(admin_groups_page).to have_groups(%w[group_a group_b group_c])
admin_groups_page.search("group_c")
expect(admin_groups_page).to have_groups(%w[group_c])
end
end