diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000000000000000000000000000000000000..86c74bc40147618d1d306c01884923ab160c2987
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,17 @@
+stages:
+  - test
+test:
+  stage: test
+  image: node:15-buster-slim
+  cache:
+    key: "pnpm-cache"
+    paths:
+      - "$CI_PROJECT_DIR/.pnpm-store"
+  before_script:
+    - pnpm install
+  script:
+    - jest src/ --coverage --coverageReporters cobertura
+  coverage: /All\sfiles.*?\s+(\d+.\d+)/
+  artifacts:
+    reports:
+      cobertura: coverage/cobertura-coverage.xml
diff --git a/package.json b/package.json
index deb93a1c98b519cf328f4fa64429a40bbf1bd974..0538b0af5caa65ddd41238554663da45b5df0fb4 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,7 @@
   "scripts": {
     "start": "snowpack dev",
     "build": "snowpack build",
-    "test": "jest src/ --coverage --watchAll",
+    "test": "jest --coverage --watchAll",
     "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx}\"",
     "lint": "prettier --check \"src/**/*.{js,jsx,ts,tsx}\""
   },