diff --git a/spec/frontend/blob/blob_blame_link_spec.js b/spec/frontend/blob/blob_blame_link_spec.js
index 0d19177a11ff26ec9d4dd99c61aa7d7d280477ce..060e8803520934f57d908d97abb05e93fc7cbf2e 100644
--- a/spec/frontend/blob/blob_blame_link_spec.js
+++ b/spec/frontend/blob/blob_blame_link_spec.js
@@ -29,19 +29,19 @@ describe('Blob links', () => {
   it('adds wrapper elements with correct classes', () => {
     const wrapper = document.querySelector('.line-links');
 
-    expect(wrapper).toBeTruthy();
+    expect(wrapper).not.toBeNull();
     expect(wrapper.classList).toContain('diff-line-num');
   });
 
   it('adds blame link with correct classes and path', () => {
     const blameLink = document.querySelector('.file-line-blame');
-    expect(blameLink).toBeTruthy();
+    expect(blameLink).not.toBeNull();
     expect(blameLink.getAttribute('href')).toBe('/blamePath#L5');
   });
 
   it('adds line link within wraper with correct classes and path', () => {
     const lineLink = document.querySelector('.file-line-num');
-    expect(lineLink).toBeTruthy();
+    expect(lineLink).not.toBeNull();
     expect(lineLink.getAttribute('href')).toBe('#L5');
   });
 });
diff --git a/spec/frontend/blob/components/blob_content_spec.js b/spec/frontend/blob/components/blob_content_spec.js
index 788ee0a86ab90e7853d2879e64cd97b375ee4107..f7b819b6e943b9caa57054455c4978754755b14d 100644
--- a/spec/frontend/blob/components/blob_content_spec.js
+++ b/spec/frontend/blob/components/blob_content_spec.js
@@ -91,13 +91,13 @@ describe('Blob Content component', () => {
       it(`properly proxies ${BLOB_RENDER_EVENT_LOAD} event`, () => {
         expect(wrapper.emitted(BLOB_RENDER_EVENT_LOAD)).toBeUndefined();
         findErrorEl().vm.$emit(BLOB_RENDER_EVENT_LOAD);
-        expect(wrapper.emitted(BLOB_RENDER_EVENT_LOAD)).toBeTruthy();
+        expect(wrapper.emitted(BLOB_RENDER_EVENT_LOAD)).toHaveLength(1);
       });
 
       it(`properly proxies ${BLOB_RENDER_EVENT_SHOW_SOURCE} event`, () => {
         expect(wrapper.emitted(BLOB_RENDER_EVENT_SHOW_SOURCE)).toBeUndefined();
         findErrorEl().vm.$emit(BLOB_RENDER_EVENT_SHOW_SOURCE);
-        expect(wrapper.emitted(BLOB_RENDER_EVENT_SHOW_SOURCE)).toBeTruthy();
+        expect(wrapper.emitted(BLOB_RENDER_EVENT_SHOW_SOURCE)).toHaveLength(1);
       });
     });
   });
diff --git a/spec/frontend/deploy_freeze/components/deploy_freeze_modal_spec.js b/spec/frontend/deploy_freeze/components/deploy_freeze_modal_spec.js
index bbafdc000dbfefc8136e7c9fa3a335bb2f8adcef..b8c979a41575f80faee0c9bb93784a1f54e22c2a 100644
--- a/spec/frontend/deploy_freeze/components/deploy_freeze_modal_spec.js
+++ b/spec/frontend/deploy_freeze/components/deploy_freeze_modal_spec.js
@@ -52,7 +52,7 @@ describe('Deploy freeze modal', () => {
 
   describe('Basic interactions', () => {
     it('button is disabled when freeze period is invalid', () => {
-      expect(submitDeployFreezeButton().attributes('disabled')).toBeTruthy();
+      expect(submitDeployFreezeButton().attributes('disabled')).toBe('true');
     });
   });
 
@@ -92,7 +92,7 @@ describe('Deploy freeze modal', () => {
       });
 
       it('disables the add deploy freeze button', () => {
-        expect(submitDeployFreezeButton().attributes('disabled')).toBeTruthy();
+        expect(submitDeployFreezeButton().attributes('disabled')).toBe('true');
       });
     });
 
@@ -103,7 +103,7 @@ describe('Deploy freeze modal', () => {
       });
 
       it('does not disable the submit button', () => {
-        expect(submitDeployFreezeButton().attributes('disabled')).toBeFalsy();
+        expect(submitDeployFreezeButton().attributes('disabled')).toBeUndefined();
       });
     });
   });
diff --git a/spec/frontend/design_management/components/delete_button_spec.js b/spec/frontend/design_management/components/delete_button_spec.js
index cee1eec792dc17b8ce73d97caeb0aa10321d3566..426a61f5a477aef1e9d66b0a1ffef8100d85cff9 100644
--- a/spec/frontend/design_management/components/delete_button_spec.js
+++ b/spec/frontend/design_management/components/delete_button_spec.js
@@ -29,12 +29,12 @@ describe('Batch delete button component', () => {
     createComponent();
 
     expect(findButton().exists()).toBe(true);
-    expect(findButton().attributes('disabled')).toBeFalsy();
+    expect(findButton().attributes('disabled')).toBeUndefined();
   });
 
   it('renders disabled button when design is deleting', () => {
     createComponent({ isDeleting: true });
-    expect(findButton().attributes('disabled')).toBeTruthy();
+    expect(findButton().attributes('disabled')).toBe('true');
   });
 
   it('emits `delete-selected-designs` event on modal ok click', async () => {
@@ -45,7 +45,7 @@ describe('Batch delete button component', () => {
     findModal().vm.$emit('ok');
 
     await nextTick();
-    expect(wrapper.emitted('delete-selected-designs')).toBeTruthy();
+    expect(wrapper.emitted('delete-selected-designs')).toHaveLength(1);
   });
 
   it('renders slot content', () => {
diff --git a/spec/frontend/design_management/components/design_notes/design_reply_form_spec.js b/spec/frontend/design_management/components/design_notes/design_reply_form_spec.js
index e36f5c79e3eaaf9cc483bf775f39de01bab779d3..83804f28f5941da19fc06853e116e9c34de41763 100644
--- a/spec/frontend/design_management/components/design_notes/design_reply_form_spec.js
+++ b/spec/frontend/design_management/components/design_notes/design_reply_form_spec.js
@@ -102,7 +102,7 @@ describe('Design reply form component', () => {
     });
 
     it('submit button is disabled', () => {
-      expect(findSubmitButton().attributes().disabled).toBeTruthy();
+      expect(findSubmitButton().attributes().disabled).toBe('disabled');
     });
 
     it('does not emit submitForm event on textarea ctrl+enter keydown', async () => {
@@ -111,7 +111,7 @@ describe('Design reply form component', () => {
       });
 
       await nextTick();
-      expect(wrapper.emitted('submit-form')).toBeFalsy();
+      expect(wrapper.emitted('submit-form')).toBeUndefined();
     });
 
     it('does not emit submitForm event on textarea meta+enter keydown', async () => {
@@ -120,13 +120,13 @@ describe('Design reply form component', () => {
       });
 
       await nextTick();
-      expect(wrapper.emitted('submit-form')).toBeFalsy();
+      expect(wrapper.emitted('submit-form')).toBeUndefined();
     });
 
     it('emits cancelForm event on pressing escape button on textarea', () => {
       findTextarea().trigger('keyup.esc');
 
-      expect(wrapper.emitted('cancel-form')).toBeTruthy();
+      expect(wrapper.emitted('cancel-form')).toHaveLength(1);
     });
 
     it('emits cancelForm event on clicking Cancel button', () => {
@@ -144,7 +144,7 @@ describe('Design reply form component', () => {
     });
 
     it('submit button is enabled', () => {
-      expect(findSubmitButton().attributes().disabled).toBeFalsy();
+      expect(findSubmitButton().attributes().disabled).toBeUndefined();
     });
 
     it('emits submitForm event on Comment button click', async () => {
@@ -153,7 +153,7 @@ describe('Design reply form component', () => {
       findSubmitButton().vm.$emit('click');
 
       await nextTick();
-      expect(wrapper.emitted('submit-form')).toBeTruthy();
+      expect(wrapper.emitted('submit-form')).toHaveLength(1);
       expect(autosaveResetSpy).toHaveBeenCalled();
     });
 
@@ -165,7 +165,7 @@ describe('Design reply form component', () => {
       });
 
       await nextTick();
-      expect(wrapper.emitted('submit-form')).toBeTruthy();
+      expect(wrapper.emitted('submit-form')).toHaveLength(1);
       expect(autosaveResetSpy).toHaveBeenCalled();
     });
 
@@ -177,7 +177,7 @@ describe('Design reply form component', () => {
       });
 
       await nextTick();
-      expect(wrapper.emitted('submit-form')).toBeTruthy();
+      expect(wrapper.emitted('submit-form')).toHaveLength(1);
       expect(autosaveResetSpy).toHaveBeenCalled();
     });
 
@@ -185,13 +185,13 @@ describe('Design reply form component', () => {
       findTextarea().setValue('test2');
 
       await nextTick();
-      expect(wrapper.emitted('input')).toBeTruthy();
+      expect(wrapper.emitted('input')).toEqual([['test'], ['test2']]);
     });
 
     it('emits cancelForm event on Escape key if text was not changed', () => {
       findTextarea().trigger('keyup.esc');
 
-      expect(wrapper.emitted('cancel-form')).toBeTruthy();
+      expect(wrapper.emitted('cancel-form')).toHaveLength(1);
     });
 
     it('opens confirmation modal on Escape key when text has changed', async () => {
@@ -205,7 +205,7 @@ describe('Design reply form component', () => {
     it('emits cancelForm event on Cancel button click if text was not changed', () => {
       findCancelButton().trigger('click');
 
-      expect(wrapper.emitted('cancel-form')).toBeTruthy();
+      expect(wrapper.emitted('cancel-form')).toHaveLength(1);
     });
 
     it('opens confirmation modal on Cancel button click when text has changed', async () => {
@@ -222,7 +222,7 @@ describe('Design reply form component', () => {
       findTextarea().trigger('keyup.esc');
       findModal().vm.$emit('ok');
 
-      expect(wrapper.emitted('cancel-form')).toBeTruthy();
+      expect(wrapper.emitted('cancel-form')).toHaveLength(2);
       expect(autosaveResetSpy).toHaveBeenCalled();
     });
   });
diff --git a/spec/frontend/groups/store/groups_store_spec.js b/spec/frontend/groups/store/groups_store_spec.js
index 8ac5d7099f15d3afd96d101d1857e0274008bac8..ce1791d006255988dc6ef7d597c986f216db5596 100644
--- a/spec/frontend/groups/store/groups_store_spec.js
+++ b/spec/frontend/groups/store/groups_store_spec.js
@@ -16,13 +16,13 @@ describe('ProjectsStore', () => {
       store = new GroupsStore();
 
       expect(Object.keys(store.state).length).toBe(2);
-      expect(Array.isArray(store.state.groups)).toBeTruthy();
+      expect(Array.isArray(store.state.groups)).toBe(true);
       expect(Object.keys(store.state.pageInfo).length).toBe(0);
-      expect(store.hideProjects).toBeFalsy();
+      expect(store.hideProjects).toBe(false);
 
       store = new GroupsStore({ hideProjects: true });
 
-      expect(store.hideProjects).toBeTruthy();
+      expect(store.hideProjects).toBe(true);
     });
   });
 
@@ -65,8 +65,8 @@ describe('ProjectsStore', () => {
       expect(store.formatGroupItem).toHaveBeenCalledWith(expect.any(Object));
       expect(mockParentGroupItem.children.length).toBe(1);
       expect(Object.keys(mockParentGroupItem.children[0]).indexOf('fullName')).toBeGreaterThan(-1);
-      expect(mockParentGroupItem.isOpen).toBeTruthy();
-      expect(mockParentGroupItem.isChildrenLoading).toBeFalsy();
+      expect(mockParentGroupItem.isOpen).toBe(true);
+      expect(mockParentGroupItem.isChildrenLoading).toBe(false);
     });
   });
 
diff --git a/spec/frontend/ide/components/terminal/terminal_spec.js b/spec/frontend/ide/components/terminal/terminal_spec.js
index 4da3e1910e9ecf1934c1d85273ebff88459b6d8e..0d22f7f73fe9ae0f8c80079a6c977cbe3ee8fe95 100644
--- a/spec/frontend/ide/components/terminal/terminal_spec.js
+++ b/spec/frontend/ide/components/terminal/terminal_spec.js
@@ -171,7 +171,7 @@ describe('IDE Terminal', () => {
 
     it('creates the terminal', () => {
       expect(GLTerminal).toHaveBeenCalledWith(wrapper.vm.$refs.terminal);
-      expect(wrapper.vm.glterminal).toBeTruthy();
+      expect(wrapper.vm.glterminal).toBeInstanceOf(GLTerminal);
     });
 
     describe('scroll listener', () => {
diff --git a/spec/frontend/ide/stores/actions_spec.js b/spec/frontend/ide/stores/actions_spec.js
index f6d54491d772e75100d6228367cb7cd307e06284..21480ef873f12a49976423e2d97f8d74ace9fdb6 100644
--- a/spec/frontend/ide/stores/actions_spec.js
+++ b/spec/frontend/ide/stores/actions_spec.js
@@ -138,7 +138,7 @@ describe('Multi-file store actions', () => {
           name: 'testing/test',
           type: 'tree',
         });
-        expect(tree.tree[0].tempFile).toBeTruthy();
+        expect(tree.tree[0].tempFile).toBe(true);
         expect(tree.tree[0].name).toBe('test');
         expect(tree.tree[0].type).toBe('tree');
       });
@@ -173,7 +173,7 @@ describe('Multi-file store actions', () => {
         });
         const f = store.state.entries[name];
 
-        expect(f.tempFile).toBeTruthy();
+        expect(f.tempFile).toBe(true);
         expect(f.mimeType).toBe('test/mime');
         expect(store.state.trees['abcproject/mybranch'].tree.length).toBe(1);
       });
diff --git a/spec/frontend/ide/stores/modules/commit/mutations_spec.js b/spec/frontend/ide/stores/modules/commit/mutations_spec.js
index 50342832d751b743d9de3ba0a28fdea0a9f2b1d4..d277157e737595799bfee556b7a174588fd1d497 100644
--- a/spec/frontend/ide/stores/modules/commit/mutations_spec.js
+++ b/spec/frontend/ide/stores/modules/commit/mutations_spec.js
@@ -37,7 +37,7 @@ describe('IDE commit module mutations', () => {
     it('updates submitCommitLoading', () => {
       mutations.UPDATE_LOADING(state, true);
 
-      expect(state.submitCommitLoading).toBeTruthy();
+      expect(state.submitCommitLoading).toBe(true);
     });
   });
 
diff --git a/spec/frontend/ide/stores/mutations/tree_spec.js b/spec/frontend/ide/stores/mutations/tree_spec.js
index 6935e57578f1dd826b5b51be782c22eb0a8b4380..a8c0d7ba2c85b0eaf51612114e17d6c7e1e3e74f 100644
--- a/spec/frontend/ide/stores/mutations/tree_spec.js
+++ b/spec/frontend/ide/stores/mutations/tree_spec.js
@@ -17,11 +17,11 @@ describe('Multi-file store tree mutations', () => {
     it('toggles tree open', () => {
       mutations.TOGGLE_TREE_OPEN(localState, localTree.path);
 
-      expect(localTree.opened).toBeTruthy();
+      expect(localTree.opened).toBe(true);
 
       mutations.TOGGLE_TREE_OPEN(localState, localTree.path);
 
-      expect(localTree.opened).toBeFalsy();
+      expect(localTree.opened).toBe(false);
     });
   });
 
diff --git a/spec/frontend/ide/stores/mutations_spec.js b/spec/frontend/ide/stores/mutations_spec.js
index 4602a0837e0a9eb0c35111d59e5c21b7033ec7bf..4117f2648bd61219f94158a855b5ee4248940af1 100644
--- a/spec/frontend/ide/stores/mutations_spec.js
+++ b/spec/frontend/ide/stores/mutations_spec.js
@@ -30,13 +30,13 @@ describe('Multi-file store mutations', () => {
         entry,
       });
 
-      expect(entry.loading).toBeTruthy();
+      expect(entry.loading).toBe(true);
 
       mutations.TOGGLE_LOADING(localState, {
         entry,
       });
 
-      expect(entry.loading).toBeFalsy();
+      expect(entry.loading).toBe(false);
     });
 
     it('toggles loading of entry and sets specific value', () => {
@@ -44,14 +44,14 @@ describe('Multi-file store mutations', () => {
         entry,
       });
 
-      expect(entry.loading).toBeTruthy();
+      expect(entry.loading).toBe(true);
 
       mutations.TOGGLE_LOADING(localState, {
         entry,
         forceValue: true,
       });
 
-      expect(entry.loading).toBeTruthy();
+      expect(entry.loading).toBe(true);
     });
   });
 
diff --git a/spec/frontend/smart_interval_spec.js b/spec/frontend/smart_interval_spec.js
index 5dda097ae6ab25910246659fea074750499975ed..64928fc4ae9ee09138334a98e538c7121d7f896b 100644
--- a/spec/frontend/smart_interval_spec.js
+++ b/spec/frontend/smart_interval_spec.js
@@ -109,7 +109,7 @@ describe('SmartInterval', () => {
       return waitForPromises().then(() => {
         const { intervalId } = interval.state;
 
-        expect(intervalId).toBeTruthy();
+        expect(intervalId).not.toBeUndefined();
       });
     });
   });
@@ -130,7 +130,7 @@ describe('SmartInterval', () => {
       jest.runOnlyPendingTimers();
 
       return waitForPromises().then(() => {
-        expect(interval.state.intervalId).toBeTruthy();
+        expect(interval.state.intervalId).not.toBeUndefined();
 
         // simulates triggering of visibilitychange event
         interval.onVisibilityChange({ target: { visibilityState: 'hidden' } });
@@ -148,16 +148,16 @@ describe('SmartInterval', () => {
       jest.runOnlyPendingTimers();
 
       return waitForPromises().then(() => {
-        expect(interval.state.intervalId).toBeTruthy();
+        expect(interval.state.intervalId).not.toBeUndefined();
         expect(
           interval.getCurrentInterval() >= DEFAULT_STARTING_INTERVAL &&
             interval.getCurrentInterval() <= DEFAULT_MAX_INTERVAL,
-        ).toBeTruthy();
+        ).toBe(true);
 
         // simulates triggering of visibilitychange event
         interval.onVisibilityChange({ target: { visibilityState: 'hidden' } });
 
-        expect(interval.state.intervalId).toBeTruthy();
+        expect(interval.state.intervalId).not.toBeUndefined();
         expect(interval.getCurrentInterval()).toBe(HIDDEN_INTERVAL);
       });
     });
@@ -166,7 +166,7 @@ describe('SmartInterval', () => {
       jest.runOnlyPendingTimers();
 
       return waitForPromises().then(() => {
-        expect(interval.state.intervalId).toBeTruthy();
+        expect(interval.state.intervalId).not.toBeUndefined();
 
         // simulates triggering of visibilitychange event
         interval.onVisibilityChange({ target: { visibilityState: 'hidden' } });
@@ -176,7 +176,7 @@ describe('SmartInterval', () => {
         // simulates triggering of visibilitychange event
         interval.onVisibilityChange({ target: { visibilityState: 'visible' } });
 
-        expect(interval.state.intervalId).toBeTruthy();
+        expect(interval.state.intervalId).not.toBeUndefined();
       });
     });
 
@@ -194,7 +194,7 @@ describe('SmartInterval', () => {
     it('should execute callback before first interval', () => {
       interval = createDefaultSmartInterval({ immediateExecution: true });
 
-      expect(interval.cfg.immediateExecution).toBeFalsy();
+      expect(interval.cfg.immediateExecution).toBe(false);
     });
   });
 });
diff --git a/spec/frontend/user_popovers_spec.js b/spec/frontend/user_popovers_spec.js
index 0530569c9dfcc9c44591ba0d44695e27e64be953..8ce071c075f0f198708cb943f85bb2cf685a5ac7 100644
--- a/spec/frontend/user_popovers_spec.js
+++ b/spec/frontend/user_popovers_spec.js
@@ -188,8 +188,8 @@ describe('User Popovers', () => {
       });
 
       it('removes title attribute from user links', () => {
-        expect(userLink.getAttribute('title')).toBeFalsy();
-        expect(userLink.dataset.originalTitle).toBeFalsy();
+        expect(userLink.getAttribute('title')).toBe('');
+        expect(userLink.dataset.originalTitle).toBe('');
       });
 
       it('fetches user info and status from the user cache', () => {