diff --git a/t/fixtures.t b/t/fixtures.t
index 6508cfc..8a17bd7 100644
--- a/t/fixtures.t
+++ b/t/fixtures.t
@@ -18,28 +18,33 @@
   ->json_is('/errors/0/1',"cosmas3 is not a supported query language!")
   ;
 
-$t->get_ok('/v1.0/search?q=server_fail')
+my $err = $t->get_ok('/v1.0/search?q=server_fail')
   ->status_is(500)
-  ->text_is('#error', '')
   ->content_like(qr!Oooops!)
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
 
-$t->get_ok('/v1.0/search?q=[orth=das&ql=poliqarp&offset=0&count=25')
+$err = $t->get_ok('/v1.0/search?q=[orth=das&ql=poliqarp&offset=0&count=25')
   ->status_is(400)
-  ->text_is('#error', '')
   ->json_is('/errors/0/0',302)
   ->json_is('/errors/0/1','Parantheses/brackets unbalanced.')
   ->json_is('/errors/1/0',302)
   ->json_is('/errors/1/1','Could not parse query >>> [orth=das <<<.')
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
 
-$t->get_ok('/v1.0/search?q=baum&ql=poliqarp&offset=0&count=25')
+
+$err = $t->get_ok('/v1.0/search?q=baum&ql=poliqarp&offset=0&count=25')
   ->status_is(200)
-  ->text_is('#error', '')
   ->json_is('/meta/count', 25)
   ->json_is('/meta/serialQuery', "tokens:s:Baum")
   ->json_is('/matches/0/docSigle', "GOE/AGI")
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
+
 
 $t->get_ok('/v1.0/corpus/WPD15/232/39681/p2133-2134/matchInfo?spans=false&foundry=*')
   ->status_is(200)
diff --git a/t/plugin/auth-oauth.t b/t/plugin/auth-oauth.t
index 33ffafa..cfcfc87 100644
--- a/t/plugin/auth-oauth.t
+++ b/t/plugin/auth-oauth.t
@@ -337,11 +337,10 @@
   ;
 
 # Query without partial cache (unfortunately) (but no total results)
-$t->get_ok('/?q=baum&cutoff=true')
+my $err = $t->get_ok('/?q=baum&cutoff=true')
   ->status_is(200)
   ->session_is('/auth', 'Bearer ' . $access_token_2)
   ->session_is('/auth_r', $refresh_token_2)
-  ->text_is('#error','')
   ->text_is('title', 'KorAP: Find »baum« with Poliqarp')
   ->element_exists('meta[name="DC.title"][content="KorAP: Find »baum« with Poliqarp"]')
   ->element_exists('body[itemscope][itemtype="http://schema.org/SearchResultsPage"]')
@@ -349,7 +348,9 @@
   ->header_isnt('X-Kalamar-Cache', 'true')
   ->content_like(qr!${q}cutOff${q}:true!)
   ->element_exists_not('#total-results')
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
 
 # Expire the session and remove the refresh option
 $t->get_ok('/x/expire-no-refresh')
@@ -367,11 +368,10 @@
 
 # Query without cache
 # The token is invalid and can't be refreshed!
-$t->get_ok('/?q=baum&cutoff=true')
+$err = $t->get_ok('/?q=baum&cutoff=true')
   ->status_is(400)
   ->session_hasnt('/auth')
   ->session_hasnt('/auth_r')
-  ->text_is('#error','')
   ->text_is('div.notify-error','Access token invalid')
   ->text_is('title', 'KorAP: Find »baum« with Poliqarp')
   ->element_exists('meta[name="DC.title"][content="KorAP: Find »baum« with Poliqarp"]')
@@ -379,7 +379,10 @@
   ->content_unlike(qr/${q}authorized${q}:${q}yes${q}/)
   ->header_isnt('X-Kalamar-Cache', 'true')
   ->element_exists('p.no-results')
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
+
 
 $t->get_ok('/x/invalid')
   ->status_is(200)
@@ -388,11 +391,10 @@
 
 # Query without cache
 # The token is invalid and can't be refreshed!
-$t->get_ok('/?q=baum&cutoff=true')
+$err = $t->get_ok('/?q=baum&cutoff=true')
   ->status_is(200)
   ->session_is('/auth', 'Bearer ' . $access_token_2)
   ->session_is('/auth_r', $refresh_token_2)
-  ->text_is('#error','')
   ->element_exists_not('div.notify-error','Access token invalid')
   ->text_is('title', 'KorAP: Find »baum« with Poliqarp')
   ->element_exists('meta[name="DC.title"][content="KorAP: Find »baum« with Poliqarp"]')
@@ -400,7 +402,9 @@
   ->content_like(qr/${q}authorized${q}:${q}yes${q}/)
   ->header_isnt('X-Kalamar-Cache', 'true')
   ->element_exists_not('p.no-results')
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
 
 
 $t->get_ok('/x/expired-with-wrong-refresh')
@@ -410,19 +414,24 @@
 
 
 # The token is invalid and can't be refreshed!
-$csrf = $t->get_ok('/?q=baum&cutoff=true')
+my $dom = $t->get_ok('/?q=baum&cutoff=true')
   ->status_is(400)
   ->session_hasnt('/auth')
   ->session_hasnt('/auth_r')
-  ->text_is('#error','')
   ->text_is('div.notify-error','Refresh token is expired')
   ->text_is('title', 'KorAP: Find »baum« with Poliqarp')
   ->content_unlike(qr/${q}authorized${q}:${q}yes${q}/)
   ->element_exists('p.no-results')
-  ->tx->res->dom->at('input[name="csrf_token"]')
+  ->tx->res->dom;
+
+$csrf = $dom->at('input[name="csrf_token"]')
   ->attr('value')
   ;
 
+$err = $dom->at('#error');
+is(defined $err ? $err->text : '', '');
+
+
 # Login:
 $t->post_ok('/user/login' => form => {
   handle => 'test',
@@ -480,16 +489,17 @@
   ->header_is('Pragma','no-cache')
   ;
 
-$t->get_ok('/settings/oauth')
+my $anchor = $t->get_ok('/settings/oauth')
   ->text_is('.form-table legend', 'Register new client application')
   ->attr_is('.oauth-register','action', '/settings/oauth/register')
   ->text_is('ul.client-list > li > span.client-name a', 'MyApp')
   ->text_is('ul.client-list > li > span.client-desc', 'This is my application')
-  ->text_is('ul.client-list > li > span.client-url a', '')
   ->header_is('Cache-Control','max-age=0, no-cache, no-store, must-revalidate')
   ->header_is('Expires','Thu, 01 Jan 1970 00:00:00 GMT')
   ->header_is('Pragma','no-cache')
+  ->tx->res->dom->at('ul.client-list > li > span.client-url a')
   ;
+is(defined $anchor ? $anchor->text : '', '');
 
 $t->get_ok('/settings/oauth/fCBbQkA2NDA3MzM1Yw==')
   ->status_is(200)
diff --git a/t/query.t b/t/query.t
index a2e2f44..1dc3d92 100644
--- a/t/query.t
+++ b/t/query.t
@@ -28,9 +28,8 @@
 my $q = qr!(?:\"|&quot;)!;
 
 # Query passed
-$t->get_ok('/?q=baum')
+my $err = $t->get_ok('/?q=baum')
   ->status_is(200)
-  ->text_is('#error','')
   ->content_type_is('text/html;charset=UTF-8')
 
   ->text_is('title', 'KorAP: Find »baum« with Poliqarp')
@@ -76,7 +75,10 @@
   ->text_is('li:nth-of-type(1) p.ref time[datetime=1982]', 1982)
   ->text_is('li:nth-of-type(1) p.ref span.sigle', '[GOE/AGI/00000]')
   ->header_isnt('X-Kalamar-Cache', 'true')
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
+
 
 $t->get_ok('/?q=[orth=das')
   ->status_is(400)
@@ -95,58 +97,62 @@
 
 
 # Query with partial cache (for total results)
-$t->get_ok('/?q=baum')
+$err = $t->get_ok('/?q=baum')
   ->status_is(200)
-  ->text_is('#error','')
   ->text_is('title', 'KorAP: Find »baum« with Poliqarp')
   ->element_exists('meta[name="DC.title"][content="KorAP: Find »baum« with Poliqarp"]')
   ->element_exists('body[itemscope][itemtype="http://schema.org/SearchResultsPage"]')
   ->header_isnt('X-Kalamar-Cache', 'true')
   ->content_like(qr!${q}cutOff${q}:true!)
   ->text_is('#total-results', 51)
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
 
 # Query without partial cache (unfortunately) (but no total results)
-$t->get_ok('/?q=baum&cutoff=true')
+$err = $t->get_ok('/?q=baum&cutoff=true')
   ->status_is(200)
-  ->text_is('#error','')
   ->text_is('title', 'KorAP: Find »baum« with Poliqarp')
   ->element_exists('meta[name="DC.title"][content="KorAP: Find »baum« with Poliqarp"]')
   ->element_exists('body[itemscope][itemtype="http://schema.org/SearchResultsPage"]')
   ->header_isnt('X-Kalamar-Cache', 'true')
   ->content_like(qr!${q}cutOff${q}:true!)
   ->element_exists_not('#total-results')
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
 
 # Query with partial cache (but no total results)
-$t->get_ok('/?q=baum&cutoff=true')
+$err = $t->get_ok('/?q=baum&cutoff=true')
   ->status_is(200)
-  ->text_is('#error','')
   ->text_is('title', 'KorAP: Find »baum« with Poliqarp')
   ->element_exists('meta[name="DC.title"][content="KorAP: Find »baum« with Poliqarp"]')
   ->element_exists('body[itemscope][itemtype="http://schema.org/SearchResultsPage"]')
   ->header_is('X-Kalamar-Cache', 'true')
   ->content_like(qr!${q}cutOff${q}:true!)
   ->element_exists_not('#total-results')
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
+
 
 # Query with full cache
-$t->get_ok('/?q=baum')
+$err = $t->get_ok('/?q=baum')
   ->status_is(200)
-  ->text_is('#error','')
   ->text_is('title', 'KorAP: Find »baum« with Poliqarp')
   ->element_exists('meta[name="DC.title"][content="KorAP: Find »baum« with Poliqarp"]')
   ->element_exists('body[itemscope][itemtype="http://schema.org/SearchResultsPage"]')
   ->header_is('X-Kalamar-Cache', 'true')
   ->content_like(qr!${q}cutOff${q}:true!)
   ->text_is('#total-results', 51)
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
 
 
 # Query with page information
-$t->get_ok('/?q=der&p=1&count=2')
+$err = $t->get_ok('/?q=der&p=1&count=2')
   ->status_is(200)
-  ->text_is('#error','')
   ->text_is('title', 'KorAP: Find »der« with Poliqarp')
 
   # Total results
@@ -164,7 +170,10 @@
 
   # Not searched for "der" before
   ->content_unlike(qr!${q}cutOff${q}:true!)
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
+
 
 # Check pagination repetion of page
 my $next_href = $t->get_ok('/?q=der&p=1&count=2')
@@ -173,9 +182,8 @@
 unlike($next_href, qr/p=1/);
 
 # Query with page information - next page
-$t->get_ok('/?q=der&p=2&count=2')
+$err = $t->get_ok('/?q=der&p=2&count=2')
   ->status_is(200)
-  ->text_is('#error','')
   ->text_is('title', 'KorAP: Find »der« with Poliqarp')
   ->element_exists('#search')
 
@@ -192,7 +200,10 @@
   # No caching
   ->header_isnt('X-Kalamar-Cache', 'true')
   ->content_like(qr!${q}cutOff${q}:true!)
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
+
 
 # Query with failing parameters
 $t->get_ok('/?q=fantastisch&ql=Fabelsprache')
@@ -214,11 +225,12 @@
 
 # Query too long
 my $long_query = 'b' x 2000;
-$t->get_ok('/?q=' . $long_query)
+$err = $t->get_ok('/?q=' . $long_query)
   ->status_is(400)
-  ->text_is('#error','')
   ->text_like('#notifications div.notify-error', qr!Parameter ".+?" invalid!)
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
 
 # Query with timeout
 $t->get_ok('/?q=timeout')
@@ -245,12 +257,14 @@
 $t->app->defaults(no_cache => 1);
 
 # Query with collection
-$t->get_ok('/?q=baum&collection=availability+%3D+%2FCC-BY.*%2F')
+$err = $t->get_ok('/?q=baum&collection=availability+%3D+%2FCC-BY.*%2F')
   ->status_is(200)
   ->element_exists("input#cq[value='availability = /CC-BY.*/']")
   ->content_like(qr!${q}availability${q}!)
-  ->text_is('#error','')
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
+
 
 $t->app->hook(
   after_search => sub {
@@ -260,13 +274,14 @@
 );
 
 # Query with corpus query
-$t->get_ok('/?q=baum&cq=availability+%3D+%2FCC-BY.*%2F')
+$err = $t->get_ok('/?q=baum&cq=availability+%3D+%2FCC-BY.*%2F')
   ->status_is(200)
   ->element_exists("input#cq[value='availability = /CC-BY.*/']")
   ->content_like(qr!${q}availability${q}!)
-  ->text_is('#error','')
   ->text_is('#special', 'Funny')
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
 
 my $match = {
   matchID => 'match-FOLK/00070-SE-01/T-04-p5441-5442',
@@ -278,11 +293,12 @@
 is($match->{matchID}, 'p5441-5442');
 
 # Query with pipe
-$t->get_ok('/?q=baum&pipe=glemm')
+$err = $t->get_ok('/?q=baum&pipe=glemm')
   ->status_is(200)
-  ->text_is('#error','')
   ->content_like(qr/${q}pipes${q}:${q}glemm${q}/)
+  ->tx->res->dom->at('#error')
   ;
+is(defined $err ? $err->text : '', '');
 
 
 done_testing;
