From b2434c1a38343214c0745eda39c8802083c32998 Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Thu, 1 Dec 2016 00:30:45 +0100 Subject: [PATCH] Improved browser form tests. --- test/browser/form_test.rb | 47 +++++++++++++++++++++++++++++-------- test/browser_test_helper.rb | 33 +++++++++++++++++--------- 2 files changed, 59 insertions(+), 21 deletions(-) diff --git a/test/browser/form_test.rb b/test/browser/form_test.rb index 0a761f4b0..5bb89f5d0 100644 --- a/test/browser/form_test.rb +++ b/test/browser/form_test.rb @@ -52,10 +52,14 @@ class FormTest < TestCase browser: agent, css: 'body div.zammad-form-modal button[type="submit"]', ) - exists( + watch_for( browser: agent, css: 'body div.zammad-form-modal .has-error [name="body"]', ) + watch_for_disappear( + browser: agent, + css: 'body div.zammad-form-modal button[type="submit"][disabled]', + ) set( browser: agent, css: 'body div.zammad-form-modal [name="body"]', @@ -70,10 +74,14 @@ class FormTest < TestCase browser: agent, css: 'body div.zammad-form-modal button[type="submit"]', ) - exists( + watch_for( browser: agent, css: 'body div.zammad-form-modal .has-error [name="email"]', ) + watch_for_disappear( + browser: agent, + css: 'body div.zammad-form-modal button[type="submit"][disabled]', + ) set( browser: agent, css: 'body div.zammad-form-modal [name="email"]', @@ -83,10 +91,14 @@ class FormTest < TestCase browser: agent, css: 'body div.zammad-form-modal button[type="submit"]', ) - exists( + watch_for( browser: agent, css: 'body div.zammad-form-modal .has-error [name="email"]', ) + watch_for_disappear( + browser: agent, + css: 'body div.zammad-form-modal button[type="submit"][disabled]', + ) set( browser: agent, css: 'body div.zammad-form-modal [name="email"]', @@ -111,8 +123,7 @@ class FormTest < TestCase browser: customer, url: "#{browser_url}/assets/form/form.html", ) - sleep 4 - match( + watch_for( browser: customer, css: '.js-logDisplay', value: 'Faild to load form config, feature is disabled', @@ -143,7 +154,7 @@ class FormTest < TestCase browser: customer, css: '#feedback-form-modal', ) - exists( + watch_for( browser: customer, css: 'body div.zammad-form-modal', ) @@ -252,10 +263,14 @@ class FormTest < TestCase browser: customer, css: 'body div.zammad-form-modal button[type="submit"]', ) - exists( + watch_for( browser: customer, css: 'body div.zammad-form-modal .has-error [name="name"]', ) + watch_for_disappear( + browser: customer, + css: 'body div.zammad-form-modal button[type="submit"][disabled]', + ) set( browser: customer, css: 'body div.zammad-form-modal [name="name"]', @@ -270,10 +285,14 @@ class FormTest < TestCase browser: customer, css: 'body div.zammad-form-modal button[type="submit"]', ) - exists( + watch_for( browser: customer, css: 'body div.zammad-form-modal .has-error [name="body"]', ) + watch_for_disappear( + browser: customer, + css: 'body div.zammad-form-modal button[type="submit"][disabled]', + ) set( browser: customer, css: 'body div.zammad-form-modal [name="body"]', @@ -288,10 +307,14 @@ class FormTest < TestCase browser: customer, css: 'body div.zammad-form-modal button[type="submit"]', ) - exists( + watch_for( browser: customer, css: 'body div.zammad-form-modal .has-error [name="email"]', ) + watch_for_disappear( + browser: customer, + css: 'body div.zammad-form-modal button[type="submit"][disabled]', + ) set( browser: customer, css: 'body div.zammad-form-modal [name="email"]', @@ -301,10 +324,14 @@ class FormTest < TestCase browser: customer, css: 'body div.zammad-form-modal button[type="submit"]', ) - exists( + watch_for( browser: customer, css: 'body div.zammad-form-modal .has-error [name="email"]', ) + watch_for_disappear( + browser: customer, + css: 'body div.zammad-form-modal button[type="submit"][disabled]', + ) set( browser: customer, css: 'body div.zammad-form-modal [name="email"]', diff --git a/test/browser_test_helper.rb b/test/browser_test_helper.rb index bab23df05..974094733 100644 --- a/test/browser_test_helper.rb +++ b/test/browser_test_helper.rb @@ -1240,18 +1240,26 @@ class TestCase < Test::Unit::TestCase if element #&& element.displayed? begin - # match pn attribute - text = if params[:attribute] - element.attribute(params[:attribute]) - elsif params[:css] =~ /(input|textarea)/i - element.attribute('value') - else - element.text - end - if text =~ /#{params[:value]}/i - assert(true, "'#{params[:value]}' found in '#{text}'") + # watch for selector + if !params[:attribute] && !params[:value] + assert(true, "'#{params[:css]}' found") sleep 0.5 return true + + # match pn attribute + else + text = if params[:attribute] + element.attribute(params[:attribute]) + elsif params[:css] =~ /(input|textarea)/i + element.attribute('value') + else + element.text + end + if text =~ /#{params[:value]}/i + assert(true, "'#{params[:value]}' found in '#{text}'") + sleep 0.5 + return true + end end rescue # try again @@ -1260,7 +1268,10 @@ class TestCase < Test::Unit::TestCase sleep 0.5 } screenshot(browser: instance, comment: 'watch_for_failed') - raise "'#{params[:value]}' found in '#{text}'" + if !params[:attribute] && !params[:value] + raise "'#{params[:css]}' not found" + end + raise "'#{params[:value]}' not found in '#{text}'" end =begin