From 7fb783a994fcd0438abea19555290457fec297bf Mon Sep 17 00:00:00 2001
From: Patrizio Bekerle <patrizio@bekerle.com>
Date: Tue, 2 Mar 2021 14:58:03 +0100
Subject: [PATCH] Add end2end testing

---
 .gitlab-ci.yml | 54 +++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 51 insertions(+), 3 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 29402570..92f28af7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -4,15 +4,22 @@ cache:
   key: ${CI_PROJECT_PATH}
   paths:
     - _yarn_cache
+    - _cypress_cache
+
+before_script:
+  - yarn config set cache-folder "$CI_PROJECT_DIR/_yarn_cache"
+  - export CYPRESS_CACHE_FOLDER="$CI_PROJECT_DIR/_cypress_cache"
 
 stages:
   - test
   - deploy
+  - e2e-stage1
+  - e2e-stage2
+  - e2e-stage3
 
 test:
   stage: test
   script:
-    - yarn config set cache-folder "$CI_PROJECT_DIR/_yarn_cache"
     - yarn install
     - yarn run test
 
@@ -20,7 +27,6 @@ linting:
   stage: test
   allow_failure: true
   script:
-    - yarn config set cache-folder "$CI_PROJECT_DIR/_yarn_cache"
     - yarn install
     - yarn run lint
 
@@ -35,7 +41,6 @@ publish:
     # NPM_TOKEN needs to be a "Publish" token with 2FA disabled!
     # "Automation" tokens don't work with lerna (even if they would work with "npm publish")
     - echo '//registry.npmjs.org/:_authToken=${NPM_TOKEN}' > ~/.npmrc
-    - yarn config set cache-folder "$CI_PROJECT_DIR/_yarn_cache"
     - yarn install
     - yarn run build
     - yarn run publish
@@ -81,3 +86,46 @@ deploy_development:
     DEPLOY_KEY: "$DEPLOY_SSH_KEY"
   <<: *deploy_defaults
 
+# For docker images see:
+# https://github.com/cypress-io/cypress-docker-images/tree/master/browsers#cypressbrowsers
+
+.e2e_test_defaults: &e2e_test_defaults
+  only:
+    refs:
+      - master
+  # We don't need artifacts from previous runs
+  dependencies: []
+  script:
+    - git clone https://gitlab.tugraz.at/dbp/middleware/e2e-tests.git --depth 1
+    - cd e2e-tests
+    - yarn install
+    #    - ./node_modules/.bin/cypress run --browser "$BROWSER" --spec "cypress/integration/toolkit-showcase/*.spec.js"
+    - xvfb-run ./node_modules/.bin/cypress run --browser "$BROWSER" --headed --spec "cypress/integration/toolkit-showcase/*.spec.js"
+  artifacts:
+    paths:
+      - e2e-tests/cypress/videos/*
+      - e2e-tests/cypress/screenshots/*
+    expire_in: 4 week
+    when: always
+
+ff75:
+  image: cypress/browsers:node13.8.0-chrome81-ff75
+  stage: e2e-stage1
+  variables:
+    MOZ_FORCE_DISABLE_E10S: 'true'
+    BROWSER: 'firefox'
+  <<: *e2e_test_defaults
+
+chrome84:
+  image: cypress/browsers:node14.7.0-chrome84
+  stage: e2e-stage2
+  variables:
+    BROWSER: 'chrome'
+  <<: *e2e_test_defaults
+
+edge88:
+  image: cypress/browsers:node14.10.1-edge88
+  stage: e2e-stage3
+  variables:
+    BROWSER: 'edge'
+  <<: *e2e_test_defaults
-- 
GitLab