diff --git a/test/replication/status.result b/test/replication/status.result
index b5b02509d7b4eb0e30b7e8a60d453021bdec073c..a78442de136e75fadfab4cc9585528d176e884cc 100644
--- a/test/replication/status.result
+++ b/test/replication/status.result
@@ -1,5 +1,124 @@
-box.schema.user.grant('guest', 'read,write,execute', 'universe')
+--# set connection default
+box.schema.user.grant('guest', 'replication')
+---
+...
+-- box.cfg { custom_proc_title = "master" }
+--# create server replica with rpl_master=default, script='replication/replica.lua'
+--# start server replica
+--# set connection replica
+while box.space['_priv']:len() < 1 do fiber.sleep(0.001) end
+---
+...
+r = box.info.replication
+---
+...
+r.status == "follow"
+---
+- true
+...
+r.lag < 1
+---
+- true
+...
+r.idle < 1
+---
+- true
+...
+box.space._schema:insert({'dup'})
+---
+- ['dup']
+...
+--# set connection default
+box.space._schema:insert({'dup'})
+---
+- ['dup']
+...
+--# set connection replica
+r = box.info.replication
+---
+...
+r.status == "stopped"
+---
+- true
+...
+r.message:match('Duplicate') ~= nil
+---
+- true
+...
+box.cfg { replication_source = "" }
+---
+...
+box.info.replication.status == "off"
+---
+- true
+...
+-- Simulate a slow server to test replication info
+control_ch = require('fiber').channel(1)
+---
+...
+--# setopt delimiter ';'
+local digest = require('digest')
+slowpoke = require('socket').tcp_server('127.0.0.1', 0, function(s, peer)
+    control_ch:get()
+    local seed = digest.urandom(20)
+    local handshake = string.format("Tarantool %-20s %-32s\n%-63s\n",
+    "1.6.3-slowpoke", "@megastorage", digest.base64_encode(seed))
+    s:write(handshake)
+    s:readable()
+    control_ch:get()
+    s:shutdown()
+    s:close()
+end);
+---
+...
+--# setopt delimiter ''
+uri = slowpoke:name()
+---
+...
+box.cfg { replication_source = 'user:pass@'..uri.host..':'..uri.port }
+---
+...
+r = box.info.replication
+---
+...
+r.status == "connect"
+---
+- true
+...
+control_ch:put(true)
+---
+- true
+...
+r = box.info.replication
+---
+...
+r.status == "auth"
+---
+- true
+...
+r.lag < 1
+---
+- true
+...
+-- r.idle < 1 -- broken
+slowpoke:close()
+---
+- true
+...
+control_ch:put("goodbye")
+---
+- true
+...
+r = box.info.replication
+---
+...
+r.status == "disconnected"
+---
+- true
+...
+--# stop server replica
+--# cleanup server replica
+--# set connection default
+box.schema.user.revoke('guest', 'replication')
 ---
 ...
-True
-True
diff --git a/test/replication/status.test.lua b/test/replication/status.test.lua
new file mode 100644
index 0000000000000000000000000000000000000000..cb540de27d64357333c9107288683b5da7bc65c2
--- /dev/null
+++ b/test/replication/status.test.lua
@@ -0,0 +1,63 @@
+--# set connection default
+box.schema.user.grant('guest', 'replication')
+-- box.cfg { custom_proc_title = "master" }
+--# create server replica with rpl_master=default, script='replication/replica.lua'
+--# start server replica
+--# set connection replica
+while box.space['_priv']:len() < 1 do fiber.sleep(0.001) end
+
+r = box.info.replication
+r.status == "follow"
+r.lag < 1
+r.idle < 1
+
+box.space._schema:insert({'dup'})
+--# set connection default
+box.space._schema:insert({'dup'})
+--# set connection replica
+r = box.info.replication
+r.status == "stopped"
+r.message:match('Duplicate') ~= nil
+
+box.cfg { replication_source = "" }
+box.info.replication.status == "off"
+
+-- Simulate a slow server to test replication info
+control_ch = require('fiber').channel(1)
+--# setopt delimiter ';'
+local digest = require('digest')
+slowpoke = require('socket').tcp_server('127.0.0.1', 0, function(s, peer)
+    control_ch:get()
+    local seed = digest.urandom(20)
+    local handshake = string.format("Tarantool %-20s %-32s\n%-63s\n",
+    "1.6.3-slowpoke", "@megastorage", digest.base64_encode(seed))
+    s:write(handshake)
+    s:readable()
+    control_ch:get()
+    s:shutdown()
+    s:close()
+end);
+--# setopt delimiter ''
+
+uri = slowpoke:name()
+box.cfg { replication_source = 'user:pass@'..uri.host..':'..uri.port }
+
+r = box.info.replication
+r.status == "connect"
+
+control_ch:put(true)
+
+r = box.info.replication
+r.status == "auth"
+r.lag < 1
+-- r.idle < 1 -- broken
+
+slowpoke:close()
+control_ch:put("goodbye")
+r = box.info.replication
+r.status == "disconnected"
+
+--# stop server replica
+--# cleanup server replica
+--# set connection default
+box.schema.user.revoke('guest', 'replication')
diff --git a/test/replication/status.test.py b/test/replication/status.test.py
deleted file mode 100644
index 766b8d3993cde1a9e002c5d449e22edf3c48011e..0000000000000000000000000000000000000000
--- a/test/replication/status.test.py
+++ /dev/null
@@ -1,41 +0,0 @@
-import os
-import re
-import time
-
-from lib.tarantool_server import TarantoolServer
-
-# master server
-master = server
-master.admin("box.schema.user.grant('guest', 'read,write,execute', 'universe')")
-
-# replica server
-replica = TarantoolServer()
-replica.script = "replication/replica.lua"
-replica.rpl_master = master
-replica.vardir = os.path.join(master.vardir, 'replica')
-replica.deploy()
-
-replica.get_param('node')
-
-cycles = 0
-status = replica.admin.execute_no_reconnect("box.info.status", True)
-while (re.search(r'replica/.*/(connecting|connected)\n', status) == None and cycles < 500):
-    time.sleep(0.01)
-    status = replica.admin.execute_no_reconnect("box.info.status", True)
-    cycles += 1
-print(re.search(r'replica/.*/(connecting|connected)\n', status) != None)
-
-master.stop()
-cycles = 0
-
-while (re.search(r'replica/.*/(connecting|failed)\n', status) == None and cycles < 500):
-    time.sleep(0.01)
-    status = replica.admin.execute_no_reconnect("box.info.status", True)
-    cycles += 1
-print(re.search(r'replica/.*/(connecting|failed)\n', status) != None)
-
-# Cleanup.
-replica.stop()
-replica.cleanup(True)
-
-master.deploy()
diff --git a/test/replication/suite.ini b/test/replication/suite.ini
index 1841d9fb39fe062c9f022ce0e51252673293b256..ecebdef354ea15c6808256f9ade5e644fcc86d4e 100644
--- a/test/replication/suite.ini
+++ b/test/replication/suite.ini
@@ -2,5 +2,5 @@
 core = tarantool
 script =  master.lua
 description = tarantool/box, replication
-disabled = consistent.test.lua status.test.py
+disabled = consistent.test.lua
 release_disabled = catch.test.lua