diff --git a/src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-render/ufm-render.element.ts b/src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-render/ufm-render.element.ts
index 65f33c51b4..56173caf27 100644
--- a/src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-render/ufm-render.element.ts
+++ b/src/Umbraco.Web.UI.Client/src/packages/ufm/components/ufm-render/ufm-render.element.ts
@@ -28,7 +28,7 @@ UmbDomPurify.addHook('afterSanitizeAttributes', function (node) {
}
});
-const UmbMarked = new Marked({
+export const UmbMarked = new Marked({
async: true,
gfm: true,
breaks: true,
diff --git a/src/Umbraco.Web.UI.Client/src/packages/ufm/plugins/marked-ufm.test.ts b/src/Umbraco.Web.UI.Client/src/packages/ufm/plugins/marked-ufm.test.ts
new file mode 100644
index 0000000000..ef01944675
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/packages/ufm/plugins/marked-ufm.test.ts
@@ -0,0 +1,32 @@
+import { expect } from '@open-wc/testing';
+import { ufm } from './marked-ufm.plugin.js';
+import { UmbMarked } from '../index.js';
+import { UmbUfmLabelValueComponent } from '../ufm-components/label-value.component.js';
+import { UmbUfmLocalizeComponent } from '../ufm-components/localize.component.js';
+
+describe('UmbMarkedUfm', () => {
+ describe('UFM parsing', () => {
+ const runs = [
+ { ufm: '{=prop1}', expected: '' },
+ { ufm: '{= prop1}', expected: '' },
+ { ufm: '{= prop1 }', expected: '' },
+ { ufm: '{{=prop1}}', expected: '{}' },
+ { ufm: '{#general_add}', expected: '' },
+ ];
+
+ // Manually configuring the UFM components for testing.
+ UmbMarked.use(
+ ufm([
+ { alias: 'Umb.Markdown.LabelValue', marker: '=', render: new UmbUfmLabelValueComponent().render },
+ { alias: 'Umb.Markdown.Localize', marker: '#', render: new UmbUfmLocalizeComponent().render },
+ ]),
+ );
+
+ runs.forEach((run) => {
+ it(`Parsing "${run.ufm}"`, async () => {
+ const markup = await UmbMarked.parseInline(run.ufm);
+ expect(markup).to.equal(run.expected);
+ });
+ });
+ });
+});