discourse/spec/system/admin_dashboard_new_features_spec.rb
Martin Brennan bcc34420bb
UX: Remove version from "What's new?" items (#30596)
This version number is a technical detail that controls
what items show up on certain sites, most admins don't
need this level of detail. Remove it here, maybe we can
add it back in some hidden way later if needed.
2025-01-07 10:06:10 +10:00

169 lines
5.6 KiB
Ruby

# frozen_string_literal: true
describe "Admin New Features Page", type: :system do
let(:new_features_page) { PageObjects::Pages::AdminNewFeatures.new }
let(:sidebar) { PageObjects::Components::NavigationMenu::Sidebar.new }
fab!(:admin)
before do
SiteSetting.navigation_menu = "sidebar"
SiteSetting.admin_sidebar_enabled_groups = [
Group::AUTO_GROUPS[:admins],
Group::AUTO_GROUPS[:moderators],
]
sign_in(admin)
end
it "displays new features with screenshot taking precedence over emoji" do
DiscourseUpdates.stubs(:new_features).returns(
[
{
"id" => 7,
"user_id" => 1,
"emoji" => "😍",
"title" => "New feature",
"description" => "New feature description",
"link" => "https://meta.discourse.org",
"tier" => [],
"discourse_version" => "3.3.0.beta4",
"created_at" => "2023-11-10T02:52:41.462Z",
"updated_at" => "2023-11-10T04:28:47.020Z",
"screenshot_url" =>
"/uploads/default/original/1X/bab053dc94dc4e0d357b0e777e3357bb1ac99e12.jpeg",
},
{
"id" => 8,
"user_id" => 1,
"emoji" => "🐼",
"title" => "New feature from previous release",
"description" => "New feature description",
"link" => "https://meta.discourse.org",
"tier" => [],
"discourse_version" => "3.3.0.beta3",
"created_at" => "2023-09-10T02:52:41.462Z",
"updated_at" => "2023-09-10T04:28:47.020Z",
"released_at" => "2023-08-10T04:28:47.020Z",
"screenshot_url" =>
"/uploads/default/original/1X/bab054dc94dc4e0d357b0e777e3357bb1ac99e13.jpeg",
},
],
)
new_features_page.visit
within find(".admin-config-area-card:first-child") do
expect(new_features_page).to have_screenshot
expect(new_features_page).to have_learn_more_link
expect(new_features_page).to have_no_emoji
expect(new_features_page).to have_date("November 2023")
end
within find(".admin-config-area-card:last-child") do
expect(new_features_page).to have_screenshot
expect(new_features_page).to have_learn_more_link
expect(new_features_page).to have_no_emoji
expect(new_features_page).to have_date("August 2023")
end
end
it "displays new features with emoji when no screenshot" do
DiscourseUpdates.stubs(:new_features).returns(
[
{
"id" => 7,
"user_id" => 1,
"emoji" => "😍",
"title" => "New feature",
"description" => "New feature description",
"link" => "https://meta.discourse.org",
"tier" => [],
"discourse_version" => "",
"created_at" => "2023-11-10T02:52:41.462Z",
"updated_at" => "2023-11-10T04:28:47.020Z",
},
],
)
new_features_page.visit
expect(new_features_page).to have_emoji
expect(new_features_page).to have_no_screenshot
end
it "displays experimental feature toggle" do
DiscourseUpdates.stubs(:new_features).returns(
[
{
"id" => 7,
"user_id" => 1,
"emoji" => "😍",
"title" => "New feature",
"description" => "New feature description",
"link" => "https://meta.discourse.org",
"tier" => [],
"discourse_version" => "",
"created_at" => "2023-11-10T02:52:41.462Z",
"updated_at" => "2023-11-10T04:28:47.020Z",
"experiment_setting" => "experimental_form_templates",
},
],
)
new_features_page.visit
expect(new_features_page).to have_toggle_experiment_button
end
it "displays experimental text next to feature title when feature is experimental" do
DiscourseUpdates.stubs(:new_features).returns(
[
{
"id" => 7,
"user_id" => 1,
"emoji" => "😍",
"title" => "New feature",
"description" => "New feature description",
"link" => "https://meta.discourse.org",
"tier" => [],
"discourse_version" => "",
"created_at" => "2023-11-10T02:52:41.462Z",
"updated_at" => "2023-11-10T04:28:47.020Z",
"experiment_setting" => "experimental_form_templates",
},
],
)
new_features_page.visit
expect(new_features_page).to have_experimental_text
end
it "does not display experimental text next to feature title when feature is not experimental" do
DiscourseUpdates.stubs(:new_features).returns(
[
{
"id" => 7,
"user_id" => 1,
"emoji" => "😍",
"title" => "New feature",
"description" => "New feature description",
"link" => "https://meta.discourse.org",
"tier" => [],
"discourse_version" => "",
"created_at" => "2023-11-10T02:52:41.462Z",
"updated_at" => "2023-11-10T04:28:47.020Z",
},
],
)
new_features_page.visit
expect(new_features_page).to have_no_experimental_text
end
it "displays a new feature indicator on the sidebar and clears it when navigating to what's new" do
DiscourseUpdates.stubs(:has_unseen_features?).returns(true)
visit "/admin"
sidebar.toggle_all_sections
expect(sidebar.find_section_link("admin_whats_new")).to have_css(
".sidebar-section-link-suffix.admin-sidebar-nav-link__dot",
)
sidebar.find_section_link("admin_whats_new").click
expect(sidebar.find_section_link("admin_whats_new")).to have_no_css(
".sidebar-section-link-suffix.admin-sidebar-nav-link__dot",
)
end
end