diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,8 @@
-## Mark Ext 0.2.1.4
+## MMark Ext 0.2.1.5
+
+* The test suite now passes with `modern-uri-0.3.4.4`.
+
+## MMark Ext 0.2.1.4
 
 * Prevent the test suite from failing ever again. [Issue
   25](https://github.com/mmark-md/mmark-ext/issues/25).
diff --git a/Text/MMark/Extension/ObfuscateEmail.hs b/Text/MMark/Extension/ObfuscateEmail.hs
--- a/Text/MMark/Extension/ObfuscateEmail.hs
+++ b/Text/MMark/Extension/ObfuscateEmail.hs
@@ -18,6 +18,7 @@
 
 import Data.List.NonEmpty (NonEmpty (..))
 import Data.Text (Text)
+import qualified Data.Text as T
 import Lucid
 import Text.MMark.Extension (Extension, Inline (..))
 import qualified Text.MMark.Extension as Ext
@@ -58,7 +59,7 @@
                 [ class_ class',
                   data_
                     "email"
-                    (URI.render email {URI.uriScheme = Nothing})
+                    (T.drop 7 (URI.render email))
                 ]
         else old l
     other -> old other
diff --git a/mmark-ext.cabal b/mmark-ext.cabal
--- a/mmark-ext.cabal
+++ b/mmark-ext.cabal
@@ -1,11 +1,11 @@
-cabal-version:   1.18
+cabal-version:   2.4
 name:            mmark-ext
-version:         0.2.1.4
-license:         BSD3
+version:         0.2.1.5
+license:         BSD-3-Clause
 license-file:    LICENSE.md
 maintainer:      Mark Karpov <markkarpov92@gmail.com>
 author:          Mark Karpov <markkarpov92@gmail.com>
-tested-with:     ghc ==8.8.4 ghc ==8.10.5 ghc ==9.0.1
+tested-with:     ghc ==8.10.7 ghc ==9.0.2 ghc ==9.2.1
 homepage:        https://github.com/mmark-md/mmark-ext
 bug-reports:     https://github.com/mmark-md/mmark-ext/issues
 synopsis:        Commonly useful extensions for the MMark markdown processor
@@ -55,7 +55,7 @@
         lucid >=2.9.13 && <3.0,
         microlens >=0.4 && <0.5,
         mmark >=0.0.4 && <=0.1,
-        modern-uri >=0.3.4 && <0.4,
+        modern-uri >=0.3.4.4 && <0.4,
         skylighting >=0.7.6 && <0.13,
         text >=0.2 && <1.3
 
@@ -68,10 +68,10 @@
         ghc-options: -O2 -Wall
 
 test-suite tests
-    type:             exitcode-stdio-1.0
-    main-is:          Spec.hs
-    build-tools:      hspec-discover >=2.0 && <3.0
-    hs-source-dirs:   tests
+    type:               exitcode-stdio-1.0
+    main-is:            Spec.hs
+    build-tool-depends: hspec-discover:hspec-discover >=2.0 && <3.0
+    hs-source-dirs:     tests
     other-modules:
         Text.MMark.Extension.CommentSpec
         Text.MMark.Extension.FontAwesomeSpec
@@ -86,7 +86,7 @@
         Text.MMark.Extension.TableOfContentsSpec
         Text.MMark.Extension.TestUtils
 
-    default-language: Haskell2010
+    default-language:   Haskell2010
     build-depends:
         base >=4.13 && <5.0,
         hspec >=2.0 && <3.0,
diff --git a/tests/Text/MMark/Extension/ObfuscateEmailSpec.hs b/tests/Text/MMark/Extension/ObfuscateEmailSpec.hs
--- a/tests/Text/MMark/Extension/ObfuscateEmailSpec.hs
+++ b/tests/Text/MMark/Extension/ObfuscateEmailSpec.hs
@@ -12,7 +12,7 @@
     let to = withExt (obfuscateEmail "foo")
     context "when URI has the mailto scheme" $
       it "produces the correct HTML" $
-        "<mailto:me@example.org>" `to` "<p><a class=\"foo\" data-email=\"me@example.org\" href=\"javascript:void(0)\">Enable JavaScript to see this email</a></p>\n"
+        "<mailto:me@example.org>" `to` "<p><a class=\"foo\" data-email=\"me@example.org\" href=\"javascript:void%280%29\">Enable JavaScript to see this email</a></p>\n"
     context "when URI has some other scheme" $
       it "produces the correct HTML" $
         "<https:example.org>" `to` "<p><a href=\"https:example.org\">https:example.org</a></p>\n"
diff --git a/tests/Text/MMark/Extension/TableOfContentsSpec.hs b/tests/Text/MMark/Extension/TableOfContentsSpec.hs
--- a/tests/Text/MMark/Extension/TableOfContentsSpec.hs
+++ b/tests/Text/MMark/Extension/TableOfContentsSpec.hs
@@ -15,8 +15,8 @@
     it "works" $ do
       input <- TIO.readFile "data/toc.md"
       expected <- TIO.readFile "data/toc.html"
-      let Right doc = MMark.parse "" input
-          headings = MMark.runScanner doc (tocScanner (> 1))
+      Right doc <- pure (MMark.parse "" input)
+      let headings = MMark.runScanner doc (tocScanner (> 1))
           actual =
             TL.toStrict
               . L.renderText
diff --git a/tests/Text/MMark/Extension/TestUtils.hs b/tests/Text/MMark/Extension/TestUtils.hs
--- a/tests/Text/MMark/Extension/TestUtils.hs
+++ b/tests/Text/MMark/Extension/TestUtils.hs
@@ -20,8 +20,8 @@
   Text ->
   Expectation
 withExt ext input expected = do
-  let Right doc = MMark.parse "" input
-      actual =
+  Right doc <- pure (MMark.parse "" input)
+  let actual =
         TL.toStrict
           . L.renderText
           . MMark.render
