diff --git a/.eslintrc.yml b/.eslintrc.yml
index e80b2e6d9eb841975324347832adddc28041388f..17459804a7d2815712fe5058759b9695128abf06 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -95,7 +95,8 @@ rules:
         order: ignore
 overrides:
   - files:
-      - '**/spec/**/*'
+    - 'ee/spec/frontend*/**/*'
+    - 'spec/frontend*/**/*'
     rules:
       '@gitlab/require-i18n-strings': off
       '@gitlab/no-runtime-template-compiler': off
@@ -103,6 +104,8 @@ overrides:
         - error
         - selector: CallExpression[callee.object.name=/(wrapper|vm)/][callee.property.name="setData"]
           message: 'Avoid using "setData" on VTU wrapper'
+        - selector: MemberExpression[object.type!='ThisExpression'][property.type='Identifier'][property.name='$nextTick']
+          message: 'Using $nextTick from a component instance is discouraged. Import nextTick directly from the Vue package.'
   - files:
       - 'config/**/*'
       - 'scripts/**/*'
diff --git a/spec/frontend/ide/components/preview/clientside_spec.js b/spec/frontend/ide/components/preview/clientside_spec.js
index d6df061ad04b5c18d02a985bb03f2facf8656158..e253c4de4b2f17751cfd1f9cefc99961de0dcb16 100644
--- a/spec/frontend/ide/components/preview/clientside_spec.js
+++ b/spec/frontend/ide/components/preview/clientside_spec.js
@@ -121,7 +121,7 @@ describe('IDE clientside preview', () => {
 
     it('pings usage success', async () => {
       dispatchCodesandboxReady();
-      await wrapper.vm.$nextTick();
+      await nextTick();
       expect(storeClientsideActions.pingUsage).toHaveBeenCalledTimes(2);
       expect(storeClientsideActions.pingUsage).toHaveBeenCalledWith(
         expect.anything(),