diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f5b1fbd2fe47fb9e8f98e390b296bf6e959275b0..953f66de520363c6dd0da6b77764d2fec98ca073 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -15,7 +15,7 @@ variables:
   CONTAINER_TAG: '${CI_REGISTRY_IMAGE}:${CI_PIPELINE_IID}-${CI_COMMIT_SHORT_SHA}'
 
 stages:
-  # - test
+  - test
   - build
   - release
   - deploy
@@ -28,26 +28,33 @@ stages:
     - gcloud config set compute/zone ${GCP_COMPUTE_REGION}
     - gcloud container clusters get-credentials ${GCP_PROJECT_ID}-gke
 
-# run-tests:
-#   stage: test
-#   tags:
-#     - docker-privileged
-#   image: docker:${DOCKER_VERSION}
-#   services:
-#     - name: docker:${DOCKER_VERSION}-dind
-#       alias: containerhost
-#   script:
-#     - docker run -p 27017:27017 -d --name mongo-container --rm mongo:${MONGO_VERSION}
-#     - docker build
-#       --tag "${CONTAINER_TAG}-test"
-#       --target=test
-#       --build-arg MONGODB_URL_TEST=mongodb://containerhost:27017/todo-app
-#       --build-arg JWT_SECRET_TEST=my-very-secret-jwt
-#       "./app"
-#   after_script:
-#     - docker stop mongo-container
-#     - docker images -a | grep "mongo" | awk '{print $3}' | xargs docker rmi --force
-#     - docker image rm --force "${CONTAINER_TAG}-test"
+run-tests:
+  stage: test
+  tags:
+    - docker-privileged
+  image: docker:${DOCKER_VERSION}
+  services:
+    - name: docker:${DOCKER_VERSION}-dind
+      alias: localhost
+  script:
+    - docker run -p 27017:27017
+      --detached
+      --name mongo-container
+      --rm
+      --network=host
+      mongo:${MONGO_VERSION}
+    - docker build
+      --tag "${CONTAINER_TAG}-test"
+      --target=test
+      --network=host
+      --build-arg MONGODB_URL_TEST=mongodb://localhost:27017/todo-app
+      --build-arg JWT_SECRET_TEST=my-very-secret-jwt
+      --add-host=host.docker.internal:localhost
+      "./app"
+  after_script:
+    - docker stop mongo-container
+    - docker images -a | grep "mongo" | awk '{print $3}' | xargs docker rmi --force
+    - docker image rm --force "${CONTAINER_TAG}-test"
 
 build-image:
   stage: build
@@ -120,10 +127,12 @@ deploy-image:
       when: 'always'
       variables:
         ENVIRONMENT_NAME: 'staging'
+        STATIC_IP: 'staging-todoapp-ip'
     - if: $CI_COMMIT_REF_NAME !~ /main/
       when: 'always'
       variables:
         ENVIRONMENT_NAME: 'production'
+        STATIC_IP: 'todoapp-ip'
   tags:
     - docker
   image: google/cloud-sdk:${GOOGLE_CLOUD_SDK_IMAGE_VERSION}
@@ -137,7 +146,8 @@ deploy-image:
     - DEPLOYMENT_MANIFEST=$(sed -e "s,{{image}},${IMAGE},g" ./deployment.yaml.tmpl)
     - echo "${DEPLOYMENT_MANIFEST}" | kubectl apply --namespace "${ENVIRONMENT_NAME}-${K8S_NAMESPACE}" --filename -
     - kubectl apply -f service.yaml --namespace "${ENVIRONMENT_NAME}-${K8S_NAMESPACE}"
-    - kubectl apply -f ingress.yaml --namespace "${ENVIRONMENT_NAME}-${K8S_NAMESPACE}"
+    - INGRESS_MANIFEST=$(sed -e "s,{{static-ip-name}},${STATIC_IP},g" ./ingress.yaml.tmpl)
+    - echo "${INGRESS_MANIFEST}" | kubectl apply --namespace "${ENVIRONMENT_NAME}-${K8S_NAMESPACE}" --filename -
 
 
 
diff --git a/k8s-manifests/ingress.yaml b/k8s-manifests/ingress.yaml.tmpl
similarity index 86%
rename from k8s-manifests/ingress.yaml
rename to k8s-manifests/ingress.yaml.tmpl
index 675762207cbe8609b5b265db97b48d3ce8e356fb..7635067ab99bf8b02bce80d803d08e0d511c327f 100644
--- a/k8s-manifests/ingress.yaml
+++ b/k8s-manifests/ingress.yaml.tmpl
@@ -5,7 +5,7 @@ metadata:
   annotations:
     kubernetes.io/ingress.class: "gce" # an external load-balancer
     kubernetes.io/ingress.allow-http: "false" # disabling HTTP
-    kubernetes.io/ingress.global-static-ip-name: todoapp-ip # staging-todoapp-ip for staging
+    kubernetes.io/ingress.global-static-ip-name: {{static-ip-name}} # staging-todoapp-ip for staging
     networking.gke.io/managed-certificates: todoapp-managed-cert # defined in the infrastructure repository
 spec:
   # rules: