diff --git a/.travis.mk b/.travis.mk
index 55bee99808aa58c6bd2a18d0bae01e418171f222..e3bf28c531ab17e185337f38c1919fc469a2648d 100644
--- a/.travis.mk
+++ b/.travis.mk
@@ -49,7 +49,7 @@ test_ubuntu: deps_ubuntu
 
 deps_osx:
 	brew update
-	brew install openssl readline curl icu4c --force
+	brew install python2 openssl readline curl icu4c --force
 	curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | python
 	pip install -r test-run/requirements.txt
 
@@ -62,7 +62,7 @@ test_osx: deps_osx
 	ulimit -S -n 20480 || :
 	ulimit -n
 	make -j8
-	cd test && python test-run.py --force -j 1 unit/ app/ app-tap/ box/ box-tap/
+	cd test && ./test-run.py --force -j 1 unit/ app/ app-tap/ box/ box-tap/
 
 coverage_ubuntu: deps_ubuntu
 	cmake . -DCMAKE_BUILD_TYPE=Debug -DENABLE_GCOV=ON
diff --git a/test/app-tap/http_client.skipcond b/test/app-tap/http_client.skipcond
deleted file mode 100644
index c5713ff1ff33b44425f296a768b9d2dc130ef9b3..0000000000000000000000000000000000000000
--- a/test/app-tap/http_client.skipcond
+++ /dev/null
@@ -1,7 +0,0 @@
-import os
-
-# Travis CI fails to start httpd.py for unknown reason
-if os.environ.get('TRAVIS', False):
-    self.skip = 1
-
-# vim: set ft=python :
diff --git a/test/app-tap/http_client.test.lua b/test/app-tap/http_client.test.lua
index 9b911bc2618a6daded298b12350693b87cd058f4..680c78b3522f2c85f43d729dde8a6e449cabb442 100755
--- a/test/app-tap/http_client.test.lua
+++ b/test/app-tap/http_client.test.lua
@@ -260,7 +260,7 @@ local function test_post_and_get(test, url, opts)
 end
 
 local function test_errors(test)
-    test:plan(3)
+    test:plan(2)
     local http = client:new()
     local status, err = pcall(http.get, http, "htp://mail.ru")
     test:ok(not status and string.find(json.encode(err),
@@ -271,7 +271,6 @@ local function test_errors(test)
                         "Unsupported protocol"),
                         "POST: exception on bad protocol")
     local r = http:get("http://do_not_exist_8ffad33e0cb01e6a01a03d00089e71e5b2b7e9930dfcba.ru")
-    test:is(r.status, 595, "GET: response on bad url")
 end
 
 -- gh-3679 allow only headers can be converted to string
@@ -559,16 +558,14 @@ local function test_concurrent(test, url, opts)
 end
 
 function run_tests(test, sock_family, sock_addr)
-    test:plan(10)
+    test:plan(11)
     local server, url, opts = start_server(test, sock_family, sock_addr)
     test:test("http.client", test_http_client, url, opts)
     test:test("http.client headers redefine", test_http_client_headers_redefine,
               url, opts)
     test:test("cancel and errinj", test_cancel_and_errinj, url .. 'long_query', opts)
     test:test("basic http post/get", test_post_and_get, url, opts)
--- disabled, please make test local, the internet is not always available
--- and quick during a test, gh-4254
---    test:test("errors", test_errors)
+    test:test("errors", test_errors)
     test:test("request_headers", test_request_headers, url, opts)
     test:test("headers", test_headers, url, opts)
     test:test("special methods", test_special_methods, url, opts)