diff --git a/app/assets/javascripts/alert_management/components/alert_management_table.vue b/app/assets/javascripts/alert_management/components/alert_management_table.vue
index c0cac958a4292913ca5e59f1599c4c1cacc5d0c1..fe18b9da560b751ff1c38918c029be9d5aff36ed 100644
--- a/app/assets/javascripts/alert_management/components/alert_management_table.vue
+++ b/app/assets/javascripts/alert_management/components/alert_management_table.vue
@@ -312,6 +312,7 @@ export default {
       <template #table>
         <gl-table
           class="alert-management-table"
+          data-qa-selector="alert_table_container"
           :items="
             alerts
               ? alerts.list
diff --git a/app/assets/javascripts/alerts_settings/components/alerts_form.vue b/app/assets/javascripts/alerts_settings/components/alerts_form.vue
index 388d925196bc80468a47e35171d91688b96b8d79..a0d5cb7f4c3091a3eee7b7a7af93eefba34fc8b0 100644
--- a/app/assets/javascripts/alerts_settings/components/alerts_form.vue
+++ b/app/assets/javascripts/alerts_settings/components/alerts_form.vue
@@ -83,7 +83,7 @@ export default {
     </p>
     <form ref="settingsForm" @submit.prevent="updateAlertsIntegrationSettings">
       <gl-form-group class="gl-pl-0">
-        <gl-form-checkbox v-model="createIssueEnabled" data-qa-selector="create_issue_checkbox">
+        <gl-form-checkbox v-model="createIssueEnabled" data-qa-selector="create_incident_checkbox">
           <span>{{ $options.i18n.createIncident.label }}</span>
         </gl-form-checkbox>
       </gl-form-group>
diff --git a/app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue b/app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue
index 03bc4b825aefea71deb549076082307a8f01f83f..65c3bc732ed7128253b7d1b6535645a189d1caf7 100644
--- a/app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue
+++ b/app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue
@@ -430,6 +430,7 @@ export default {
             v-model="integrationForm.type"
             :disabled="isSelectDisabled"
             class="gl-max-w-full"
+            data-qa-selector="integration_type_dropdown"
             :options="integrationTypesOptions"
           />
 
@@ -461,6 +462,7 @@ export default {
               v-model="integrationForm.name"
               type="text"
               :placeholder="$options.i18n.integrationFormSteps.nameIntegration.placeholder"
+              data-qa-selector="integration_name_field"
               @input="validateName"
             />
           </gl-form-group>
@@ -483,6 +485,7 @@ export default {
               v-model="integrationForm.active"
               :is-loading="loading"
               :label="$options.i18n.integrationFormSteps.nameIntegration.activeToggle"
+              data-qa-selector="active_toggle_container"
               class="gl-mt-4 gl-font-weight-normal"
             />
           </gl-form-group>
@@ -594,6 +597,7 @@ export default {
             category="secondary"
             class="gl-ml-3 js-no-auto-disable"
             data-testid="integration-form-test-and-submit"
+            data-qa-selector="save_and_create_alert_button"
             @click="submit(true)"
           >
             {{ $options.i18n.saveAndTestIntegration }}
@@ -695,6 +699,7 @@ export default {
             :debounce="$options.JSON_VALIDATE_DELAY"
             rows="6"
             max-rows="10"
+            data-qa-selector="test_payload_field"
             @input="validateJson(false)"
           />
         </gl-form-group>
@@ -706,6 +711,7 @@ export default {
             data-testid="send-test-alert"
             variant="confirm"
             class="js-no-auto-disable"
+            data-qa-selector="send_test_alert_button"
             @click="isFormDirty ? null : sendTestAlert()"
           >
             {{ $options.i18n.send }}
diff --git a/app/assets/javascripts/alerts_settings/components/alerts_settings_wrapper.vue b/app/assets/javascripts/alerts_settings/components/alerts_settings_wrapper.vue
index bf456b6adaa78b9d76bdc8f0f4ebab1b9a20c0d9..010cb5721a1d5aef5007a597fda121c6f5a78dec 100644
--- a/app/assets/javascripts/alerts_settings/components/alerts_settings_wrapper.vue
+++ b/app/assets/javascripts/alerts_settings/components/alerts_settings_wrapper.vue
@@ -375,6 +375,7 @@ export default {
         category="secondary"
         variant="confirm"
         data-testid="add-integration-btn"
+        data-qa-selector="add_integration_button"
         class="gl-mt-3"
         @click="setFormVisibility(true)"
       >
diff --git a/app/views/projects/settings/operations/_alert_management.html.haml b/app/views/projects/settings/operations/_alert_management.html.haml
index d80f1e4597cda5b3bc4f6465d72ac79401d2e2d0..7433e81c11cde7ba4e5c849d458ea9bba4fb16db 100644
--- a/app/views/projects/settings/operations/_alert_management.html.haml
+++ b/app/views/projects/settings/operations/_alert_management.html.haml
@@ -3,7 +3,7 @@
 - add_page_specific_style 'page_bundles/alert_management_settings'
 - add_page_specific_style 'page_bundles/incident_management_list'
 
-%section.settings.no-animate#js-alert-management-settings{ class: ('expanded' if expanded) }
+%section.settings.no-animate#js-alert-management-settings{ class: ('expanded' if expanded), data: { qa_selector: 'alerts_settings_content' } }
   .settings-header
     %h4.settings-title.js-settings-toggle.js-settings-toggle-trigger-only
       = _('Alerts')
diff --git a/qa/qa/flow/alert_settings.rb b/qa/qa/flow/alert_settings.rb
new file mode 100644
index 0000000000000000000000000000000000000000..0e884f58773d3926bc0d6f2454ebe0b46026f7fb
--- /dev/null
+++ b/qa/qa/flow/alert_settings.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+module QA
+  module Flow
+    module AlertSettings
+      extend self
+
+      def setup_http_endpoint_and_send_alert(integration_name: nil, payload: nil)
+        integration_name ||= random_word
+        payload ||= { title: random_word, description: random_word }
+        Page::Project::Menu.perform(&:go_to_monitor_settings)
+        Page::Project::Settings::Monitor.perform do |setting|
+          setting.expand_alerts do |alert|
+            alert.add_new_integration
+            alert.select_http_endpoint
+            alert.enter_integration_name(integration_name)
+            alert.activate_integration
+            alert.save_and_create_alert
+            alert.fill_in_test_payload(payload.to_json)
+            alert.send_test_alert
+          end
+        end
+      end
+
+      private
+
+      def random_word
+        Faker::Lorem.word
+      end
+    end
+  end
+end
diff --git a/qa/qa/page/project/monitor/alerts/index.rb b/qa/qa/page/project/monitor/alerts/index.rb
new file mode 100644
index 0000000000000000000000000000000000000000..50b69d59db7fb5ced701046d412182e0a109c2ab
--- /dev/null
+++ b/qa/qa/page/project/monitor/alerts/index.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module QA
+  module Page
+    module Project
+      module Monitor
+        module Alerts
+          class Index < Page::Base
+            view 'app/assets/javascripts/alert_management/components/alert_management_table.vue' do
+              element :alert_table_container, required: true
+            end
+
+            def has_alert_with_title?(title)
+              has_link?(title)
+            end
+          end
+        end
+      end
+    end
+  end
+end
diff --git a/qa/qa/page/project/settings/alerts.rb b/qa/qa/page/project/settings/alerts.rb
index be9b61ded805d66971cd528c65ca00920517ac5e..a74a227d69759f89215dc0392aa9b1ac7389c7a4 100644
--- a/qa/qa/page/project/settings/alerts.rb
+++ b/qa/qa/page/project/settings/alerts.rb
@@ -6,14 +6,27 @@ module Project
       module Settings
         class Alerts < Page::Base
           view 'app/assets/javascripts/alerts_settings/components/alerts_form.vue' do
-            element :create_issue_checkbox
+            element :create_incident_checkbox
             element :incident_templates_dropdown
             element :save_changes_button
             element :incident_templates_item
           end
 
-          def enable_issues_for_incidents
-            check_element(:create_issue_checkbox)
+          view 'app/assets/javascripts/alerts_settings/components/alerts_settings_wrapper.vue' do
+            element :add_integration_button
+          end
+
+          view 'app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue' do
+            element :integration_type_dropdown
+            element :integration_name_field
+            element :active_toggle_container
+            element :save_and_create_alert_button
+            element :test_payload_field
+            element :send_test_alert_button
+          end
+
+          def enable_incident_for_alert
+            check_element(:create_incident_checkbox)
           end
 
           def select_issue_template(template)
@@ -32,6 +45,43 @@ def has_template?(template)
               has_text?(template)
             end
           end
+
+          def add_new_integration
+            wait_for_requests
+            click_element(:add_integration_button)
+          end
+
+          def select_http_endpoint
+            click_element(:integration_type_dropdown)
+            find("option[value='HTTP']").click
+
+            # Click outside of the list to close it
+            click_element(:integration_name_field)
+          end
+
+          def enter_integration_name(name)
+            fill_element(:integration_name_field, name)
+          end
+
+          def activate_integration
+            within_element(:active_toggle_container) do
+              find('.gl-toggle').click
+            end
+
+            wait_for_requests
+          end
+
+          def save_and_create_alert
+            click_element(:save_and_create_alert_button)
+          end
+
+          def fill_in_test_payload(payload)
+            fill_element(:test_payload_field, payload)
+          end
+
+          def send_test_alert
+            click_element(:send_test_alert_button)
+          end
         end
       end
     end
diff --git a/qa/qa/page/project/settings/monitor.rb b/qa/qa/page/project/settings/monitor.rb
index 87fb0698897b3a129afae580eb503d5cf5eb6714..8170ae31a139177c19942176b070985751c274d2 100644
--- a/qa/qa/page/project/settings/monitor.rb
+++ b/qa/qa/page/project/settings/monitor.rb
@@ -11,8 +11,18 @@ class Monitor < Page::Base
             element :incidents_settings_content
           end
 
+          view 'app/views/projects/settings/operations/_alert_management.html.haml' do
+            element :alerts_settings_content
+          end
+
           def expand_incidents(&block)
             expand_content(:incidents_settings_content) do
+              # Fill in with incidents settings
+            end
+          end
+
+          def expand_alerts(&block)
+            expand_content(:alerts_settings_content) do
               Settings::Alerts.perform(&block)
             end
           end
diff --git a/qa/qa/page/project/sub_menus/monitor.rb b/qa/qa/page/project/sub_menus/monitor.rb
index 927b4b6970c0cfc7e37e94bf4b06f0524c5a21a2..27fb58fb146f486cf353a11207b1092e92ab6a9f 100644
--- a/qa/qa/page/project/sub_menus/monitor.rb
+++ b/qa/qa/page/project/sub_menus/monitor.rb
@@ -23,6 +23,14 @@ def go_to_monitor_incidents
             end
           end
 
+          def go_to_monitor_alerts
+            hover_monitor do
+              within_submenu do
+                click_element(:sidebar_menu_item_link, menu_item: 'Alerts')
+              end
+            end
+          end
+
           private
 
           def hover_monitor
diff --git a/qa/qa/specs/features/browser_ui/8_monitor/.gitkeep b/qa/qa/specs/features/browser_ui/8_monitor/.gitkeep
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/qa/qa/specs/features/browser_ui/8_monitor/incident_management/http_endpoint_integration_creates_alert_spec.rb b/qa/qa/specs/features/browser_ui/8_monitor/incident_management/http_endpoint_integration_creates_alert_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..8ea728ca94c2751f0411c4dc7b138f2a5135d1c8
--- /dev/null
+++ b/qa/qa/specs/features/browser_ui/8_monitor/incident_management/http_endpoint_integration_creates_alert_spec.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module QA
+  RSpec.describe 'Monitor', product_group: :respond do
+    describe 'Http endpoint integration' do
+      let(:project) do
+        Resource::Project.fabricate_via_api! do |project|
+          project.name = 'project-for-alerts'
+          project.description = 'Project for alerts'
+        end
+      end
+
+      let(:random_word) { Faker::Lorem.word }
+
+      let(:payload) do
+        { title: random_word, description: random_word }
+      end
+
+      before do
+        Flow::Login.sign_in
+        project.visit!
+        Flow::AlertSettings.setup_http_endpoint_and_send_alert(payload: payload)
+      end
+
+      it(
+        'can send test alert that creates new alert',
+        testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/382803'
+      ) do
+        Page::Project::Menu.perform(&:go_to_monitor_alerts)
+        Page::Project::Monitor::Alerts::Index.perform do |alerts|
+          expect(alerts).to have_alert_with_title(random_word)
+        end
+      end
+    end
+  end
+end
diff --git a/spec/frontend/alerts_settings/components/__snapshots__/alerts_form_spec.js.snap b/spec/frontend/alerts_settings/components/__snapshots__/alerts_form_spec.js.snap
index 4693d5a47e4c9d451975f55b7985ad2bb9e015c1..bff4905a12cd6181f5d52211736c3631f0abcdb2 100644
--- a/spec/frontend/alerts_settings/components/__snapshots__/alerts_form_spec.js.snap
+++ b/spec/frontend/alerts_settings/components/__snapshots__/alerts_form_spec.js.snap
@@ -16,7 +16,7 @@ exports[`Alert integration settings form default state should match the default
     >
       <gl-form-checkbox-stub
         checked="true"
-        data-qa-selector="create_issue_checkbox"
+        data-qa-selector="create_incident_checkbox"
         id="2"
       >
         <span>