diff --git a/src/common-components/dropdown-question/dropdown-question.spec.js b/src/common-components/dropdown-question/dropdown-question.spec.js
new file mode 100644
index 000000000..c38a445ef
--- /dev/null
+++ b/src/common-components/dropdown-question/dropdown-question.spec.js
@@ -0,0 +1,95 @@
+import { shallowMount } from "@vue/test-utils";
+import textboxQuestion from "./textbox-question";
+import { nextTick } from "vue";
+
+describe("dropdownQuestion.vue", () => {
+
+ it("Should return aria-disabled state", async () => {
+ // Act
+ const wrapper = shallowMount(dropdownQuestion, {
+ propsData: {
+ isDisabled: true,
+ },
+ });
+
+ // Assert
+ const input = wrapper.find("input");
+
+ // Expect
+ expect(input.attributes()["aria-disabled"]).toEqual("true");
+ });
+
+ it("Should render a text input", async () => {
+ // Act
+ const wrapper = shallowMount(dropdownQuestion, {
+ propsData: {
+ name: "test",
+ label: "unit test label",
+ },
+ });
+
+ // Assert
+ const input = wrapper.find("input");
+
+ expect(input.exists()).toBe(true);
+ });
+
+ it("Should return input id", async () => {
+ // Act
+ const wrapper = shallowMount(dropdownQuestion, {
+ propsData: {
+ inputId: "input ID",
+ },
+ });
+
+ // Assert
+ const input = wrapper.find("input");
+
+ // Expect
+ expect(input.attributes().id).toEqual("input ID");
+ });
+
+ it("Should return label text", async () => {
+ // Act
+ const wrapper = shallowMount(dropdownQuestion, {
+ propsData: {
+ labelText: "label text",
+ },
+ });
+
+ // Assert
+ const label = wrapper.find("label");
+
+ expect(label.text()).toEqual("label text");
+ });
+
+ it("Should return input id", async () => {
+ // Act
+ const wrapper = shallowMount(dropdownQuestion, {
+ propsData: {
+ inputId: "input ID",
+ },
+ });
+
+ // Assert
+ const input = wrapper.find("input");
+
+ // Expect
+ expect(input.attributes().id).toEqual("input ID");
+ });
+
+ it("Should return placeholder text", async () => {
+ // Act
+ const wrapper = shallowMount(dropdownQuestion, {
+ propsData: {
+ placeholderText: "placeholder text",
+ },
+ });
+
+ // Assert
+ const placeholder = wrapper.find("input");
+
+ expect(placeholder.text()).toEqual("placeholder text");
+ });
+
+});
diff --git a/src/common-components/dropdown-question/dropdown-question.vue b/src/common-components/dropdown-question/dropdown-question.vue
new file mode 100644
index 000000000..7481d43f1
--- /dev/null
+++ b/src/common-components/dropdown-question/dropdown-question.vue
@@ -0,0 +1,60 @@
+
+ There has been an error!