diff --git a/dev/js/spec/tourSpec.js b/dev/js/spec/tourSpec.js
index c342483..2a9d38e 100644
--- a/dev/js/spec/tourSpec.js
+++ b/dev/js/spec/tourSpec.js
@@ -87,7 +87,12 @@
     return cb(preDefinedStat);
   }; 
   
-
+  var noresultkorap =  
+  "<div id='search' class=''>" + 
+    "<div class='panel result'><div></div></div></div>" +
+    "<p class='no-results'>Unable to perform the action.</p>" +
+  "</div>";
+  
   var resultkorap =  
     "<div id='search'>" +
       "<ol class='align-left' tabindex='-8'>" +
@@ -393,6 +398,11 @@
   let htmlZwei = resultkorap.trim(); 
   resulttemplate.innerHTML = resultkorap;
   var resultkor = resulttemplate.content;
+ 
+  let noresulttemplate = document.createElement('template');
+  noresultkorap.trim(); 
+  noresulttemplate.innerHTML = noresultkorap;
+  var noresultkor = noresulttemplate.content;
 
   resultkor.querySelector('#search > ol > li:not(.active)').addEventListener('click', function (e) {
     if (this._match !== undefined)
@@ -549,7 +559,15 @@
        resultTour.exit();
      } 
    });
-   
+
+   it('Guided Tour should gracefully stop, if no results are retrieved', function(){
+    let resultTour = tourClass.gTshowResults(noresultkor);
+    KorAP.session = sessionClass.create('KalamarJSDem'); 
+    resultTour.start(noresultkor);
+    expect(document.querySelector(".introjs-donebutton").textContent).toEqual(loc.TOUR_ldone);  
+    resultTour.exit();
+  });
+
    it('Guided Tour should hide Hint if aborted',  function(){
      let tourAbort = tourClass.gTstartSearch(intrkorap);
      tourAbort.start(); 
diff --git a/dev/js/src/loc/de.js b/dev/js/src/loc/de.js
index dd489a6..41614fd 100644
--- a/dev/js/src/loc/de.js
+++ b/dev/js/src/loc/de.js
@@ -80,6 +80,7 @@
   loc.TOUR_seargo = "Durch das Klicken auf das Lupensymbol wird die Suchanfrage gestartet.";
     
   //Guided Tour: explain the result
+  loc.TOUR_nokwicti = loc.TOUR_nokwicti || "Die Suche ergab keine Ergebnisse, daher wird die Tour hier beendet.";
   loc.TOUR_kwicti = "Ergebnisse";
   loc.TOUR_kwic = "Die Ergebnisse der Suche werden hier als KWIC (keyword in context) angezeigt. Vor dem KWIC steht die jeweilige Textsigle des Treffers.";
   loc.TOUR_snippetti = "KWIC";
diff --git a/dev/js/src/tour/tours.js b/dev/js/src/tour/tours.js
index 43ceea1..9490780 100644
--- a/dev/js/src/tour/tours.js
+++ b/dev/js/src/tour/tours.js
@@ -51,6 +51,7 @@
   loc.TOUR_seargo = loc.TOUR_seargo || "Start the search by clicking the magnifying glass.";
 
   //localization guided Tour gTshowResults
+  loc.TOUR_nokwicti = loc.TOUR_nokwicti || "The search has no results, therefore the tour ends here.";
   loc.TOUR_kwicti = loc.TOUR_kwicti || "Results";
   loc.TOUR_kwic = loc.TOUR_kwic || "The results of the query are displayed as KWIC (keyword in context). On the left side, you can see the according text sigle.";
   loc.TOUR_snippetti = loc.TOUR_snippetti ||  "KWIC (2)";
@@ -406,13 +407,16 @@
         tourR.setOption('scrollToElement', true);
         tourR.setOption('scrollTo','tooltip');
         this.testPrerequ(StepsSR, tourR);
-      
-        //TODO see also: introJS.totalSteps() merge requested: //github.com/usablica/intro.js/pull/268/files
+
         tourR.onbeforechange(function(targetedElement){
-          
-        if(this._currentStep == 1){
-          KorAP.session.set("tour", false);
-        }
+           if(this._currentStep == 0){
+            KorAP.session.set("tour", false);
+            if(doe.querySelector("#search + p.no-results")){
+              tourR._introItems[0].intro = loc.TOUR_nokwicti;
+              tourR.goToStepNumber(10);
+              document.querySelector(".introjs-prevbutton").style.visibility = "hidden";
+            }
+            } 
         
         if(this._currentStep == 2){
           doe.querySelector("#search > ol > li").click();
