diff --git a/static_src/react/tests/IssueWizardUtils.test.tsx b/static_src/react/tests/IssueWizardUtils.test.tsx
new file mode 100644
index 0000000..4211160
--- /dev/null
+++ b/static_src/react/tests/IssueWizardUtils.test.tsx
@@ -0,0 +1,74 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import {assert, expect} from 'chai';
+import {IssueWizardPersona, IssueCategory, CustomQuestionType} from '../issue-wizard/IssueWizardTypes.tsx';
+import {GetCategoriesByPersona, GetQuestionsByCategory, buildIssueDescription, getChromeVersion} from '../issue-wizard/IssueWizardUtils.tsx';
+
+describe('IssueWizardUtils', () => {
+  it('generate the issue categories to user persona map', () => {
+    const categories: IssueCategory[]= [
+      {
+        name: 't1',
+        description: 'd1',
+        persona: IssueWizardPersona.EndUser,
+        enabled: true,
+      },
+      {
+        name: 't2',
+        description: 'd2',
+        persona: IssueWizardPersona.EndUser,
+        enabled: false,
+      },
+    ];
+
+    const categoriesByPersonaMap = GetCategoriesByPersona(categories);
+    const validCategories = categoriesByPersonaMap.get(IssueWizardPersona.EndUser);
+
+    assert.equal(validCategories?.length, 1);
+    assert.equal(validCategories[0].name, 't1');
+    assert.equal(validCategories[0].description, 'd1');
+  });
+
+  it('generate custom questions to issue categories map', () => {
+    const categories: IssueCategory[]= [
+      {
+        name: 't1',
+        description: 'd1',
+        persona: IssueWizardPersona.EndUser,
+        enabled: true,
+        customQuestions: [
+          {
+            type: CustomQuestionType.Text,
+            question: 'q1',
+          }
+        ]
+      },
+    ];
+
+    const questionsByCategoryMap = GetQuestionsByCategory(categories);
+    const questions = questionsByCategoryMap.get('t1');
+
+    assert.equal(questions?.length, 1);
+    assert.equal(questions[0].question, 'q1');
+  });
+
+  it('create issue description', () => {
+    const description = buildIssueDescription('reproduce', 'description', 'comments', 'Mac', 'Chrome');
+    expect(description).to.contains('Steps to reproduce the problem:');
+    expect(description).to.contains('Problem Description:');
+    expect(description).to.contains('Additional Comments:');
+  });
+
+  it('test the chrome version regex match', () => {
+    const navigatorMock = {
+      userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36'
+    };
+    Object.defineProperty(window, 'navigator', {
+        value: navigatorMock
+      });
+    const chrome_version = getChromeVersion();
+    assert(chrome_version, '98.0.4758.109');
+  });
+});
