diff --git a/app/assets/javascripts/admin/addon/mixins/setting-component.js b/app/assets/javascripts/admin/addon/mixins/setting-component.js
index e5aab876029..6b9bfbda105 100644
--- a/app/assets/javascripts/admin/addon/mixins/setting-component.js
+++ b/app/assets/javascripts/admin/addon/mixins/setting-component.js
@@ -43,6 +43,7 @@ export default Mixin.create({
   validationMessage: null,
   isSecret: oneWay("setting.secret"),
   setting: null,
+  attributeBindings: ["setting.setting:data-setting"],
 
   @discourseComputed("buffered.value", "setting.value")
   dirty(bufferVal, settingVal) {
diff --git a/spec/system/page_objects/pages/admin_settings.rb b/spec/system/page_objects/pages/admin_settings.rb
new file mode 100644
index 00000000000..441be53746b
--- /dev/null
+++ b/spec/system/page_objects/pages/admin_settings.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+module PageObjects
+  module Pages
+    class AdminSettings < PageObjects::Pages::Base
+      def visit_filtered_plugin_setting(filter)
+        visit("/admin/site_settings/category/plugins?filter=#{filter}")
+        self
+      end
+
+      def toggle_setting(setting_name, text = '')
+        setting = find(".admin-detail .row.setting[data-setting='#{setting_name}']")
+        setting.find('.setting-value span', text: text).click
+        setting.find('.setting-controls button.ok').click
+      end
+    end
+  end
+end
diff --git a/spec/system/page_objects/pages/category.rb b/spec/system/page_objects/pages/category.rb
index 2acf73c835c..9c78a2e6f77 100644
--- a/spec/system/page_objects/pages/category.rb
+++ b/spec/system/page_objects/pages/category.rb
@@ -6,12 +6,12 @@ module PageObjects
       # keeping the various category related features combined for now
 
       def visit(category)
-        Capybara.current_session.visit("/c/#{category.id}")
+        page.visit("/c/#{category.id}")
         self
       end
 
       def visit_settings(category)
-        Capybara.current_session.visit("/c/#{category.slug}/edit/settings")
+        page.visit("/c/#{category.slug}/edit/settings")
         self
       end
 
@@ -25,8 +25,8 @@ module PageObjects
         self
       end
 
-      def toggle_setting(text)
-        find('.edit-category-tab label.checkbox-label', text: text).click
+      def toggle_setting(setting, text = '')
+        find(".edit-category-tab .#{setting} label.checkbox-label", text: text).click
         self
       end
     end
diff --git a/spec/system/page_objects/pages/user.rb b/spec/system/page_objects/pages/user.rb
new file mode 100644
index 00000000000..82115d893b9
--- /dev/null
+++ b/spec/system/page_objects/pages/user.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module PageObjects
+  module Pages
+    class User < PageObjects::Pages::Base
+      def find(selector)
+        page.find(".user-content-wrapper #{selector}")
+      end
+
+      def active_user_primary_navigation
+        find(".user-primary-navigation li a.active")
+      end
+
+      def active_user_secondary_navigation
+        find(".user-secondary-navigation li a.active")
+      end
+    end
+  end
+end