diff --git a/packages/integration-tests/suites/public-api/captureMessage/init.js b/packages/integration-tests/suites/public-api/captureMessage/init.js
new file mode 100644
index 000000000000..d8c94f36fdd0
--- /dev/null
+++ b/packages/integration-tests/suites/public-api/captureMessage/init.js
@@ -0,0 +1,7 @@
+import * as Sentry from '@sentry/browser';
+
+window.Sentry = Sentry;
+
+Sentry.init({
+ dsn: 'https://public@dsn.ingest.sentry.io/1337',
+});
diff --git a/packages/integration-tests/suites/public-api/captureMessage/simple_message/subject.js b/packages/integration-tests/suites/public-api/captureMessage/simple_message/subject.js
new file mode 100644
index 000000000000..cf462c59a2fb
--- /dev/null
+++ b/packages/integration-tests/suites/public-api/captureMessage/simple_message/subject.js
@@ -0,0 +1 @@
+Sentry.captureMessage('foo');
diff --git a/packages/integration-tests/suites/public-api/captureMessage/simple_message/test.ts b/packages/integration-tests/suites/public-api/captureMessage/simple_message/test.ts
new file mode 100644
index 000000000000..7b4b68f228d6
--- /dev/null
+++ b/packages/integration-tests/suites/public-api/captureMessage/simple_message/test.ts
@@ -0,0 +1,13 @@
+import { expect } from '@playwright/test';
+
+import { sentryTest } from '../../../../utils/fixtures';
+import { getSentryRequest } from '../../../../utils/helpers';
+
+sentryTest('should capture a simple message string', async ({ getLocalTestPath, page }) => {
+ const url = await getLocalTestPath({ testDir: __dirname });
+
+ const eventData = await getSentryRequest(page, url);
+
+ expect(eventData.message).toBe('foo');
+ expect(eventData.level).toBe('info');
+});
diff --git a/packages/integration-tests/suites/public-api/captureMessage/template.hbs b/packages/integration-tests/suites/public-api/captureMessage/template.hbs
new file mode 100644
index 000000000000..a28a09b7b485
--- /dev/null
+++ b/packages/integration-tests/suites/public-api/captureMessage/template.hbs
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/integration-tests/suites/public-api/captureMessage/with_level/subject.js b/packages/integration-tests/suites/public-api/captureMessage/with_level/subject.js
new file mode 100644
index 000000000000..3d7368c95fef
--- /dev/null
+++ b/packages/integration-tests/suites/public-api/captureMessage/with_level/subject.js
@@ -0,0 +1,7 @@
+Sentry.captureMessage('debug_message', 'debug');
+Sentry.captureMessage('info_message', 'info');
+Sentry.captureMessage('warning_message', 'warning');
+Sentry.captureMessage('error_message', 'error');
+Sentry.captureMessage('fatal_message', 'fatal');
+Sentry.captureMessage('critical_message', 'critical');
+Sentry.captureMessage('log_message', 'log');
diff --git a/packages/integration-tests/suites/public-api/captureMessage/with_level/test.ts b/packages/integration-tests/suites/public-api/captureMessage/with_level/test.ts
new file mode 100644
index 000000000000..ba8bb18d729a
--- /dev/null
+++ b/packages/integration-tests/suites/public-api/captureMessage/with_level/test.ts
@@ -0,0 +1,31 @@
+import { expect } from '@playwright/test';
+
+import { sentryTest } from '../../../../utils/fixtures';
+import { getMultipleSentryRequests } from '../../../../utils/helpers';
+
+sentryTest('should capture with different severity levels', async ({ getLocalTestPath, page }) => {
+ const url = await getLocalTestPath({ testDir: __dirname });
+
+ const events = await getMultipleSentryRequests(page, 7, url);
+
+ expect(events[0].message).toBe('debug_message');
+ expect(events[0].level).toBe('debug');
+
+ expect(events[1].message).toBe('info_message');
+ expect(events[1].level).toBe('info');
+
+ expect(events[2].message).toBe('warning_message');
+ expect(events[2].level).toBe('warning');
+
+ expect(events[3].message).toBe('error_message');
+ expect(events[3].level).toBe('error');
+
+ expect(events[4].message).toBe('fatal_message');
+ expect(events[4].level).toBe('fatal');
+
+ expect(events[5].message).toBe('critical_message');
+ expect(events[5].level).toBe('critical');
+
+ expect(events[6].message).toBe('log_message');
+ expect(events[6].level).toBe('log');
+});