diff --git a/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts
new file mode 100644
index 0000000000..2c76f590ee
--- /dev/null
+++ b/src/Umbraco.Web.UI.Client/src/backoffice/shared/components/extension-slot/extension-slot.test.ts
@@ -0,0 +1,96 @@
+import { expect, fixture, html } from '@open-wc/testing';
+import { ManifestDashboard, umbExtensionsRegistry } from '@umbraco-cms/extensions-registry';
+import { defaultA11yConfig } from '@umbraco-cms/test-utils';
+import { customElement } from 'lit/decorators.js';
+import { UmbExtensionSlotElement } from './extension-slot.element';
+
+@customElement('test-extension-slot-manifest-element')
+class MyExtensionSlotManifestElement extends HTMLElement {
+
+}
+
+describe('UmbExtensionSlotElement', () => {
+
+
+ let element: UmbExtensionSlotElement;
+
+ describe('general', () => {
+
+ beforeEach(async () => {
+ element = await fixture(
+ html``
+ );
+ });
+
+ it('is defined with its own instance', () => {
+ expect(element).to.be.instanceOf(UmbExtensionSlotElement);
+ });
+
+ it('passes the a11y audit', async () => {
+ await expect(element).shadowDom.to.be.accessible(defaultA11yConfig);
+ });
+
+ describe('properties', () => {
+ it('has a type property', () => {
+ expect(element).to.have.property('type');
+ });
+
+ it('has a filter property', () => {
+ expect(element).to.have.property('filter');
+ });
+
+ it('has a defaultElement property', () => {
+ expect(element).to.have.property('defaultElement');
+ });
+ });
+ });
+
+
+
+ describe('rendering methods', () => {
+
+ beforeEach(async () => {
+
+ umbExtensionsRegistry.register({
+ type: 'dashboard',
+ alias: 'unit-test-ext-slot-element-manifest',
+ name: 'unit-test-extension',
+ elementName: 'test-extension-slot-manifest-element',
+ meta: {
+ sections: ['test'],
+ pathname: 'test/test'
+ }
+ })
+
+ });
+
+ afterEach(async () => {
+ umbExtensionsRegistry.unregister('unit-test-ext-slot-element-manifest');
+ });
+
+ it('renders a manifest element', async () => {
+
+ element = await fixture(
+ html` x.alias === 'unit-test-ext-slot-element-manifest'}>`
+ );
+
+ expect(element.firstChild).to.be.instanceOf(MyExtensionSlotManifestElement);
+ });
+ });
+
+
+/*
+ public myExtensionWrapperMethod = (component: HTMLElement) => {
+ return html`${component}`;
+ };
+
+ render() {
+ return html`
+
+
+ `;
+ }
+ */
+
+
+});
diff --git a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs
index c4bef5c1ca..e39cc9f962 100644
--- a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs
+++ b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs
@@ -11,6 +11,7 @@ export default {
inject: {
importMap: {
imports: {
+ 'src/': './src/',
'@umbraco-cms/models': './src/core/models/index.ts',
'@umbraco-cms/backend-api': './src/core/backend-api/index.ts',
'@umbraco-cms/context-api': './src/core/context-api/index.ts',
@@ -20,7 +21,6 @@ export default {
'@umbraco-cms/utils': './src/core/utils/index.ts',
'@umbraco-cms/test-utils': './src/core/test-utils/index.ts',
'@umbraco-cms/resources': './src/core/resources/index.ts',
- '@umbraco-cms/services': './src/core/services',
'@umbraco-cms/extensions-registry': './src/core/extensions-registry/index.ts',
},
},