diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 47d1d81a2..8ad6f8a5f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -23,11 +23,7 @@ variables:
   Z_LOCALES: "en-us:de-de"
   # Browser tests and variables
   RAILS_SERVE_STATIC_FILES: "true"
-  REMOTE_URL: "http://selenium:24444/wd/hub"
   TZ: "Europe/London"
-  # docker elgalu/selenium variables for parallel browser instance creation
-  MAX_INSTANCES: "50"
-  MAX_SESSIONS: "50"
   # docker-imap-devel variables required for browser tests
   MAILNAME: "mail.test.dc.zammad.com"
   MAILBOX_INIT: "zammad@mail.test.dc.zammad.com:zammad"
diff --git a/.gitlab/ci/base.yml b/.gitlab/ci/base.yml
index 7349686ec..9e27125b3 100644
--- a/.gitlab/ci/base.yml
+++ b/.gitlab/ci/base.yml
@@ -13,6 +13,22 @@
     ES_INDEX_RAND: "true"
     ES_URL: "http://elasticsearch:9200"
 
+.variables_selenium_firefox: &variables_selenium_firefox
+  variables:
+    REMOTE_URL: "http://selenium-firefox:4444/wd/hub"
+    BROWSER: "firefox"
+    # Settings for Selenium 3:
+    NODE_MAX_INSTANCES: "5"
+    NODE_MAX_SESSION: "5"
+
+.variables_selenium_chrome: &variables_selenium_chrome
+  variables:
+    REMOTE_URL: "http://selenium-chrome:4444/wd/hub"
+    BROWSER: chrome
+    # Settings for Selenium 3:
+    NODE_MAX_INSTANCES: "5"
+    NODE_MAX_SESSION: "5"
+
 .variables_app_restart_cmd: &variables_app_restart_cmd
   variables:
     APP_RESTART_CMD: "bundle exec rake environment zammad:ci:app:restart"
@@ -56,9 +72,13 @@
   name: registry.znuny.com/docker/zammad-elasticsearch:$ELASTICSEARCH_TAG
   alias: elasticsearch
 
-.docker_selenium: &docker_selenium
-  name: registry.znuny.com/docker/zammad-selenium:stable
-  alias: selenium
+.docker_selenium_chrome: &docker_selenium_chrome
+  name: registry.znuny.com/docker/zammad-selenium-chrome:stable
+  alias: selenium-chrome
+
+.docker_selenium_firefox: &docker_selenium_firefox
+  name: registry.znuny.com/docker/zammad-selenium-firefox:stable
+  alias: selenium-firefox
 
 .docker_imap: &docker_imap
   name: registry.znuny.com/docker/zammad-imap:stable
@@ -115,10 +135,19 @@
     - <<: *docker_redis
     - <<: *docker_memcached
 
-.services_postgresql_selenium: &services_postgresql_selenium
+.services_postgresql_selenium_chrome: &services_postgresql_selenium_chrome
+  extends:
+    - .variables_selenium_chrome
   services:
     - <<: *docker_postgresql
-    - <<: *docker_selenium
+    - <<: *docker_selenium_chrome
+
+.services_postgresql_selenium_firefox: &services_postgresql_selenium_firefox
+  extends:
+    - .variables_selenium_firefox
+  services:
+    - <<: *docker_postgresql
+    - <<: *docker_selenium_firefox
 
 .services_mysql_postgresql_imap: &services_mysql_postgresql_imap
   services:
@@ -134,17 +163,33 @@
     - <<: *docker_postgresql
     - <<: *docker_elasticsearch
 
-.services_mysql_postgresql_elasticsearch_selenium_imap: &services_mysql_postgresql_elasticsearch_selenium_imap
+.services_mysql_postgresql_elasticsearch_selenium_chrome_imap: &services_mysql_postgresql_elasticsearch_selenium_chrome_imap
+  extends:
+    - .variables_selenium_chrome
   variables:
     ELASTICSEARCH_TAG: 'stable'
   services:
     - <<: *docker_mysql
     - <<: *docker_postgresql
     - <<: *docker_elasticsearch
-    - <<: *docker_selenium
+    - <<: *docker_selenium_chrome
     - <<: *docker_imap
 
-.services_mysql_postgresql_elasticsearch_selenium_imap_redis_memcached: &services_mysql_postgresql_elasticsearch_selenium_imap_redis_memcached
+.services_mysql_postgresql_elasticsearch_selenium_firefox_imap: &services_mysql_postgresql_elasticsearch_selenium_firefox_imap
+  extends:
+    - .variables_selenium_firefox
+  variables:
+    ELASTICSEARCH_TAG: 'stable'
+  services:
+    - <<: *docker_mysql
+    - <<: *docker_postgresql
+    - <<: *docker_elasticsearch
+    - <<: *docker_selenium_firefox
+    - <<: *docker_imap
+
+.services_mysql_postgresql_elasticsearch_selenium_chrome_imap_redis_memcached: &services_mysql_postgresql_elasticsearch_selenium_chrome_imap_redis_memcached
+  extends:
+    - .variables_selenium_chrome
   variables:
     ELASTICSEARCH_TAG: 'stable'
     REDIS_URL: "redis://redis:6379"
@@ -153,11 +198,28 @@
     - <<: *docker_mysql
     - <<: *docker_postgresql
     - <<: *docker_elasticsearch
-    - <<: *docker_selenium
+    - <<: *docker_selenium_chrome
     - <<: *docker_imap
     - <<: *docker_redis
     - <<: *docker_memcached
 
+.services_mysql_postgresql_elasticsearch_selenium_firefox_imap_redis_memcached: &services_mysql_postgresql_elasticsearch_selenium_firefox_imap_redis_memcached
+  extends:
+    - .variables_selenium_firefox
+  variables:
+    ELASTICSEARCH_TAG: 'stable'
+    REDIS_URL: "redis://redis:6379"
+    MEMCACHE_SERVERS: "memcached"
+  services:
+    - <<: *docker_mysql
+    - <<: *docker_postgresql
+    - <<: *docker_elasticsearch
+    - <<: *docker_selenium_firefox
+    - <<: *docker_imap
+    - <<: *docker_redis
+    - <<: *docker_memcached
+
+
 .rules_integration_manual_start: &rules_integration_manual_start
   rules:
     - if: $CI_MERGE_REQUEST_ID
diff --git a/.gitlab/ci/browser-core.yml b/.gitlab/ci/browser-core.yml
index 0bb7b9172..707449746 100644
--- a/.gitlab/ci/browser-core.yml
+++ b/.gitlab/ci/browser-core.yml
@@ -19,7 +19,6 @@ include:
     - .env_base
     - .variables_es
     - .variables_app_restart_cmd
-    - .services_mysql_postgresql_elasticsearch_selenium_imap_redis_memcached
   variables:
     RAILS_ENV: "production"
   script:
@@ -28,6 +27,16 @@ include:
     - bundle exec rake zammad:ci:test:start[with_elasticsearch]
     - time bundle exec rails test --fail-fast test/browser
 
+.template_browser-core_chrome: &template_browser-core_chrome
+  extends:
+    - .template_browser-core
+    - .services_mysql_postgresql_elasticsearch_selenium_chrome_imap_redis_memcached
+
+.template_browser-core_firefox: &template_browser-core_firefox
+  extends:
+    - .template_browser-core
+    - .services_mysql_postgresql_elasticsearch_selenium_firefox_imap_redis_memcached
+
 .template_browser-core_autowizard: &template_browser-core_autowizard
   stage: browser-core
   dependencies:
@@ -35,7 +44,6 @@ include:
   extends:
     - .env_base
     - .variables_app_restart_cmd
-    - .services_postgresql_selenium
   variables:
     RAILS_ENV: "production"
     AUTO_WIZARD_FILE: "contrib/auto_wizard_example.json"
@@ -46,6 +54,16 @@ include:
     - bundle exec rake zammad:ci:test:start
     - bundle exec rails test $TEST_FILE
 
+.template_browser-core_autowizard_chrome: &template_browser-core_autowizard_chrome
+  extends:
+    - .template_browser-core_autowizard
+    - .services_postgresql_selenium_chrome
+
+.template_browser-core_autowizard_firefox: &template_browser-core_autowizard_firefox
+  extends:
+    - .template_browser-core_autowizard
+    - .services_postgresql_selenium_firefox
+
 .template_browser-core_api_client: &template_browser-core_api_client
   stage: browser-core
   dependencies:
@@ -57,25 +75,30 @@ include:
   variables:
     RAILS_ENV: "production"
 
-.template_browser-capybara: &template_browser-capybara
+.template_browser-core_capybara: &template_browser-core_capybara
+  stage: browser-core
   dependencies:
     - browser:build
   extends:
     - .env_base
     - .variables_es
-    - .services_mysql_postgresql_elasticsearch_selenium_imap_redis_memcached
   variables:
     RAILS_ENV: "test"
     REDIS_URL: "redis://redis:6379"
-
-.template_browser-core_capybara: &template_browser-core_capybara
-  extends:
-    - .template_browser-capybara
-  stage: browser-core
   script:
     - bundle exec rake zammad:ci:test:prepare
     - bundle exec rspec --fail-fast -t type:system -t ~integration
 
+.template_browser-core_capybara_chrome: &template_browser-core_capybara_chrome
+  extends:
+    - .template_browser-core_capybara
+    - .services_mysql_postgresql_elasticsearch_selenium_chrome_imap_redis_memcached
+
+.template_browser-core_capybara_firefox: &template_browser-core_capybara_firefox
+  extends:
+    - .template_browser-core_capybara
+    - .services_mysql_postgresql_elasticsearch_selenium_firefox_imap_redis_memcached
+
 # we need at least one job to store and include this template
 # $IGNORE is not defined
 ignore:
diff --git a/.gitlab/ci/browser-core/autowizard_chrome.yml b/.gitlab/ci/browser-core/autowizard_chrome.yml
index 83f55eac0..4ba3b8ee4 100644
--- a/.gitlab/ci/browser-core/autowizard_chrome.yml
+++ b/.gitlab/ci/browser-core/autowizard_chrome.yml
@@ -1,5 +1,3 @@
 autowizard_chrome:
   extends:
-    - .template_browser-core_autowizard
-  variables:
-    BROWSER: "chrome"
\ No newline at end of file
+    - .template_browser-core_autowizard_chrome
diff --git a/.gitlab/ci/browser-core/autowizard_ff.yml b/.gitlab/ci/browser-core/autowizard_ff.yml
index 874d4ce8e..66d02deba 100644
--- a/.gitlab/ci/browser-core/autowizard_ff.yml
+++ b/.gitlab/ci/browser-core/autowizard_ff.yml
@@ -1,5 +1,3 @@
 autowizard_ff:
   extends:
-    - .template_browser-core_autowizard
-  variables:
-    BROWSER: "firefox"
\ No newline at end of file
+    - .template_browser-core_autowizard_firefox
diff --git a/.gitlab/ci/browser-core/capybara_chrome.yml b/.gitlab/ci/browser-core/capybara_chrome.yml
index 15646ddd4..c9b64d1d1 100644
--- a/.gitlab/ci/browser-core/capybara_chrome.yml
+++ b/.gitlab/ci/browser-core/capybara_chrome.yml
@@ -1,5 +1,3 @@
 capybara_chrome:
   extends:
-    - .template_browser-core_capybara
-  variables:
-    BROWSER: "chrome"
\ No newline at end of file
+    - .template_browser-core_capybara_chrome
diff --git a/.gitlab/ci/browser-core/capybara_ff.yml b/.gitlab/ci/browser-core/capybara_ff.yml
index e76ab04ec..8aef82b3c 100644
--- a/.gitlab/ci/browser-core/capybara_ff.yml
+++ b/.gitlab/ci/browser-core/capybara_ff.yml
@@ -1,5 +1,3 @@
 capybara_ff:
   extends:
-    - .template_browser-core_capybara
-  variables:
-    BROWSER: "firefox"
\ No newline at end of file
+    - .template_browser-core_capybara_firefox
diff --git a/.gitlab/ci/browser-core/chrome.yml b/.gitlab/ci/browser-core/chrome.yml
index ed674e5d0..52f688989 100644
--- a/.gitlab/ci/browser-core/chrome.yml
+++ b/.gitlab/ci/browser-core/chrome.yml
@@ -1,41 +1,35 @@
 1_chrome:
   extends:
-    - .template_browser-core
+    - .template_browser-core_chrome
   variables:
-    BROWSER: "chrome"
     TEST_SLICE: "1"
 
 2_chrome:
   extends:
-    - .template_browser-core
+    - .template_browser-core_chrome
   variables:
-    BROWSER: "chrome"
     TEST_SLICE: "2"
 
 3_chrome:
   extends:
-    - .template_browser-core
+    - .template_browser-core_chrome
   variables:
-    BROWSER: "chrome"
     TEST_SLICE: "3"
 
 4_chrome:
   extends:
-    - .template_browser-core
+    - .template_browser-core_chrome
   variables:
-    BROWSER: "chrome"
     TEST_SLICE: "4"
 
 5_chrome:
   extends:
-    - .template_browser-core
+    - .template_browser-core_chrome
   variables:
-    BROWSER: "chrome"
     TEST_SLICE: "5"
 
 6_chrome:
   extends:
-    - .template_browser-core
+    - .template_browser-core_chrome
   variables:
-    BROWSER: "chrome"
     TEST_SLICE: "6"
diff --git a/.gitlab/ci/browser-core/firefox.yml b/.gitlab/ci/browser-core/firefox.yml
index 0a757e57f..ef795942c 100644
--- a/.gitlab/ci/browser-core/firefox.yml
+++ b/.gitlab/ci/browser-core/firefox.yml
@@ -1,42 +1,36 @@
 1_firefox:
   extends:
-    - .template_browser-core
+    - .template_browser-core_firefox
   variables:
-    BROWSER: "firefox"
     TEST_SLICE: "1"
 
 2_firefox:
   extends:
-    - .template_browser-core
+    - .template_browser-core_firefox
   variables:
-    BROWSER: "firefox"
     TEST_SLICE: "2"
 
 3_firefox:
   extends:
-    - .template_browser-core
+    - .template_browser-core_firefox
     - .tags_mail
   variables:
-    BROWSER: "firefox"
     TEST_SLICE: "3"
 
 4_firefox:
   extends:
-    - .template_browser-core
+    - .template_browser-core_firefox
   variables:
-    BROWSER: "firefox"
     TEST_SLICE: "4"
 
 5_firefox:
   extends:
-    - .template_browser-core
+    - .template_browser-core_firefox
   variables:
-    BROWSER: "firefox"
     TEST_SLICE: "5"
 
 6_firefox:
   extends:
-    - .template_browser-core
+    - .template_browser-core_firefox
   variables:
-    BROWSER: "firefox"
     TEST_SLICE: "6"
diff --git a/.gitlab/ci/browser-integration.yml b/.gitlab/ci/browser-integration.yml
index 629189765..537ef2a79 100644
--- a/.gitlab/ci/browser-integration.yml
+++ b/.gitlab/ci/browser-integration.yml
@@ -15,21 +15,30 @@ include:
     - .env_base
     - .variables_app_restart_cmd
     - .variables_es
-    - .services_mysql_postgresql_elasticsearch_selenium_imap_redis_memcached
   variables:
     RAILS_ENV: "test"
   script:
     - bundle exec rake zammad:ci:test:prepare
     - bundle exec rspec --fail-fast --pattern "spec/system/**/*_spec.rb" -t integration
 
-.template_browser-integration: &template_browser-integration
+.template_browser-integration_capybara_chrome: &template_browser-integration_capybara_chrome
+  extends:
+    - .template_browser-integration_capybara
+    - .services_mysql_postgresql_elasticsearch_selenium_chrome_imap_redis_memcached
+
+.template_browser-integration_capybara_firefox: &template_browser-integration_capybara_firefox
+  extends:
+    - .template_browser-integration_capybara
+    - .services_mysql_postgresql_elasticsearch_selenium_firefox_imap_redis_memcached
+
+.template_browser-integration_chrome: &template_browser-integration_chrome
   stage: browser-integration
   dependencies:
     - browser:build
   extends:
     - .env_base
     - .variables_app_restart_cmd
-    - .services_postgresql_selenium
+    - .services_postgresql_selenium_chrome
   variables:
     RAILS_ENV: "production"
     AUTO_WIZARD_FILE: "contrib/auto_wizard_test.json"
@@ -39,16 +48,15 @@ include:
     - bundle exec rake zammad:ci:test:start
     - bundle exec rails test $TEST_FILE
 
-.template_browser-integration_import: &template_browser-integration_import
+.template_browser-integration_import_chrome: &template_browser-integration_import_chrome
   stage: browser-integration
   dependencies:
     - browser:build
   extends:
     - .env_base
-    - .services_postgresql_selenium
+    - .services_postgresql_selenium_chrome
   variables:
     RAILS_ENV: "production"
-    BROWSER: "chrome"
     RAILS_SERVE_STATIC_FILES: "true"
   script:
     - RAILS_ENV=test bundle exec rake db:create
diff --git a/.gitlab/ci/browser-integration/capybara_chrome.yml b/.gitlab/ci/browser-integration/capybara_chrome.yml
index c1d4c877b..a0e014c95 100644
--- a/.gitlab/ci/browser-integration/capybara_chrome.yml
+++ b/.gitlab/ci/browser-integration/capybara_chrome.yml
@@ -1,5 +1,3 @@
 integration_capybara_chrome:
   extends:
-    - .template_browser-integration_capybara
-  variables:
-    BROWSER: "chrome"
+    - .template_browser-integration_capybara_chrome
diff --git a/.gitlab/ci/browser-integration/capybara_ff.yml b/.gitlab/ci/browser-integration/capybara_ff.yml
index e00b99b41..627474126 100644
--- a/.gitlab/ci/browser-integration/capybara_ff.yml
+++ b/.gitlab/ci/browser-integration/capybara_ff.yml
@@ -1,5 +1,3 @@
 integration_capybara_ff:
   extends:
-    - .template_browser-integration_capybara
-  variables:
-    BROWSER: "firefox"
+    - .template_browser-integration_capybara_firefox
diff --git a/.gitlab/ci/browser-integration/idoit_chrome.yml b/.gitlab/ci/browser-integration/idoit_chrome.yml
index 9e583541f..56bbdbe37 100644
--- a/.gitlab/ci/browser-integration/idoit_chrome.yml
+++ b/.gitlab/ci/browser-integration/idoit_chrome.yml
@@ -1,6 +1,5 @@
 idoit_chrome:
   extends:
-    - .template_browser-integration
+    - .template_browser-integration_chrome
   variables:
-    BROWSER: "chrome"
     TEST_FILE: "test/integration/idoit_browser_test.rb"
diff --git a/.gitlab/ci/browser-integration/otrs_chrome.yml b/.gitlab/ci/browser-integration/otrs_chrome.yml
index 06a70fa5c..6f96953aa 100644
--- a/.gitlab/ci/browser-integration/otrs_chrome.yml
+++ b/.gitlab/ci/browser-integration/otrs_chrome.yml
@@ -1,6 +1,6 @@
 otrs_chrome:
   extends:
-    - .template_browser-integration_import
+    - .template_browser-integration_import_chrome
   variables:
     TEST_FILE: "test/integration/otrs_import_browser_test.rb"
     FF_NETWORK_PER_BUILD: 1   # https://docs.gitlab.com/runner/configuration/feature-flags.html
@@ -9,8 +9,8 @@ otrs_chrome:
   services:
     - name: registry.znuny.com/docker/zammad-postgresql:stable
       alias: postgresql
-    - name: registry.znuny.com/docker/zammad-selenium:stable
-      alias: selenium
+    - name: registry.znuny.com/docker/zammad-selenium-chrome:stable
+      alias: selenium-chrome
     - name: registry.znuny.com/docker/zammad-ci-otrsimport-db:otrs6
       alias: zammad-ci-otrsimport-db
     - name: registry.znuny.com/docker/zammad-ci-otrsimport-app:otrs6
diff --git a/.gitlab/ci/browser-integration/zendesk_chrome.yml b/.gitlab/ci/browser-integration/zendesk_chrome.yml
index e5d1b79c8..816ceef5f 100644
--- a/.gitlab/ci/browser-integration/zendesk_chrome.yml
+++ b/.gitlab/ci/browser-integration/zendesk_chrome.yml
@@ -1,5 +1,5 @@
 zendesk_chrome:
   extends:
-    - .template_browser-integration_import
+    - .template_browser-integration_import_chrome
   variables:
     TEST_FILE: "test/integration/zendesk_import_browser_test.rb"
\ No newline at end of file
