diff --git a/.golangci.yml b/.golangci.yml
index 52e77ee..dbc89de 100644
--- a/.golangci.yml
+++ b/.golangci.yml
@@ -17,6 +17,7 @@ linters:
         - dogsled
         - dupl
         - durationcheck
+        - errorlint
         - exhaustive
         - exportloopref
         - gci
diff --git a/internal/encoding/decoder_test.go b/internal/encoding/decoder_test.go
index 80e6688..7656ac9 100644
--- a/internal/encoding/decoder_test.go
+++ b/internal/encoding/decoder_test.go
@@ -1,6 +1,7 @@
 package encoding
 
 import (
+	"errors"
 	"testing"
 )
 
@@ -34,7 +35,7 @@ func TestDecoderRegistry_RegisterDecoder(t *testing.T) {
 		}
 
 		err = registry.RegisterDecoder("myformat", decoder{})
-		if err != ErrDecoderFormatAlreadyRegistered {
+		if !errors.Is(err, ErrDecoderFormatAlreadyRegistered) {
 			t.Fatalf("expected ErrDecoderFormatAlreadyRegistered, got: %v", err)
 		}
 	})
@@ -70,7 +71,7 @@ func TestDecoderRegistry_Decode(t *testing.T) {
 		var v string
 
 		err := registry.Decode("myformat", []byte("some value"), &v)
-		if err != ErrDecoderNotFound {
+		if !errors.Is(err, ErrDecoderNotFound) {
 			t.Fatalf("expected ErrDecoderNotFound, got: %v", err)
 		}
 	})
diff --git a/internal/encoding/encoder_test.go b/internal/encoding/encoder_test.go
index e2472ad..4429b9a 100644
--- a/internal/encoding/encoder_test.go
+++ b/internal/encoding/encoder_test.go
@@ -1,6 +1,7 @@
 package encoding
 
 import (
+	"errors"
 	"testing"
 )
 
@@ -31,7 +32,7 @@ func TestEncoderRegistry_RegisterEncoder(t *testing.T) {
 		}
 
 		err = registry.RegisterEncoder("myformat", encoder{})
-		if err != ErrEncoderFormatAlreadyRegistered {
+		if !errors.Is(err, ErrEncoderFormatAlreadyRegistered) {
 			t.Fatalf("expected ErrEncoderFormatAlreadyRegistered, got: %v", err)
 		}
 	})
@@ -63,7 +64,7 @@ func TestEncoderRegistry_Decode(t *testing.T) {
 		registry := NewEncoderRegistry()
 
 		_, err := registry.Encode("myformat", "some value")
-		if err != ErrEncoderNotFound {
+		if !errors.Is(err, ErrEncoderNotFound) {
 			t.Fatalf("expected ErrEncoderNotFound, got: %v", err)
 		}
 	})
diff --git a/viper_test.go b/viper_test.go
index 464fce0..e017e1c 100644
--- a/viper_test.go
+++ b/viper_test.go
@@ -8,6 +8,7 @@ package viper
 import (
 	"bytes"
 	"encoding/json"
+	"errors"
 	"io"
 	"io/ioutil"
 	"os"
@@ -1840,7 +1841,8 @@ func TestSafeWriteConfigWithExistingFile(t *testing.T) {
 	v.SetConfigType("yaml")
 	err := v.SafeWriteConfig()
 	require.Error(t, err)
-	_, ok := err.(ConfigFileAlreadyExistsError)
+	var cfaeErr ConfigFileAlreadyExistsError
+	ok := errors.As(err, &cfaeErr)
 	assert.True(t, ok, "Expected ConfigFileAlreadyExistsError")
 }
 
@@ -1865,7 +1867,8 @@ func TestSafeWriteConfigAsWithExistingFile(t *testing.T) {
 	v.SetFs(fs)
 	err := v.SafeWriteConfigAs("/test/c.yaml")
 	require.Error(t, err)
-	_, ok := err.(ConfigFileAlreadyExistsError)
+	var cfaeErr ConfigFileAlreadyExistsError
+	ok := errors.As(err, &cfaeErr)
 	assert.True(t, ok, "Expected ConfigFileAlreadyExistsError")
 }