diff --git a/static_src/react/issue-wizard/DotMobileStepper.test.tsx b/static_src/react/issue-wizard/DotMobileStepper.test.tsx
index 5203110..b7c9aa4 100644
--- a/static_src/react/issue-wizard/DotMobileStepper.test.tsx
+++ b/static_src/react/issue-wizard/DotMobileStepper.test.tsx
@@ -18,17 +18,17 @@
 
     // this is checking the buttons for the stepper rendered
       const count = document.querySelectorAll('button').length;
-      assert.equal(count, 2)
+      assert.equal(count, 1)
   });
 
-  it('back button disabled on first step', () => {
+  it('back button not avlialbe on first step', () => {
     render(<DotMobileStepper activeStep={0} nextEnabled={true}/>).container;
 
     // Finds a button on the page with "back" as text using React testing library.
-    const backButton = screen.getByRole('button', {name: /backButton/i}) as HTMLButtonElement;
+    const backButton = document.querySelector('[aria-label="backButton"]');
 
-    // Back button is disabled on the first step.
-    assert.isTrue(backButton.disabled);
+    // Back button is not avliable on the first step.
+    assert.notExists(backButton);
   });
 
   it('both buttons enabled on second step', () => {
@@ -46,14 +46,4 @@
     // Next button is not disabled on the second step.
     assert.isFalse(nextButton.disabled);
   });
-
-  it('next button disabled on last step', () => {
-    render(<DotMobileStepper activeStep={2}/>).container;
-
-    // Finds a button on the page with "next" as text using React testing library.
-    const nextButton = screen.getByRole('button', {name: /nextButton/i}) as HTMLButtonElement;
-
-    // Next button is disabled on the second step.
-    assert.isTrue(nextButton.disabled);
-  });
-});
\ No newline at end of file
+});
