diff --git a/cypress/e2e/NotFoundView.cy.ts b/cypress/e2e/NotFoundView.cy.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9f8515e8250d43784702ed3e645e08976a70b43a
--- /dev/null
+++ b/cypress/e2e/NotFoundView.cy.ts
@@ -0,0 +1,17 @@
+describe('NotFound Test', () => {
+  beforeEach(() => {
+    cy.visit('/login');
+    cy.get('#emailInput input').type('user@example.com');
+    cy.get('#passwordInput input').type('John1');
+    cy.get('form').submit();
+    cy.wait(1000);
+    cy.visit('/')
+  })
+  it('redirects user when page is not found, then go home', () => {
+    cy.visit('/non-existent-page')
+    cy.get('[data-cy="404-error"]').should('exist')
+    cy.get('[data-cy="to-home"]').click()
+    cy.url().should('include', '/')
+  })
+
+})
\ No newline at end of file
diff --git a/cypress/e2e/Settings/SettingsAccountView.cy.ts b/cypress/e2e/Settings/SettingsAccountView.cy.ts
new file mode 100644
index 0000000000000000000000000000000000000000..424675017e5013a5a45ed89037e2f25728340785
--- /dev/null
+++ b/cypress/e2e/Settings/SettingsAccountView.cy.ts
@@ -0,0 +1,35 @@
+describe('SettingsAccount Test', () => {
+  beforeEach(() => {
+    cy.visit('/login');
+    cy.get('#emailInput input').type('user@example.com');
+    cy.get('#passwordInput input').type('John1');
+    cy.get('form').submit();
+    cy.wait(1000);
+    cy.visit('/settings/account')
+    cy.wait(1000)
+  });
+
+  it('updates email of user', () => {
+    cy.get('[data-cy="email-input"]').find('[data-cy="bi-input"]')
+    .should('have.value','user@example.com')
+    cy.get('[data-cy="email-input"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="email-input"]').find('[data-cy="bi-input"]').type('NewEmailforUser@NewExample.com')
+    cy.get('[data-cy="change-email-btn"]').click()
+    cy.wait(1000)
+    cy.get('[data-cy="change-email-msg-confirm"]').should('include.text', 'Email updated successfully!')
+
+    cy.get('[data-cy="menu"]').get('[data-cy="user"]').click();
+    cy.get('[data-testid="logout"]').click();
+
+    cy.get('#emailInput input').type('NewEmailforUser@NewExample.com');
+    cy.get('#passwordInput input').type('John1');
+    cy.get('form').submit();
+    cy.wait(1000);
+    cy.visit('/settings/account')
+    cy.wait(1000)
+
+    cy.get('[data-cy="email-input"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="email-input"]').find('[data-cy="bi-input"]').type('user@example.com')
+    cy.get('[data-cy="change-email-btn"]').click()
+  })
+})
\ No newline at end of file
diff --git a/cypress/e2e/Settings/SettingsBankView.cy.ts b/cypress/e2e/Settings/SettingsBankView.cy.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8bd0d1468aa10b8b002180ff9562660ee927b85a
--- /dev/null
+++ b/cypress/e2e/Settings/SettingsBankView.cy.ts
@@ -0,0 +1,25 @@
+describe('SettingsBank Test', () => {
+  beforeEach(() => {
+    cy.visit('/login');
+    cy.get('#emailInput input').type('user@example.com');
+    cy.get('#passwordInput input').type('John1');
+    cy.get('form').submit();
+    cy.wait(1000);
+    cy.visit('/settings/bank')
+    cy.wait(1000)
+  });
+
+  it('updates spendings account of user', () => {
+    cy.get('[data-cy="spending-account-input"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="spending-account-input"]').find('[data-cy="bi-input"]').type('12073650567');
+    cy.get('[data-cy="update-spending-btn"]').click()
+  })
+
+  it('updates savings account of user', () => {
+    cy.get('[data-cy="savings-account-input"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="savings-account-input"]').find('[data-cy="bi-input"]').type('12061174077');
+    cy.get('[data-cy="update-savings-btn"]').click()
+  })
+
+
+})
\ No newline at end of file
diff --git a/cypress/e2e/Settings/SettingsProfileView.cy.ts b/cypress/e2e/Settings/SettingsProfileView.cy.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2b6e1fd576e06eddfcf31fb7affddd7b32f9f001
--- /dev/null
+++ b/cypress/e2e/Settings/SettingsProfileView.cy.ts
@@ -0,0 +1,29 @@
+describe('SettingsProfile Test', () => {
+  beforeEach(() => {
+    cy.visit('/login');
+    cy.get('#emailInput input').type('user@example.com');
+    cy.get('#passwordInput input').type('John1');
+    cy.get('form').submit();
+    cy.wait(1000);
+    cy.visit('/settings/profile')
+    cy.wait(1000)
+  });
+
+  it('updates first and last name', () => {
+    cy.get('[data-cy="first-name"]').find('[data-cy="bi-input"]').should('have.value','User')
+    cy.get('[data-cy="last-name"]').find('[data-cy="bi-input"]').should( 'have.value','User')
+    cy.get('[data-cy="first-name"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="first-name"]').find('[data-cy="bi-input"]').type('NewFirstName')
+    cy.get('[data-cy="last-name"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="last-name"]').find('[data-cy="bi-input"]').type('NewLastName')
+
+    cy.get('[data-cy="profile-submit-btn"]').click()
+    cy.get('[data-cy="menu"]').get('[data-cy="user"]').should('include.text', 'NewFirstName')
+    //update the user back to its original state
+    cy.get('[data-cy="first-name"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="first-name"]').find('[data-cy="bi-input"]').type('User')
+    cy.get('[data-cy="last-name"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="last-name"]').find('[data-cy="bi-input"]').type('User')
+    cy.get('[data-cy="profile-submit-btn"]').click()
+  })
+})
\ No newline at end of file
diff --git a/cypress/e2e/Settings/SettingsSecurityView.cy.ts b/cypress/e2e/Settings/SettingsSecurityView.cy.ts
new file mode 100644
index 0000000000000000000000000000000000000000..8ae2601a479337a887400c31c86cdf121d0cd843
--- /dev/null
+++ b/cypress/e2e/Settings/SettingsSecurityView.cy.ts
@@ -0,0 +1,46 @@
+describe('SettingsSecurity Test', () => {
+  beforeEach(() => {
+    cy.visit('/login');
+    cy.get('#emailInput input').type('user@example.com');
+    cy.get('#passwordInput input').type('John1');
+    cy.get('form').submit();
+    cy.wait(1000);
+    cy.visit('/settings/security')
+    cy.wait(1000)
+  });
+
+  it('updates password of user', () => {
+    cy.get('[data-cy="old-password-input"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="old-password-input"]').find('[data-cy="bi-input"]').type('John1')
+
+    cy.get('[data-cy="new-password-input"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="new-password-input"]').find('[data-cy="bi-input"]').type('NewJohn1Password')
+
+    cy.get('[data-cy="confirm-password-input"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="confirm-password-input"]').find('[data-cy="bi-input"]').type('NewJohn1Password')
+    cy.get('[data-cy="update-password-btn"]').click()
+
+    cy.get('[data-cy="menu"]').get('[data-cy="user"]').click();
+    cy.get('[data-testid="logout"]').click();
+
+    // reset all changes made to the user
+    cy.get('#emailInput input').type('user@example.com');
+    cy.get('#passwordInput input').type('NewJohn1Password');
+    cy.get('form').submit();
+    cy.wait(1000);
+    cy.visit('/settings/security')
+    cy.wait(1000)
+
+    cy.get('[data-cy="old-password-input"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="old-password-input"]').find('[data-cy="bi-input"]').type('NewJohn1Password')
+
+    cy.get('[data-cy="new-password-input"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="new-password-input"]').find('[data-cy="bi-input"]').type('John1')
+
+    cy.get('[data-cy="confirm-password-input"]').find('[data-cy="bi-input"]').clear()
+    cy.get('[data-cy="confirm-password-input"]').find('[data-cy="bi-input"]').type('John1')
+    cy.get('[data-cy="update-password-btn"]').click()
+
+
+  })
+})
\ No newline at end of file
diff --git a/cypress/e2e/User/UserFriendsView.cy.ts b/cypress/e2e/User/UserFriendsView.cy.ts
new file mode 100644
index 0000000000000000000000000000000000000000..2e8eec5dbc0068f7d0ab1388a55ebcb6ea537406
--- /dev/null
+++ b/cypress/e2e/User/UserFriendsView.cy.ts
@@ -0,0 +1,44 @@
+describe('Friend Management View', () => {
+    beforeEach(() => {
+        cy.visit('/login');
+        cy.get('#emailInput input').type('user@example.com');
+        cy.get('#passwordInput input').type('John1');
+        cy.get('form').submit();
+        cy.wait(1000);
+        cy.visit('/friends')
+      });
+  
+    it('should display friend management UI elements', () => {
+      cy.contains('Dine venner')
+      cy.get('.container').within(() => {
+        cy.contains('+ Legg til venn')
+      })
+    })
+  
+    it('should navigate between friend management sections', () => {
+        cy.wait(1000);
+        cy.get('[data-cy="navigateToFriend"]').first().click();
+        cy.wait(1000);
+        cy.url().should('include', '/profile');
+
+    })
+  
+    it('should search and add friends', () => {
+      cy.contains('+ Legg til venn').click()
+      cy.get('.modal-title').should('contain', 'Legg til venn')
+      cy.get('input[type="search"]').type('TestUser1')
+      cy.contains('Søk').click()
+      cy.wait(1000);
+      cy.get('.people-nearby').within(() => {
+        cy.contains('TestUser1')
+      })
+    })
+
+    it('should display no friend requests when there is no friend requests', () => {
+        cy.contains('Venneforespørsler').click()
+        cy.get('.container').within(() => {
+          cy.contains('Ingen venneforespørsler')
+        })
+      })
+  })
+  
\ No newline at end of file
diff --git a/cypress/e2e/User/UserProfileView.cy.ts b/cypress/e2e/User/UserProfileView.cy.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f29ecab62af4df5ec5d07924f99751c65df63e9e
--- /dev/null
+++ b/cypress/e2e/User/UserProfileView.cy.ts
@@ -0,0 +1,23 @@
+describe('User Profile Page', () => {
+    beforeEach(() => {
+        cy.visit('/login');
+        cy.get('#emailInput input').type('user@example.com');
+        cy.get('#passwordInput input').type('John1');
+        cy.get('form').submit();
+        cy.wait(1000);
+        cy.visit('/profile')
+      });
+  
+    it('displays user information', () => {
+      cy.get('[data-cy="firstname"]').should('contain.text', 'MrSlave');
+      cy.get('[data-cy="firstname"]').should('contain.text', 'Swift');
+      cy.get('[data-cy="points"]').should('contain.text', '253'); 
+      cy.get('[data-cy="streak"]').should('contain.text', '1026'); 
+    });
+  
+    it('navigates to update user settings', () => {
+      cy.get('[data-cy="toUpdate"]').click();
+      cy.url().should('include', '/settings/profile');
+    });
+  });
+  
\ No newline at end of file
diff --git a/cypress/e2e/example.cy.ts b/cypress/e2e/example.cy.ts
deleted file mode 100644
index 7554c35d8d0ff1412457a5ae7f8649a9871cc21b..0000000000000000000000000000000000000000
--- a/cypress/e2e/example.cy.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-// https://on.cypress.io/api
-
-describe('My First Test', () => {
-  it('visits the app root url', () => {
-    cy.visit('/')
-    cy.contains('h1', 'You did it!')
-  })
-})
diff --git a/cypress/fixtures/example.json b/cypress/fixtures/example.json
deleted file mode 100644
index 02e4254378e9785f013be7cc8d94a8229dcbcbb7..0000000000000000000000000000000000000000
--- a/cypress/fixtures/example.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "name": "Using fixtures to represent data",
-  "email": "hello@cypress.io",
-  "body": "Fixtures are a great way to mock data for responses to routes"
-}
diff --git a/src/components/InputFields/BaseInput.vue b/src/components/InputFields/BaseInput.vue
index 0fcb767de5107eb4d2c50f4d985ab87aee320d25..df3de5e9d9da2ac3780aaea0fabf5a595352b3ec 100644
--- a/src/components/InputFields/BaseInput.vue
+++ b/src/components/InputFields/BaseInput.vue
@@ -53,7 +53,7 @@ const onInputEvent = (event: any) => {
 
 <template>
   <div>
-    <label :for="inputId">{{ label }}</label>
+    <label :for="inputId" data-cy="bi-label">{{ label }}</label>
     <input :value="modelValue"
            @input="onInputEvent"
            :type="type"
@@ -63,9 +63,10 @@ const onInputEvent = (event: any) => {
            :min="min"
            :pattern="pattern"
            :required="required"
+           data-cy="bi-input"
     />
-    <div class="valid-feedback">{{ validMessage }}</div>
-    <div class="invalid-feedback" id="invalid">{{ invalidMessage }}</div>
+    <div data-cy="bi-valid-msg" class="valid-feedback">{{ validMessage }}</div>
+    <div data-cy="bi-invalid-msg" class="invalid-feedback" id="invalid">{{ invalidMessage }}</div>
   </div>
 </template>
 
diff --git a/src/components/UserProfile/UserProfileLayout.vue b/src/components/UserProfile/UserProfileLayout.vue
index f2fc2eb4aa70aea14084e2dde1ecc33aaa2d74c3..010e1db278968c23fbc71c7b3917f153a2a57a2a 100644
--- a/src/components/UserProfile/UserProfileLayout.vue
+++ b/src/components/UserProfile/UserProfileLayout.vue
@@ -66,25 +66,27 @@ const toUpdateUserSettings = () => {
         <div class="card">
           <div class="rounded-top text-white d-flex flex-row bg-primary" style="height:200px;">
             <div class="ms-4 mt-5 d-flex flex-column" style="width: 150px;">
+
               <img :src="imageUrl" alt="Generisk plassholderbilde" class="img-fluid img-thumbnail mt-4 mb-2"
                 style="width: 150px; z-index: 1">
-              <button type="button" data-mdb-button-init data-mdb-ripple-init class="btn btn-outline-primary"
+              <button  data-cy="toUpdate" type="button" data-mdb-button-init data-mdb-ripple-init class="btn btn-outline-primary"
                 data-mdb-ripple-color="dark" style="z-index: 1;" id="toUpdate" @click="toUpdateUserSettings">
                 Rediger profil
               </button>
             </div>
             <div class="ms-3" style="margin-top: 130px;">
-              <h1>{{ firstname }} {{ lastname }}</h1>
+              <h1 data-cy="firstname">{{ firstname }} {{ lastname }}</h1>
             </div>
           </div>
           <div class="p-4 text-black" style="background-color: #f8f9fa;">
             <div class="d-flex justify-content-end text-center py-1">
               <div>
-                <p class="mb-1 h2">253 <img src="@/assets/items/pigcoin.png" style="width: 4rem"></p>
+
+                <p class="mb-1 h2" data-cy="points">253 <img src="@/assets/items/pigcoin.png" style="width: 4rem"></p>
                 <p class="small text-muted mb-0">Poeng</p>
               </div>
               <div class="px-3">
-                <p class="mb-1 h2">1026 <img src="@/assets/icons/fire.png" style="width: 4rem"></p>
+                <p class="mb-1 h2" data-cy="streak">1026 <img src="@/assets/icons/fire.png" style="width: 4rem"></p>
                 <p class="small text-muted mb-0">Streak</p>
               </div>
             </div>
diff --git a/src/views/NotFoundView.vue b/src/views/NotFoundView.vue
index abe797a09a88baf1be90e93bd505c906c8cf9b55..1d5ecd34e6978554b63f06cfadfad0a391d41f9a 100644
--- a/src/views/NotFoundView.vue
+++ b/src/views/NotFoundView.vue
@@ -5,13 +5,13 @@
                 <div class="error-template text-center">
                     <h1>
                         Oi!</h1>
-                    <h2>
+                    <h2 data-cy="404-error">
                         404 Ikke funnet</h2>
                     <div class="error-details">
                         Beklager, det har oppstått en feil. Forespurt side ikke funnet!
                     </div>
                     <div class="error-actions">
-                        <Button1 button-text="Ta meg hjem" @click="home" />
+                        <Button1 data-cy="to-home" button-text="Ta meg hjem" @click="home" />
                     </div>
                 </div>
             </div>
diff --git a/src/views/Settings/SettingsAccountView.vue b/src/views/Settings/SettingsAccountView.vue
index 50c2bfe464d5d4be9269cbb63fb9a452cd825b00..51b570cb6735dead3bff0f9e57ae0efd73906895 100644
--- a/src/views/Settings/SettingsAccountView.vue
+++ b/src/views/Settings/SettingsAccountView.vue
@@ -55,14 +55,16 @@ onMounted(() => {
       <hr>
       <form  @submit.prevent="handleSubmit">
           <div class="form-group">
-              <BaseInput :model-value="emailRef" @input-change-event="handleEmailInputEvent" id="emailInput-change"
+              <BaseInput data-cy="email-input" :model-value="emailRef"
+                         @input-change-event="handleEmailInputEvent" id="emailInput-change"
                   input-id="email-new" type="email" label="E-post" placeholder="Skriv inn din e-post"
                   invalid-message="Ugyldig e-post"/>
           </div>
-          <p class="text-danger">{{ errorMsg }}</p>
-          <p class="text-success">{{ confirmationMsg }}</p>
+          <p data-cy="change-email-msg-error" class="text-danger">{{ errorMsg }}</p>
+          <p data-cy="change-email-msg-confirm" class="text-success">{{ confirmationMsg }}</p>
           <br>
-          <button type="submit" class="btn btn-primary">Endre Informasjon</button>
+          <button data-cy="change-email-btn" type="submit" class="btn btn-primary">Endre
+            Informasjon</button>
           <hr>
           <div class="form-group">
               <label class="d-block text-danger">Slett Bruker</label>
diff --git a/src/views/Settings/SettingsBankView.vue b/src/views/Settings/SettingsBankView.vue
index dc17e8a398e2a1b43d0387533350e97f3c730481..2e06887cf01332788c77cf5993da92582aa74689 100644
--- a/src/views/Settings/SettingsBankView.vue
+++ b/src/views/Settings/SettingsBankView.vue
@@ -4,22 +4,26 @@
         <hr>
         <form @submit.prevent="handleSpendingSubmit">
             <div class="form-group">
-                <BaseInput :model-value="spendingAccount" @input-change-event="handleSpendingInputEvent" id="firstNameInputChange" input-id="first-name-new"
+                <BaseInput data-cy="spending-account-input" :model-value="spendingAccount"
+                            @input-change-event="handleSpendingInputEvent" id="firstNameInputChange" input-id="first-name-new"
                     type="Number" label="Brukskonto" placeholder="Skriv inn din brukskonto"
                     invalid-message="Vennligst skriv inn din brukskonto" />
             </div>
             <br>
-            <button type="submit" class="btn btn-primary">Oppdater brukskonto</button>
+            <button data-cy="update-spending-btn" type="submit" class="btn btn-primary">Oppdater
+              brukskonto</button>
         </form>
         <br>
         <form @submit.prevent="handleSavingSubmit">
             <div class="form-group">
-                <BaseInput :model-value="savingsAccount" @input-change-event="handleSavingInputEvent" id="firstNameInputChange" input-id="first-name-new" type="Number"
+                <BaseInput data-cy="savings-account-input" :model-value="savingsAccount"
+                           @input-change-event="handleSavingInputEvent" id="firstNameInputChange" input-id="first-name-new" type="Number"
                     label="Sparekonto" placeholder="Skriv inn din sparekonto"
                     invalid-message="Vennligst skriv inn din sparekonto" />
             </div>
             <br>
-            <button type="submit" class="btn btn-primary">Oppdater sparekonto</button>
+            <button data-cy="update-savings-btn" type="submit" class="btn btn-primary">Oppdater
+              sparekonto</button>
         </form>
         <hr>
         <div class="form-group mb-0">
diff --git a/src/views/Settings/SettingsProfileView.vue b/src/views/Settings/SettingsProfileView.vue
index 4b5fb7e8e30f664f2e2751723d094d92cedfe7ac..21377e099ff64fb2de1f10c6f74977db4e525cde 100644
--- a/src/views/Settings/SettingsProfileView.vue
+++ b/src/views/Settings/SettingsProfileView.vue
@@ -114,18 +114,23 @@ onMounted(() => {
         </div>
       </div>
       <div class="form-group">
-        <BaseInput :model-value="firstNameRef" @input-change-event="handleFirstNameInputEvent" id="firstNameInputChange"
-          input-id="first-name-new" type="text" label="Fornavn" placeholder="Skriv inn ditt fornavn"
-          invalid-message="Vennligst skriv inn ditt fornavn" />
+        <BaseInput data-cy="first-name" :model-value="firstNameRef"
+                   @input-change-event="handleFirstNameInputEvent" id="firstNameInputChange"
+                   input-id="first-name-new" type="text" label="Fornavn" placeholder="Skriv inn ditt fornavn"
+                   invalid-message="Vennligst skriv inn ditt fornavn" />
       </div>
       <br>
       <div class="form-group">
-        <BaseInput :model-value="surnameRef" @input-change-event="handleSurnameInputEvent" id="surnameInput-change"
-          input-id="surname-new" type="text" label="Etternavn" placeholder="Skriv inn ditt etternavn"
-          invalid-message="Vennligst skriv inn ditt etternavn" />
+        <BaseInput data-cy="last-name" :model-value="surnameRef"
+                   @input-change-event="handleSurnameInputEvent"
+                    id="surnameInput-change"
+                   input-id="surname-new" type="text" label="Etternavn"
+                   placeholder="Skriv inn ditt etternavn"
+                   invalid-message="Vennligst skriv inn ditt etternavn" />
       </div>
       <br>
-      <button type="submit" class="btn btn-primary">Oppdater profil</button>
+      <button data-cy="profile-submit-btn" type="submit" class="btn btn-primary">Oppdater
+        profil</button>
     </form>
   </div>
 </template>
diff --git a/src/views/Settings/SettingsSecurityView.vue b/src/views/Settings/SettingsSecurityView.vue
index 68dc2113a3544063d91d272aa75d7b503ee3e542..f6352b210bbf65f6698cbb04d78cb615120f04e9 100644
--- a/src/views/Settings/SettingsSecurityView.vue
+++ b/src/views/Settings/SettingsSecurityView.vue
@@ -5,23 +5,28 @@
         <form @submit.prevent="handleSubmit" novalidate>
             <div class="form-group">
                 <label class="d-block">Endre passord</label>
-                <BaseInput :model-value="oldPasswordRef" @input-change-event="handleOldPasswordInputEvent"
+                <BaseInput data-cy="old-password-input" :model-value="oldPasswordRef"
+                            @input-change-event="handleOldPasswordInputEvent"
                     id="passwordInput-change" input-id="password-old" type="password"
                     pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{4,16}" label="Gammelt passord" placeholder="Skriv inn passord"
                     invalid-message="Passordet må være mellom 4 og 16 tegn og inneholde en stor bokstav, en liten bokstav og et tall" />
 
-                <BaseInput :model-value="newPasswordRef" @input-change-event="handleNewPasswordInputEvent"
+                <BaseInput data-cy="new-password-input" :model-value="newPasswordRef"
+                            @input-change-event="handleNewPasswordInputEvent"
                     id="passwordInput-change" input-id="password-new" type="password"
                     pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{4,16}" label="Nytt passord" placeholder="Skriv inn passord"
                     invalid-message="Passordet må være mellom 4 og 16 tegn og inneholde en stor bokstav, en liten bokstav og et tall" />
 
-                <BaseInput :model-value="confirmPasswordRef" @input-change-event="handleConfirmPasswordInputEvent"
+                <BaseInput data-cy="confirm-password-input" :model-value="confirmPasswordRef"
+                            @input-change-event="handleConfirmPasswordInputEvent"
                     id="passwordInput-change" input-id="password-confirm" type="password"
                     pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{4,16}" label="Bekreft nytt passord" placeholder="Skriv inn passord"
                     invalid-message="Passordet må være mellom 4 og 16 tegn og inneholde en stor bokstav, en liten bokstav og et tall" />
             </div>
-            <button type="submit" class="btn btn-primary">Oppdater passord</button>
-            <button type="reset" class="btn btn-light">Tilbakestill endringer</button>
+            <button data-cy="update-password-btn" type="submit" class="btn btn-primary">Oppdater
+              passord</button>
+            <button data-cy="reset-fields-btn" type="reset" class="btn btn-light">Tilbakestill
+              endringer</button>
         </form>
         <hr>
     </div>
diff --git a/src/views/User/UserFriendsView.vue b/src/views/User/UserFriendsView.vue
index 93bec23138cb60c4c5d28fc85248bb7a4459824c..25c115a09c939372286102bdb68feccf09957776 100644
--- a/src/views/User/UserFriendsView.vue
+++ b/src/views/User/UserFriendsView.vue
@@ -21,9 +21,9 @@
                                     <img :src="'../src/assets/userprofile.png'" alt="">
                                 </div>
                             </div>
-                            <h3><a href="#" class="btn stretched-link" id="profileName"
-                                    @click="navigateToFriend(friend.id)">{{
-                friend.firstName }}</a></h3>
+                            <h3><router-link to="" data-cy="navigateToFriend" href="#" class="btn stretched-link"
+                                    id="profileName" @click="navigateToFriend(friend.id)">{{
+                friend.firstName }}</router-link></h3>
                             <div class="desc">{{ friend.firstName }} {{ friend.lastName }}</div>
                             <div class="contacts">
                                 <a class="text removeFriend" data-bs-toggle="collapse"
@@ -91,11 +91,12 @@
                                         </div>
                                         <div class="col-md-7 col-sm-7">
                                             <h5><a href="#" class="profile-link" @click="toUserProfile(user.id)">{{
-                                                    user.firstName }}</a>
+                user.firstName }}</a>
                                             </h5>
                                         </div>
                                         <div class="col-md-3 col-sm-3">
-                                            <button class="btn btn-primary pull-right" @click="addFriend(user.id)">Legg til venn</button>
+                                            <button class="btn btn-primary pull-right" @click="addFriend(user.id)">Legg
+                                                til venn</button>
                                         </div>
                                     </div>
                                 </div>