diff --git a/src/components/__tests__/ModalTest.spec.ts b/src/components/__tests__/ModalTest.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f2a914dc65c021277a84848c57f2fc34616185a0
--- /dev/null
+++ b/src/components/__tests__/ModalTest.spec.ts
@@ -0,0 +1,68 @@
+import { describe, it, expect, beforeEach } from 'vitest'
+import { shallowMount } from '@vue/test-utils'
+import ModalComponent from '@/components/ModalComponent.vue'
+
+describe('ModalComponent', () => {
+    let wrapper: any
+
+    beforeEach(() => {
+        wrapper = shallowMount(ModalComponent, {
+            props: {
+                title: 'Test Title',
+                message: 'Test Message',
+                button1: 'Test button',
+                isModalOpen: true,
+                showButton: true,
+                showInput: false,
+                typeValue: 'text',
+                inputPlaceholder: 'Placeholder',
+                isInputValid: true,
+            }
+        })
+    })
+
+    it('opens modal when button is clicked', async () => {
+        expect(wrapper.props().isModalOpen).toBe(true);
+    })
+
+    it('closes modal when close button is clicked', async () => {
+        await wrapper.setProps({ isModalOpen: true });
+        await wrapper.vm.$nextTick();
+
+        const closeButton = wrapper.find('button[aria-label="close"]');
+        if (closeButton.exists()) {
+            await closeButton.trigger('click');
+
+            expect(wrapper.emitted()['update:isModalOpen']).toBeTruthy();
+            expect(wrapper.emitted()['update:isModalOpen'][0]).toEqual([false]);
+        } else {
+            throw new Error('Close button not found');
+        }
+    });
+
+    it('button is shown when showButton is true', async () => {
+        expect(wrapper.props().showButton).toBe(true);
+        expect(wrapper.find('.active-button').exists()).toBe(true);
+    });
+
+    it('button is not shown when showButton is false', async () => {
+        await wrapper.setProps({ showButton: false });
+        await wrapper.vm.$nextTick();
+
+        expect(wrapper.props().showButton).toBe(false);
+        expect(wrapper.find('.active-button').exists()).toBe(false);
+    });
+
+    it('input is shown when showInput is true', async () => {
+        await wrapper.setProps({ showInput: true });
+        await wrapper.vm.$nextTick();
+
+        expect(wrapper.props().showInput).toBe(true);
+        expect(wrapper.find('input').exists()).toBe(true);
+    });
+
+    it('input is not shown when showInput is false', async () => {
+        expect(wrapper.props().showInput).toBe(false);
+        expect(wrapper.find('input').exists()).toBe(false);
+    });
+})