diff --git a/test/korap-ui.js b/test/korap-ui.js
index 467bb04..bb5e293 100644
--- a/test/korap-ui.js
+++ b/test/korap-ui.js
@@ -1,14 +1,17 @@
-const { doesNotMatch } = require('assert');
 const { beforeEach } = require('mocha');
 const puppeteer = require('puppeteer')
 var chai = require('chai');
+const { expect, assert } = require('chai');
 var should = chai.should();
-var assert = chai.assert;
 const KORAP_URL = process.env.KORAP_URL || "http://localhost:64543";
-const KORAP_LOGIN = process.env.KORAP_LOGIN || "user2";
+const KORAP_LOGIN = (process.env.KORAP_LOGIN || process.env.KORAP_LOGIN == "" ? process.env.KORAP_LOGIN : "user2")
 const KORAP_PWD = process.env.KORAP_PWD || "password2";
 const KORAP_QUERIES = 'geht, [orth=geht & cmc/pos=VVFIN]'
-const korap_rc = require('../lib/korap_rc.js').new(KORAP_URL);
+const korap_rc = require('../lib/korap_rc.js').new(KORAP_URL)
+
+function ifConditionIt(title, condition, test) {
+    return condition ? it(title, test) : it.skip(title, test)
+}
 
 describe('Running KorAP UI end-to-end tests on ' + KORAP_URL, () => {
     const screenshot = 'screenshot.png'
@@ -22,13 +25,23 @@
         await browser.close()
     })
 
-    it('Login into KorAP with incorrect credentials fails',
+    it('KorAP UI is up and running',
+        (async () => {
+            await await page.goto(KORAP_URL);
+            const query_field = await page.$("#q-field")
+            assert.isNotNull(query_field, "#q-field not found. Kalamar not running?");
+        })).timeout(10000)
+
+
+    ifConditionIt('Login into KorAP with incorrect credentials fails',
+        KORAP_LOGIN != "",
         (async () => {
             const login_result = await korap_rc.login(page, KORAP_LOGIN, KORAP_PWD + "*")
             login_result.should.be.false
         })).timeout(10000)
 
-    it('Login into KorAP with correct credentials succeeds',
+    ifConditionIt('Login into KorAP with correct credentials succeeds',
+        KORAP_LOGIN != "",
         (async () => {
             const login_result = await korap_rc.login(page, KORAP_LOGIN, KORAP_PWD)
             login_result.should.be.true
@@ -39,7 +52,6 @@
             await korap_rc.assure_glimpse_off(page)
         })).timeout(10000)
 
-    const expected_hits = 724
     describe('Running searches that should have hits', () => {
         KORAP_QUERIES.split(/[;,] */).forEach((query, i) => {
             it('Search for "' + query + '" has hits',
@@ -50,7 +62,9 @@
                 })).timeout(20000)
         })
     })
-    it('Logout works',
+
+    ifConditionIt('Logout works',
+        KORAP_LOGIN != "",
         (async () => {
             const logout_result = await korap_rc.logout(page)
             logout_result.should.be.true
