diff --git a/Makefile b/Makefile
index 6b3651ae9f1579665146b8a73ce1e3c94c9afe43..ade9ba2c69c51fce557f3e614e570992fd8c60bc 100644
--- a/Makefile
+++ b/Makefile
@@ -18,6 +18,7 @@ generate-in-docker: ../../hack/jsonnet-docker-image
 	--rm \
 	-u=$(shell id -u $(USER)):$(shell id -g $(USER)) \
 	-v $(shell dirname $(dir $(abspath $(dir $$PWD)))):/go/src/github.com/coreos/prometheus-operator/ \
+	-v $(shell go env GOCACHE):/.cache/go-build \
 	--workdir /go/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus \
 	po-jsonnet make generate
 
@@ -43,7 +44,7 @@ test: $(JB_BINARY)
 	./test.sh
 
 test-e2e:
-	go test -timeout 55m -v ./tests/e2e
+	go test -timeout 55m -v ./tests/e2e -count=1
 
 test-in-docker: ../../hack/jsonnet-docker-image
 	@echo ">> Compiling assets and generating Kubernetes manifests"
@@ -51,6 +52,7 @@ test-in-docker: ../../hack/jsonnet-docker-image
 	--rm \
 	-u=$(shell id -u $(USER)):$(shell id -g $(USER)) \
 	-v $(shell dirname $(dir $(abspath $(dir $$PWD)))):/go/src/github.com/coreos/prometheus-operator/ \
+	-v $(shell go env GOCACHE):/.cache/go-build \
 	--workdir /go/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus \
 	po-jsonnet make test
 
diff --git a/tests/e2e/travis-e2e.sh b/tests/e2e/travis-e2e.sh
index 45fb974a484bec53906bb972e2a33652ff8d0abc..d1149697928ac4323adccbad72f0d622eb495fff 100755
--- a/tests/e2e/travis-e2e.sh
+++ b/tests/e2e/travis-e2e.sh
@@ -12,9 +12,6 @@ SCRIPT_DIR=$(dirname "${BASH_SOURCE[0]}")
 
 "${SCRIPT_DIR}"/../../../../scripts/create-minikube.sh
 
-# waiting for kube-dns to be ready
-JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'; until kubectl -n kube-system get pods -lk8s-app=kube-dns -o jsonpath="$JSONPATH" 2>&1 | grep -q "Ready=True"; do sleep 1;echo "waiting for kube-dns to be available"; kubectl get pods --all-namespaces; done
-
 (
     cd "${SCRIPT_DIR}"/../.. || exit
     kubectl apply -f manifests