diff --git a/testsuite/config/ghc b/testsuite/config/ghc
index d4764e3c3c9fe74fa5c5ea66ba01eb57bd7fd685..34d538765b9a2b5204c54b1ee1d303a7344bffae 100644
--- a/testsuite/config/ghc
+++ b/testsuite/config/ghc
@@ -81,7 +81,6 @@ if not config.arch == "javascript":
 
 if config.arch == "wasm32":
     config.have_process = False
-    config.supports_dynamic_libs = False
 
 config.way_flags = {
     'normal'       : [],
diff --git a/testsuite/driver/testlib.py b/testsuite/driver/testlib.py
index 00790289ad307eb7e524aa4d824e65454f010482..4fb0cf38e9349ce94290e6323caa9e779f32c4cf 100644
--- a/testsuite/driver/testlib.py
+++ b/testsuite/driver/testlib.py
@@ -258,11 +258,8 @@ def req_dynamic_ghc( name, opts ):
         skip(name,opts)
 
 def req_interp( name, opts ):
-    if not config.have_interp or isCross():
+    if not config.have_interp:
         opts.expect = 'fail'
-    # skip on wasm32, otherwise they show up as unexpected passes
-    if arch('wasm32'):
-        skip(name, opts)
 
 def req_bco( name, opts ):
     '''
@@ -552,7 +549,7 @@ def valid_way( way: WayName ) -> bool:
     if way in {'ghci', 'ghci-opt', 'ghci-ext'}:
         return config.have_RTS_linker
     if way == 'ghci-ext-prof':
-        return config.have_RTS_linker and config.have_profiling
+        return config.have_RTS_linker and config.have_profiling and not arch('wasm32')
     return True
 
 def extra_ways( ways: List[WayName] ):
diff --git a/testsuite/tests/driver/all.T b/testsuite/tests/driver/all.T
index 93ac16a005d59b19fff0742c2bfa0a3070d7216d..f1e173bc654ba3785cf690e5399e24d7f3289f1a 100644
--- a/testsuite/tests/driver/all.T
+++ b/testsuite/tests/driver/all.T
@@ -126,7 +126,7 @@ test('static001', [extra_files(['Static001.hs']),
      makefile_test, ['static001'])
 
 test('dynHelloWorld',
-     [only_ways(['dyn']), when(opsys('linux') and not ghc_dynamic(), expect_broken(20706))],
+     [only_ways(['dyn']), when(opsys('linux') and not ghc_dynamic() and not arch('wasm32'), expect_broken(20706))],
      compile_and_run,
      [''])