diff --git a/tests-extra/tests/zone/load/test.py b/tests-extra/tests/zone/load/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..c40b7581d1a29487cb825557912a6cefe0589241
--- /dev/null
+++ b/tests-extra/tests/zone/load/test.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env python3
+
+'''Test for slave zone refresh when loading.'''
+
+from dnstest.test import Test
+from dnstest.utils import *
+
+t = Test()
+
+master = t.server("knot")
+slave = t.server("knot")
+slave.disable_notify = True
+
+zone_del = t.zone_rnd(1, dnssec=False)
+zone_upd = t.zone_rnd(1, dnssec=False)
+zones = zone_del + zone_upd
+t.link(zones, master, slave)
+
+t.start()
+
+serial_del_init = master.zone_wait(zone_del)
+serial_upd_init = master.zone_wait(zone_upd)
+slave.zones_wait(zones)
+
+slave.stop()
+
+# Update a zonefile on the master.
+master.update_zonefile(zone_upd, random=True)
+master.reload()
+
+# Remove a zonefile on the slave.
+slave.clean(zone=zone_del, timers=False)
+
+slave.start()
+
+# Check for immediate zone transfer if deleted.
+slave.zone_wait(zone_del, serial=serial_del_init, equal=True, greater=False)
+
+# Check for untouched zone if retransfer already scheduled.
+serial_upd = slave.zone_wait(zone_upd)
+master.zone_wait(zone_upd, serial_upd, equal=False, greater=True)
+
+t.end()
diff --git a/tests-extra/tools/dnstest/server.py b/tests-extra/tools/dnstest/server.py
index 891806ed5721342a401b9f8bf1aa3f4741896d50..a84975c365ec4c775aec306fe121f75a7dd1fbee 100644
--- a/tests-extra/tools/dnstest/server.py
+++ b/tests-extra/tools/dnstest/server.py
@@ -663,6 +663,8 @@ class Server(object):
 
     def clean(self, zone=True, timers=True):
         if zone:
+            zone = zone_arg_check(zone)
+
             # Remove all zonefiles.
             if zone is True:
                 for _z in sorted(self.zones):