0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-06 13:08:40 +08:00
discourse/spec/system/admin_reports_spec.rb
Alan Guo Xiang Tan 77ec3d235d
FEATURE: Add admin report group filter URLs (#41383)
This PR lets admins open the existing reports index with a report group
selected from the URL.

Previously, `/admin/reports` grouped reports visually, but the selected
group could not be represented in a bookmarkable URL. This keeps the
existing reports index and filter controls while adding URL-backed group
selection for any report group, including groups provided by plugins.
2026-07-07 09:49:48 +08:00

74 lines
2.5 KiB
Ruby
Vendored

# frozen_string_literal: true
describe "Admin Reports" do
fab!(:current_user, :admin)
let(:reports_page) { PageObjects::Pages::AdminReport.new }
before { sign_in(current_user) }
context "when use_legacy_pageviews is true" do
before { SiteSetting.use_legacy_pageviews = true }
it "redirects from site_traffic to consolidated_page_views" do
visit "/admin/reports/site_traffic"
expect(page).to have_current_path("/admin/reports/consolidated_page_views")
end
end
context "when use_legacy_pageviews is false" do
before { SiteSetting.use_legacy_pageviews = false }
it "won't redirects from site_traffic to consolidated_page_views" do
visit "/admin/reports/site_traffic"
expect(page).to have_current_path("/admin/reports/site_traffic")
end
end
it "groups reports under headings, hides legacy reports from the index, and warns on direct access" do
visit "/admin/reports"
within(".admin-reports-group", text: "Engagement") do
expect(page).to have_css(
".admin-section-landing-item__title",
text: I18n.t("reports.signups.title"),
)
end
expect(page).to have_css(".admin-reports-group__title", text: "Traffic")
expect(page).to have_no_css(
".admin-section-landing-item__title",
text: I18n.t("reports.bookmarks.title"),
)
visit "/admin/reports/bookmarks"
expect(page).to have_css(".admin-report")
expect(page).to have_css(
".alert.alert-info",
text: I18n.t("admin_js.admin.reports.legacy_warning"),
)
end
it "lets admins filter report groups from URLs and controls" do
reports_page.visit_index(group: "engagement")
expect(reports_page).to have_current_reports_path(group: "engagement")
expect(reports_page.filter_controls).to have_dropdown_value("Engagement")
expect(reports_page).to have_group("Engagement")
expect(reports_page).to have_no_group("Traffic")
reports_page.filter_controls.select_dropdown_option("Traffic")
expect(reports_page).to have_current_reports_path(group: "traffic")
expect(reports_page.filter_controls).to have_dropdown_value("Traffic")
expect(reports_page).to have_group("Traffic")
expect(reports_page).to have_no_group("Engagement")
reports_page.filter_controls.select_all_dropdown_option
expect(reports_page).to have_current_all_reports_path
expect(reports_page.filter_controls).to have_dropdown_value("All groups")
expect(reports_page).to have_group("Engagement")
expect(reports_page).to have_group("Traffic")
end
end