001 /**
002 * Copyright 2005-2011 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package edu.samplu.travel.krad.test;
017
018 import edu.samplu.common.WebDriverLegacyITBase;
019
020 import org.junit.Assert;
021 import org.junit.Test;
022 import org.openqa.selenium.internal.seleniumemulation.IsVisible;
023
024 /**
025 * tests that regex validation works as expected on input fields where it is configured
026 *
027 * @author Kuali Rice Team (rice.collab@kuali.org)
028 */
029 public class UIFComponentValidationRegexPatternLegacyIT extends WebDriverLegacyITBase {
030
031 @Override
032 public String getTestUrl() {
033 return "/kr-krad/uicomponents?viewId=UifCompView_KNS&methodToCall=start&readOnlyFields=field91";
034 }
035
036 @Test
037 public void testValidCharacterConstraint() throws Exception {
038
039 /*
040 * Timestamp pattern validation message says it allows years from 1900 - 2099
041 * In fact it also allows 2999 as the upper limit. This needs to be sorted out.
042 * Test failing this condition is commented in the below code section for Timestamp Validation. Once resolved can be uncommented
043 *
044 */
045
046 waitAndClickByXpath("//a[contains(text(),'Validation - Regex')]");
047
048 //---------------------------------------------Fixed Point------------------------------//
049
050
051 waitAndTypeByName("field50", "123.123");
052 fireEvent("field50","blur");
053 validateErrorImage(true);
054 clearTextByName("field50");
055
056 waitAndTypeByXpath("//input[@name='field50']", "1234.4");
057 fireEvent("field50","blur");
058 validateErrorImage(true);
059 clearTextByName("field50");
060
061
062 waitAndTypeByXpath("//input[@name='field50']", "1234.434");
063 fireEvent("field50","blur");
064 validateErrorImage(true);
065 clearTextByName("field50");
066
067 waitAndTypeByXpath("//input[@name='field50']", "123.67");
068 fireEvent("field50","blur");
069 validateErrorImage(false);
070 clearTextByName("field50");
071
072 //---------------------------------------------Floating Point------------------------------//
073
074 waitAndTypeByXpath("//input[@name='field51']", "127.");
075 fireEvent("field51","blur");
076 validateErrorImage(true);
077 clearTextByName("field51");
078
079 waitAndTypeByXpath("//input[@name='field51']", "1234()98");
080 fireEvent("field51","blur");
081 validateErrorImage(true);
082 clearTextByName("field51");
083
084 waitAndTypeByXpath("//input[@name='field51']", "-123.67");
085 fireEvent("field51","blur");
086 validateErrorImage(false);
087 clearTextByName("field51");
088
089 //---------------------------------------------Integer Pattern constraint------------------------------//
090
091 waitAndTypeByXpath("//input[@name='field77']", "127.");
092 fireEvent("field77","blur");
093 validateErrorImage(true);
094 clearTextByName("field77");
095
096 waitAndTypeByXpath("//input[@name='field77']", "1234.4123");
097 fireEvent("field77","blur");
098 validateErrorImage(true);
099 clearTextByName("field77");
100
101 waitAndTypeByXpath("//input[@name='field77']", "123E123");
102 fireEvent("field77", "blur");
103 validateErrorImage(true);
104 clearTextByName("field77");
105
106 waitAndTypeByXpath("//input[@name='field77']", "-123");
107 fireEvent("field77", "blur");
108 validateErrorImage(false);
109 clearTextByName("field77");
110
111 //---------------------------------------------Phone Text------------------------------//
112 waitAndTypeByXpath("//input[@name='field52']", "1271231234");
113 fireEvent("field52", "blur");
114 validateErrorImage(true);
115 clearTextByName("field52");
116
117 waitAndTypeByXpath("//input[@name='field52']", "123-123-123");
118 fireEvent("field52", "blur");
119 validateErrorImage(true);
120 clearTextByName("field52");
121
122 waitAndTypeByXpath("//input[@name='field52']", "12-12-123445");
123 fireEvent("field52", "blur");
124 validateErrorImage(true);
125 clearTextByName("field52");
126
127 waitAndTypeByXpath("//input[@name='field52']", "1234-12-1234");
128 fireEvent("field52", "blur");
129 validateErrorImage(true);
130 clearTextByName("field52");
131
132 waitAndTypeByXpath("//input[@name='field52']", "123.123.1234");
133 fireEvent("field52", "blur");
134 validateErrorImage(true);
135 clearTextByName("field52");
136
137 waitAndTypeByXpath("//input[@name='field52']", "123-123-12345");
138 fireEvent("field52", "blur");
139 validateErrorImage(true);
140 clearTextByName("field52");
141
142 waitAndTypeByXpath("//input[@name='field52']", "123-123-1234");
143 fireEvent("field52", "blur");
144 validateErrorImage(false);
145 clearTextByName("field52");
146
147 //---------------------------------------------JavaClass Text------------------------------//
148 waitAndTypeByXpath("//input[@name='field53']", "127");
149 fireEvent("field53", "blur");
150 validateErrorImage(true);
151 clearTextByName("field53");
152
153 waitAndTypeByXpath("//input[@name='field53']", "TestJava!@#Class");
154 fireEvent("field53", "blur");
155 validateErrorImage(true);
156 clearTextByName("field53");
157
158 waitAndTypeByXpath("//input[@name='field53']", "Test JavaClass");
159 fireEvent("field53", "blur");
160 validateErrorImage(true);
161 clearTextByName("field53");
162
163 waitAndTypeByXpath("//input[@name='field53']", "Test JavaClass");
164 fireEvent("field53", "blur");
165 validateErrorImage(true);
166 clearTextByName("field53");
167
168 waitAndTypeByXpath("//input[@name='field53']", "TestJavaClass");
169 fireEvent("field53", "blur");
170 validateErrorImage(false);
171 clearTextByName("field53");
172
173 //---------------------------------------------Email Text------------------------------//
174 waitAndTypeByXpath("//input[@name='field54']", "123@123.123");
175 fireEvent("field54", "blur");
176 validateErrorImage(true);
177 clearTextByName("field54");
178
179 waitAndTypeByXpath("//input[@name='field54']", "email.com@emailServer");
180 fireEvent("field54", "blur");
181 validateErrorImage(true);
182 clearTextByName("field54");
183
184 waitAndTypeByXpath("//input[@name='field54']", "emailemailServer@.com");
185 fireEvent("field54", "blur");
186 validateErrorImage(true);
187 clearTextByName("field54");
188
189 waitAndTypeByXpath("//input[@name='field54']", "email@emailServercom");
190 fireEvent("field54", "blur");
191 validateErrorImage(true);
192 clearTextByName("field54");
193
194 waitAndTypeByXpath("//input[@name='field54']", "email@emailServer.com");
195 fireEvent("field54", "blur");
196 validateErrorImage(false);
197 clearTextByName("field54");
198
199 //---------------------------------------------URL pattern Text------------------------------//
200 waitAndTypeByXpath("//input[@name='field84']", "www.google.com");
201 fireEvent("field84", "blur");
202 validateErrorImage(true);
203 clearTextByName("field84");
204
205 waitAndTypeByXpath("//input[@name='field84']", "https:www.google.com");
206 fireEvent("field84", "blur");
207 validateErrorImage(true);
208 clearTextByName("field84");
209
210 waitAndTypeByXpath("//input[@name='field84']", "ftp://www.google.comsdfa123!#@");
211 fireEvent("field84", "blur");
212 validateErrorImage(true);
213 clearTextByName("field84");
214
215 waitAndTypeByXpath("//input[@name='field84']", "ftp:/www.google.coms");
216 fireEvent("field84", "blur");
217 validateErrorImage(true);
218 clearTextByName("field84");
219
220 waitAndTypeByXpath("//input[@name='field84']", "ftp://www.google.com");
221 fireEvent("field84", "blur");
222 validateErrorImage(false);
223 clearTextByName("field84");
224
225 waitAndTypeByXpath("//input[@name='field84']", "https://www.google.com");
226 fireEvent("field84", "blur");
227 validateErrorImage(false);
228 clearTextByName("field84");
229
230 waitAndTypeByXpath("//input[@name='field84']", "http://www.google.com");
231 fireEvent("field84", "blur");
232 validateErrorImage(false);
233 clearTextByName("field84");
234
235 //---------------------------------------------Date pattern Text------------------------------//
236 //-------------invalid formats
237 waitAndTypeByXpath("//input[@name='field55']", "12/12/2112 12:12:87 am");
238 fireEvent("field55", "blur");
239 validateErrorImage(true);
240 clearTextByName("field55");
241
242 waitAndTypeByXpath("//input[@name='field55']", "12-12-2112 12:12 am");
243 fireEvent("field55", "blur");
244 validateErrorImage(true);
245 clearTextByName("field55");
246
247 waitAndTypeByXpath("//input[@name='field55']", "12-12-2112 12:12");
248 fireEvent("field55", "blur");
249 validateErrorImage(true);
250 clearTextByName("field55");
251
252 waitAndTypeByXpath("//input[@name='field55']", "12/12/2112 12:12");
253 fireEvent("field55", "blur");
254 validateErrorImage(true);
255 clearTextByName("field55");
256
257 waitAndTypeByXpath("//input[@name='field55']", "12-12-2112 12:12:78");
258 fireEvent("field55", "blur");
259 validateErrorImage(true);
260 clearTextByName("field55");
261
262 waitAndTypeByXpath("//input[@name='field55']", "12 Sept");
263 fireEvent("field55", "blur");
264 validateErrorImage(true);
265 clearTextByName("field55");
266
267 waitAndTypeByXpath("//input[@name='field55']", "Sept 12 12:12");
268 fireEvent("field55", "blur");
269 validateErrorImage(true);
270 clearTextByName("field55");
271
272 waitAndTypeByXpath("//input[@name='field55']", "221299 12:12:13");
273 fireEvent("field55", "blur");
274 validateErrorImage(true);
275 clearTextByName("field55");
276
277 waitAndTypeByXpath("//input[@name='field55']", "111222 12:12");
278 fireEvent("field55", "blur");
279 validateErrorImage(true);
280 clearTextByName("field55");
281
282 waitAndTypeByXpath("//input[@name='field55']", "9/9/2012 12:12 am");
283 fireEvent("field55", "blur");
284 validateErrorImage(true);
285 clearTextByName("field55");
286
287 //-------------valid formats
288 waitAndTypeByXpath("//input[@name='field55']", "09/09/2012 12:12 pm");
289 fireEvent("field55", "blur");
290 validateErrorImage(false);
291 clearTextByName("field55");
292
293 waitAndTypeByXpath("//input[@name='field55']", "090923");
294 fireEvent("field55", "blur");
295 validateErrorImage(false);
296 clearTextByName("field55");
297
298 waitAndTypeByXpath("//input[@name='field55']", "Sept 12");
299 fireEvent("field55", "blur");
300 validateErrorImage(false);
301 clearTextByName("field55");
302
303 waitAndTypeByXpath("//input[@name='field55']", "2034");
304 fireEvent("field55", "blur");
305 validateErrorImage(false);
306 clearTextByName("field55");
307
308 waitAndTypeByXpath("//input[@name='field55']", "12/12/2012 23:12:59");
309 fireEvent("field55", "blur");
310 validateErrorImage(false);
311 clearTextByName("field55");
312
313 waitAndTypeByXpath("//input[@name='field55']", "12-12-12 23:12:59");
314 fireEvent("field55", "blur");
315 validateErrorImage(false);
316 clearTextByName("field55");
317
318 waitAndTypeByXpath("//input[@name='field55']", "121212 23:12:32");
319 fireEvent("field55", "blur");
320 validateErrorImage(false);
321 clearTextByName("field55");
322
323 waitAndTypeByXpath("//input[@name='field55']", "Sept 12 23:45:50");
324 fireEvent("field55", "blur");
325 validateErrorImage(false);
326 clearTextByName("field55");
327
328 waitAndTypeByXpath("//input[@name='field55']", "2011 12:23:32");
329 fireEvent("field55", "blur");
330 validateErrorImage(false);
331 clearTextByName("field55");
332
333 //---------------------------------------------BasicDate pattern Text------------------------------//
334 waitAndTypeByXpath("//input[@name='field75']", "12122012");
335 fireEvent("field75", "blur");
336 validateErrorImage(true);
337 clearTextByName("field75");
338
339 waitAndTypeByXpath("//input[@name='field75']", "13-12-34");
340 fireEvent("field75", "blur");
341 validateErrorImage(true);
342 clearTextByName("field75");
343
344 waitAndTypeByXpath("//input[@name='field75']", "12:12:2034");
345 fireEvent("field75", "blur");
346 validateErrorImage(true);
347 clearTextByName("field75");
348
349 waitAndTypeByXpath("//input[@name='field75']", "12-12-2034");
350 fireEvent("field75", "blur");
351 validateErrorImage(false);
352 clearTextByName("field75");
353
354 //---------------------------------------------Time12H Pattern Text------------------------------//
355 waitAndTypeByXpath("//input[@name='field82']", "13:00:12");
356 fireEvent("field82", "blur");
357 validateErrorImage(true);
358 clearTextByName("field82");
359
360 waitAndTypeByXpath("//input[@name='field82']", "09:00:");
361 fireEvent("field82", "blur");
362 validateErrorImage(true);
363 clearTextByName("field82");
364
365 waitAndTypeByXpath("//input[@name='field82']", "3-00:12");
366 fireEvent("field82", "blur");
367 validateErrorImage(true);
368 clearTextByName("field82");
369
370 waitAndTypeByXpath("//input[@name='field82']", "3:00:34");
371 fireEvent("field82", "blur");
372 validateErrorImage(false);
373 clearTextByName("field82");
374
375 waitAndTypeByXpath("//input[@name='field82']", "3:00");
376 fireEvent("field82", "blur");
377 validateErrorImage(false);
378 clearTextByName("field82");
379
380 //---------------------------------------------Time24H Pattern Text------------------------------//
381 waitAndTypeByXpath("//input[@name='field83']", "24:00:12");
382 fireEvent("field83", "blur");
383 validateErrorImage(true);
384 clearTextByName("field83");
385
386 waitAndTypeByXpath("//input[@name='field83']", "14:00:");
387 fireEvent("field83", "blur");
388 validateErrorImage(true);
389 clearTextByName("field83");
390
391 waitAndTypeByXpath("//input[@name='field83']", "13:00:76");
392 fireEvent("field83", "blur");
393 validateErrorImage(true);
394 clearTextByName("field83");
395
396 waitAndTypeByXpath("//input[@name='field83']", "13:00:23");
397 fireEvent("field83", "blur");
398 validateErrorImage(false);
399 clearTextByName("field83");
400
401 waitAndTypeByXpath("//input[@name='field83']", "23:00:12");
402 fireEvent("field83", "blur");
403 validateErrorImage(false);
404 clearTextByName("field83");
405
406 //---------------------------------------------Timestamp pattern Text------------------------------//
407 waitAndTypeByXpath("//input[@name='field56']", "1000-12-12 12:12:12.103");
408 fireEvent("field56", "blur");
409 validateErrorImage(true);
410 clearTextByName("field56");
411
412 waitAndTypeByXpath("//input[@name='field56']", "2000/12/12 12-12-12.87");
413 fireEvent("field56", "blur");
414 validateErrorImage(true);
415 clearTextByName("field56");
416
417 waitAndTypeByXpath("//input[@name='field56']", "2000/12/12 12-12-12.87");
418 fireEvent("field56", "blur");
419 validateErrorImage(true);
420 clearTextByName("field56");
421
422 waitAndTypeByXpath("//input[@name='field56']", "2011-08-12 12:12:12");
423 fireEvent("field56", "blur");
424 validateErrorImage(true);
425 clearTextByName("field56");
426
427 //--------this should not be allowed
428 /*
429 clearTimeStampText();
430 waitAndType("//input[@name='field56']", "2999-12-12 12:12:12.103");
431 focus("//input[@name='field57']");
432 Thread.sleep(100);
433 assertTrue(isTextPresent("Must be a date/time in the format of yyyy-mm-dd hh:mm:ss.ms, between the years of 1900 and 2099, inclusive. \"ms\" represents milliseconds, and must be included."));
434
435 */
436 waitAndTypeByXpath("//input[@name='field56']", "2099-12-12 12:12:12.103");
437 fireEvent("field56", "blur");
438 validateErrorImage(false);
439 clearTextByName("field56");
440
441 //---------------------------------------------Year Pattern Text------------------------------//
442 waitAndTypeByXpath("//input[@name='field57']", "1599");
443 fireEvent("field57", "blur");
444 validateErrorImage(true);
445 clearTextByName("field57");
446
447 waitAndTypeByXpath("//input[@name='field57']", "2200");
448 fireEvent("field57", "blur");
449 validateErrorImage(true);
450 clearTextByName("field57");
451
452 waitAndTypeByXpath("//input[@name='field57']", "20000");
453 fireEvent("field57", "blur");
454 validateErrorImage(true);
455 clearTextByName("field57");
456
457 waitAndTypeByXpath("//input[@name='field57']", "-202");
458 fireEvent("field57", "blur");
459 validateErrorImage(true);
460 clearTextByName("field57");
461
462 waitAndTypeByXpath("//input[@name='field57']", "2000");
463 fireEvent("field57", "blur");
464 validateErrorImage(false);
465 clearTextByName("field57");
466
467 //---------------------------------------------Month Pattern Text------------------------------//
468 waitAndTypeByXpath("//input[@name='field58']", "0");
469 fireEvent("field58", "blur");
470 validateErrorImage(true);
471 clearTextByName("field58");
472
473 waitAndTypeByXpath("//input[@name='field58']", "-12");
474 fireEvent("field58", "blur");
475 validateErrorImage(true);
476 clearTextByName("field58");
477
478 waitAndTypeByXpath("//input[@name='field58']", "100");
479 fireEvent("field58", "blur");
480 validateErrorImage(true);
481 clearTextByName("field58");
482
483 waitAndTypeByXpath("//input[@name='field58']", "12");
484 fireEvent("field58", "blur");
485 validateErrorImage(false);
486 clearTextByName("field58");
487
488 //---------------------------------------------ZipCode Pattern Text------------------------------//
489
490 waitAndTypeByXpath("//input[@name='field61']", "123");
491 fireEvent("field61", "blur");
492 validateErrorImage(true);
493 clearTextByName("field61");
494
495 waitAndTypeByXpath("//input[@name='field61']", "2341 12");
496 fireEvent("field61", "blur");
497 validateErrorImage(true);
498 clearTextByName("field61");
499
500 waitAndTypeByXpath("//input[@name='field61']", "0-1231");
501 fireEvent("field61", "blur");
502 validateErrorImage(true);
503 clearTextByName("field61");
504
505 waitAndTypeByXpath("//input[@name='field61']", "12345");
506 fireEvent("field61", "blur");
507 validateErrorImage(false);
508 clearTextByName("field61");
509
510 //---------------------------------------------Alpha Numeric w/o options Text------------------------------//
511 waitAndTypeByXpath("//input[@name='field62']", "123 23 @#");
512 fireEvent("field62", "blur");
513 validateErrorImage(true);
514 clearTextByName("field62");
515
516 waitAndTypeByXpath("//input[@name='field62']", "-asd123");
517 fireEvent("field62", "blur");
518 validateErrorImage(true);
519 clearTextByName("field62");
520
521 waitAndTypeByXpath("//input[@name='field62']", "asd/123");
522 fireEvent("field62", "blur");
523 validateErrorImage(true);
524 clearTextByName("field62");
525
526 waitAndTypeByXpath("//input[@name='field62']", "asd123");
527 fireEvent("field62", "blur");
528 validateErrorImage(false);
529 clearTextByName("field62");
530
531 //---------------------------------------------Alpha Numeric with options Text------------------------------//
532 waitAndTypeByXpath("//input[@name='field63']", "123^we");
533 fireEvent("field63", "blur");
534 validateErrorImage(true);
535 clearTextByName("field63");
536
537 waitAndTypeByXpath("//input[@name='field63']", "-123_asd");
538 fireEvent("field63", "blur");
539 validateErrorImage(true);
540 clearTextByName("field63");
541
542 waitAndTypeByXpath("//input[@name='field63']", "123 23 @#");
543 fireEvent("field63", "blur");
544 clearTextByName("field63");
545
546 waitAndTypeByXpath("//input[@name='field63']", "as_de 456/123");
547 fireEvent("field63", "blur");
548 validateErrorImage(false);
549 clearTextByName("field63");
550
551 //---------------------------------------------Alpha with Whitespace and commas Text------------------------------//
552 waitAndTypeByXpath("//input[@name='field64']", "123^we");
553 fireEvent("field64", "blur");
554 validateErrorImage(true);
555 clearTextByName("field64");
556
557 waitAndTypeByXpath("//input[@name='field64']", "asd_pqr");
558 fireEvent("field64", "blur");
559 validateErrorImage(true);
560 clearTextByName("field64");
561
562 waitAndTypeByXpath("//input[@name='field64']", "asd/def");
563 fireEvent("field64", "blur");
564 validateErrorImage(true);
565 clearTextByName("field64");
566
567 waitAndTypeByXpath("//input[@name='field64']", "asd ,pqr");
568 fireEvent("field64", "blur");
569 validateErrorImage(false);
570 clearTextByName("field64");
571
572 //---------------------------------------------AlphaPatterrn with disallowed charset Text------------------------------//
573 waitAndTypeByXpath("//input[@name='field76']", "123");
574 fireEvent("field76", "blur");
575 validateErrorImage(true);
576 clearTextByName("field76");
577
578 waitAndTypeByXpath("//input[@name='field76']", "`abcd`");
579 fireEvent("field76", "blur");
580 validateErrorImage(true);
581 clearTextByName("field76");
582
583 waitAndTypeByXpath("//input[@name='field76']", "|abcd|");
584 fireEvent("field76", "blur");
585 validateErrorImage(true);
586 clearTextByName("field76");
587
588 waitAndTypeByXpath("//input[@name='field76']", "~abcd~");
589 fireEvent("field76", "blur");
590 validateErrorImage(true);
591 clearTextByName("field76");
592
593 waitAndTypeByXpath("//input[@name='field76']", " ab_c d_ef ");
594 fireEvent("field76", "blur");
595 validateErrorImage(false);
596 clearTextByName("field76");
597
598 //---------------------------------------------Anything with No Whitespace Text------------------------------//
599 waitAndTypeByXpath("//input[@name='field65']", "123 ^we");
600 fireEvent("field65", "blur");
601 validateErrorImage(true);
602 clearTextByName("field65");
603
604 waitAndTypeByXpath("//input[@name='field65']", "123^we!@#^&*~:");
605 fireEvent("field65", "blur");
606 validateErrorImage(false);
607 clearTextByName("field65");
608
609 //---------------------------------------------CharacterSet Text------------------------------//
610 waitAndTypeByXpath("//input[@name='field66']", "123 ^we");
611 fireEvent("field66", "blur");
612 validateErrorImage(true);
613 clearTextByName("field66");
614
615 waitAndTypeByXpath("//input[@name='field66']", "123_^we");
616 fireEvent("field66", "blur");
617 validateErrorImage(true);
618 clearTextByName("field66");
619
620 waitAndTypeByXpath("//input[@name='field66']", "abc ABC");
621 fireEvent("field66", "blur");
622 validateErrorImage(true);
623 clearTextByName("field66");
624
625 waitAndTypeByXpath("//input[@name='field66']", "aAbBcC");
626 fireEvent("field66", "blur");
627 validateErrorImage(false);
628 clearTextByName("field66");
629
630 //---------------------------------------------Numeric Character Text------------------------------//
631 waitAndTypeByXpath("//input[@name='field67']", "123 ^we");
632 fireEvent("field67", "blur");
633 validateErrorImage(true);
634 clearTextByName("field67");
635
636 waitAndTypeByXpath("//input[@name='field67']", "123/10");
637 fireEvent("field67", "blur");
638 validateErrorImage(true);
639 clearTextByName("field67");
640
641 waitAndTypeByXpath("//input[@name='field67']", "(123.00)");
642 fireEvent("field67", "blur");
643 validateErrorImage(true);
644 clearTextByName("field67");
645
646 waitAndTypeByXpath("//input[@name='field67']", "(12-3)");
647 fireEvent("field67", "blur");
648 validateErrorImage(false);
649 clearTextByName("field67");
650
651 //---------------------------------------------Valid Chars Custom Text------------------------------//
652 waitAndTypeByXpath("//input[@name='field68']", "123.123");
653 fireEvent("field68", "blur");
654 validateErrorImage(true);
655 clearTextByName("field68");
656
657 waitAndTypeByXpath("//input[@name='field68']", "a.b");
658 fireEvent("field68", "blur");
659 validateErrorImage(true);
660 clearTextByName("field68");
661
662 waitAndTypeByXpath("//input[@name='field68']", "123 qwe");
663 fireEvent("field68", "blur");
664 validateErrorImage(true);
665 clearTextByName("field68");
666
667 waitAndTypeByXpath("//input[@name='field68']", "5.a");
668 fireEvent("field68", "blur");
669 validateErrorImage(true);
670 clearTextByName("field68");
671
672 waitAndTypeByXpath("//input[@name='field68']", "a.0,b.4");
673 fireEvent("field68", "blur");
674 validateErrorImage(true);
675 clearTextByName("field68");
676
677 waitAndTypeByXpath("//input[@name='field68']", "a.0");
678 fireEvent("field68", "blur");
679 validateErrorImage(false);
680 clearTextByName("field68");
681 }
682
683 public void validateErrorImage(boolean validateVisible) throws Exception {
684 Thread.sleep(500);
685 for (int second = 0;; second++) {
686 if (second >= 5)
687 Assert.fail("timeout");
688 try {
689 if (validateVisible) {
690
691 if (isVisible("img.uif-validationImage"));
692 break;
693 } else {
694
695 if (! isVisible("img.uif-validationImage"))
696 break;
697 }
698
699 } catch (Exception e) {}
700 Thread.sleep(1000);
701 }
702 if (validateVisible) {
703 Assert.assertTrue(isVisible("img.uif-validationImage"));
704 } else {
705 Assert.assertTrue(! isVisible("img.uif-validationImage"));
706 }
707 }
708 }