001    /**
002     * Copyright 2005-2013 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.Failable;
019    import edu.samplu.common.ITUtil;
020    import edu.samplu.common.WebDriverLegacyITBase;
021    
022    /**
023     * Tests the Component section in Rice.
024     *
025     * @author Kuali Rice Team (rice.collab@kuali.org)
026     */
027    public abstract class UIFComponentValidationRegexPatternAbstractSmokeTestBase extends WebDriverLegacyITBase  {
028    
029        /**
030         * "/kr-krad/uicomponents?viewId=UifCompView_KNS&methodToCall=start&readOnlyFields=field91"
031         */
032        public static final String BOOKMARK_URL = "/kr-krad/uicomponents?viewId=UifCompView_KNS&methodToCall=start&readOnlyFields=field91";
033    
034    
035        protected void bookmark() {
036            open(ITUtil.getBaseUrlString() + BOOKMARK_URL);
037        }
038    
039        /**
040         * Nav tests start at {@link edu.samplu.common.ITUtil#PORTAL}.  Bookmark Tests should override and return BOOKMARK_URL
041         * {@inheritDoc}
042         * @return
043         */
044        @Override
045        public String getTestUrl() {
046            return ITUtil.PORTAL;
047        }
048    
049    
050        protected void navigation() throws InterruptedException {
051            waitAndClickKRAD();
052            waitAndClickByXpath(KITCHEN_SINK_XPATH);
053            switchToWindow(KUALI_UIF_COMPONENTS_WINDOW_XPATH);
054        }
055    
056        protected void testValidCharacterConstraintNav(Failable failable) throws Exception {
057            navigation();
058            testValidCharacterConstraint();
059            passed();
060        }
061    
062        protected void testValidCharacterConstraintBookmark(Failable failable) throws Exception {
063            testValidCharacterConstraint();
064            passed();
065        }
066    
067        protected void testValidCharacterConstraint() throws Exception {
068            waitAndClickByXpath("//a[contains(text(),'Validation - Regex')]");
069    
070            //---------------------------------------------Fixed Point------------------------------//
071            waitAndTypeByName("field50", "123.12");
072            fireEvent("field50", "blur");
073            try {
074                validateErrorImage(true);
075                fail("Framework error validateErrorImage(true) should have thrown an AssertionExcpetion");
076            } catch (AssertionError ae) {
077                jGrowl("validateErrorImage(true) when not expected okay.");
078                // expected
079            }
080            validateErrorImage(false);
081    
082            clearTextByName("field50");
083            waitAndTypeByName("field50", "123.123");
084            fireEvent("field50", "blur");
085            try {
086                validateErrorImage(false);
087                fail("Framework error validateErrorImage(false) should have thrown an AssertionExcpetion");
088            } catch (AssertionError ae) {
089                jGrowl("validateErrorImage(false) when expected okay.");
090            }
091            validateErrorImage(true);
092    
093            clearTextByName("field50");
094            waitAndTypeByXpath("//input[@name='field50']", "1234.4");
095            fireEvent("field50", "blur");
096            validateErrorImage(true);
097            clearTextByName("field50");
098            waitAndTypeByXpath("//input[@name='field50']", "1234.434");
099            fireEvent("field50", "blur");
100            validateErrorImage(true);
101            clearTextByName("field50");
102            waitAndTypeByXpath("//input[@name='field50']", "123.67");
103            fireEvent("field50", "blur");
104            validateErrorImage(false);
105            clearTextByName("field50");
106    
107            //---------------------------------------------Floating Point------------------------------//
108            waitAndTypeByXpath("//input[@name='field51']", "127.");
109            fireEvent("field51", "blur");
110            validateErrorImage(true);
111            clearTextByName("field51");
112            waitAndTypeByXpath("//input[@name='field51']", "1234()98");
113            fireEvent("field51", "blur");
114            validateErrorImage(true);
115            clearTextByName("field51");
116            waitAndTypeByXpath("//input[@name='field51']", "-123.67");
117            fireEvent("field51", "blur");
118            validateErrorImage(false);
119            clearTextByName("field51");
120    
121            //---------------------------------------------Integer Pattern constraint------------------------------//
122            waitAndTypeByXpath("//input[@name='field77']", "127.");
123            fireEvent("field77", "blur");
124            validateErrorImage(true);
125            clearTextByName("field77");
126            waitAndTypeByXpath("//input[@name='field77']", "1234.4123");
127            fireEvent("field77", "blur");
128            validateErrorImage(true);
129            clearTextByName("field77");
130            waitAndTypeByXpath("//input[@name='field77']", "123E123");
131            fireEvent("field77", "blur");
132            validateErrorImage(true);
133            clearTextByName("field77");
134            waitAndTypeByXpath("//input[@name='field77']", "-123");
135            fireEvent("field77", "blur");
136            validateErrorImage(false);
137            clearTextByName("field77");
138    
139            //---------------------------------------------Phone Text------------------------------//
140            waitAndTypeByXpath("//input[@name='field52']", "1271231234");
141            fireEvent("field52", "blur");
142            validateErrorImage(true);
143            clearTextByName("field52");
144            waitAndTypeByXpath("//input[@name='field52']", "123-123-123");
145            fireEvent("field52", "blur");
146            validateErrorImage(true);
147            clearTextByName("field52");
148            waitAndTypeByXpath("//input[@name='field52']", "12-12-123445");
149            fireEvent("field52", "blur");
150            validateErrorImage(true);
151            clearTextByName("field52");
152            waitAndTypeByXpath("//input[@name='field52']", "1234-12-1234");
153            fireEvent("field52", "blur");
154            validateErrorImage(true);
155            clearTextByName("field52");
156            waitAndTypeByXpath("//input[@name='field52']", "123.123.1234");
157            fireEvent("field52", "blur");
158            validateErrorImage(true);
159            clearTextByName("field52");
160            waitAndTypeByXpath("//input[@name='field52']", "123-123-12345");
161            fireEvent("field52", "blur");
162            validateErrorImage(true);
163            clearTextByName("field52");
164            waitAndTypeByXpath("//input[@name='field52']", "123-123-1234");
165            fireEvent("field52", "blur");
166            validateErrorImage(false);
167            clearTextByName("field52");
168    
169            //---------------------------------------------JavaClass Text------------------------------//
170            waitAndTypeByXpath("//input[@name='field53']", "127");
171            fireEvent("field53", "blur");
172            validateErrorImage(true);
173            clearTextByName("field53");
174            waitAndTypeByXpath("//input[@name='field53']", "TestJava!@#Class");
175            fireEvent("field53", "blur");
176            validateErrorImage(true);
177            clearTextByName("field53");
178            waitAndTypeByXpath("//input[@name='field53']", "Test JavaClass");
179            fireEvent("field53", "blur");
180            validateErrorImage(true);
181            clearTextByName("field53");
182            waitAndTypeByXpath("//input[@name='field53']", "Test JavaClass");
183            fireEvent("field53", "blur");
184            validateErrorImage(true);
185            clearTextByName("field53");
186            waitAndTypeByXpath("//input[@name='field53']", "TestJavaClass");
187            fireEvent("field53", "blur");
188            validateErrorImage(false);
189            clearTextByName("field53");
190    
191            //---------------------------------------------Email Text------------------------------//
192            waitAndTypeByXpath("//input[@name='field54']", "123@123.123");
193            fireEvent("field54", "blur");
194            validateErrorImage(true);
195            clearTextByName("field54");
196            waitAndTypeByXpath("//input[@name='field54']", "email.com@emailServer");
197            fireEvent("field54", "blur");
198            validateErrorImage(true);
199            clearTextByName("field54");
200            waitAndTypeByXpath("//input[@name='field54']", "emailemailServer@.com");
201            fireEvent("field54", "blur");
202            validateErrorImage(true);
203            clearTextByName("field54");
204            waitAndTypeByXpath("//input[@name='field54']", "email@emailServercom");
205            fireEvent("field54", "blur");
206            validateErrorImage(true);
207            clearTextByName("field54");
208            waitAndTypeByXpath("//input[@name='field54']", "email@emailServer.com");
209            fireEvent("field54", "blur");
210            validateErrorImage(false);
211            clearTextByName("field54");
212    
213            //---------------------------------------------URL pattern Text------------------------------//
214            waitAndTypeByXpath("//input[@name='field84']", "www.google.com");
215            fireEvent("field84", "blur");
216            validateErrorImage(true);
217            clearTextByName("field84");
218            waitAndTypeByXpath("//input[@name='field84']", "https:www.google.com");
219            fireEvent("field84", "blur");
220            validateErrorImage(true);
221            clearTextByName("field84");
222            waitAndTypeByXpath("//input[@name='field84']", "ftp://www.google.comsdfa123!#@");
223            fireEvent("field84", "blur");
224            validateErrorImage(true);
225            clearTextByName("field84");
226            waitAndTypeByXpath("//input[@name='field84']", "ftp:/www.google.coms");
227            fireEvent("field84", "blur");
228            validateErrorImage(true);
229            clearTextByName("field84");
230            waitAndTypeByXpath("//input[@name='field84']", "ftp://www.google.com");
231            fireEvent("field84", "blur");
232            validateErrorImage(false);
233            clearTextByName("field84");
234            waitAndTypeByXpath("//input[@name='field84']", "https://www.google.com");
235            fireEvent("field84", "blur");
236            validateErrorImage(false);
237            clearTextByName("field84");
238            waitAndTypeByXpath("//input[@name='field84']", "http://www.google.com");
239            fireEvent("field84", "blur");
240            validateErrorImage(false);
241            clearTextByName("field84");
242    
243            //---------------------------------------------Date pattern Text------------------------------//
244            //-------------invalid formats
245            waitAndTypeByXpath("//input[@name='field55']", "12/12/2112 12:12:87 am");
246            fireEvent("field55", "blur");
247            validateErrorImage(true);
248            clearTextByName("field55");
249            waitAndTypeByXpath("//input[@name='field55']", "12-12-2112 12:12 am");
250            fireEvent("field55", "blur");
251            validateErrorImage(true);
252            clearTextByName("field55");
253            waitAndTypeByXpath("//input[@name='field55']", "12-12-2112 12:12");
254            fireEvent("field55", "blur");
255            validateErrorImage(true);
256            clearTextByName("field55");
257            waitAndTypeByXpath("//input[@name='field55']", "12/12/2112 12:12");
258            fireEvent("field55", "blur");
259            validateErrorImage(true);
260            clearTextByName("field55");
261            waitAndTypeByXpath("//input[@name='field55']", "12-12-2112 12:12:78");
262            fireEvent("field55", "blur");
263            validateErrorImage(true);
264            clearTextByName("field55");
265            waitAndTypeByXpath("//input[@name='field55']", "12 Sept");
266            fireEvent("field55", "blur");
267            validateErrorImage(true);
268            clearTextByName("field55");
269            waitAndTypeByXpath("//input[@name='field55']", "Sept 12 12:12");
270            fireEvent("field55", "blur");
271            validateErrorImage(true);
272            clearTextByName("field55");
273            waitAndTypeByXpath("//input[@name='field55']", "221299 12:12:13");
274            fireEvent("field55", "blur");
275            validateErrorImage(true);
276            clearTextByName("field55");
277            waitAndTypeByXpath("//input[@name='field55']", "111222 12:12");
278            fireEvent("field55", "blur");
279            validateErrorImage(true);
280            clearTextByName("field55");
281            waitAndTypeByXpath("//input[@name='field55']", "9/9/2012 12:12 am");
282            fireEvent("field55", "blur");
283            validateErrorImage(true);
284            clearTextByName("field55");
285    
286            //-------------valid formats
287            waitAndTypeByXpath("//input[@name='field55']", "09/09/2012 12:12 pm");
288            fireEvent("field55", "blur");
289            validateErrorImage(false);
290            clearTextByName("field55");
291            waitAndTypeByXpath("//input[@name='field55']", "090923");
292            fireEvent("field55", "blur");
293            validateErrorImage(false);
294            clearTextByName("field55");
295            waitAndTypeByXpath("//input[@name='field55']", "Sept 12");
296            fireEvent("field55", "blur");
297            validateErrorImage(false);
298            clearTextByName("field55");
299            waitAndTypeByXpath("//input[@name='field55']", "2034");
300            fireEvent("field55", "blur");
301            validateErrorImage(false);
302            clearTextByName("field55");
303            waitAndTypeByXpath("//input[@name='field55']", "12/12/2012 23:12:59");
304            fireEvent("field55", "blur");
305            validateErrorImage(false);
306            clearTextByName("field55");
307            waitAndTypeByXpath("//input[@name='field55']", "12-12-12 23:12:59");
308            fireEvent("field55", "blur");
309            validateErrorImage(false);
310            clearTextByName("field55");
311            waitAndTypeByXpath("//input[@name='field55']", "121212 23:12:32");
312            fireEvent("field55", "blur");
313            validateErrorImage(false);
314            clearTextByName("field55");
315            waitAndTypeByXpath("//input[@name='field55']", "Sept 12 23:45:50");
316            fireEvent("field55", "blur");
317            validateErrorImage(false);
318            clearTextByName("field55");
319            waitAndTypeByXpath("//input[@name='field55']", "2011 12:23:32");
320            fireEvent("field55", "blur");
321            validateErrorImage(false);
322            clearTextByName("field55");
323    
324            //---------------------------------------------BasicDate pattern Text------------------------------//
325            waitAndTypeByXpath("//input[@name='field75']", "12122012");
326            fireEvent("field75", "blur");
327            validateErrorImage(true);
328            clearTextByName("field75");
329            waitAndTypeByXpath("//input[@name='field75']", "13-12-34");
330            fireEvent("field75", "blur");
331            validateErrorImage(true);
332            clearTextByName("field75");
333            waitAndTypeByXpath("//input[@name='field75']", "12:12:2034");
334            fireEvent("field75", "blur");
335            validateErrorImage(true);
336            clearTextByName("field75");
337            waitAndTypeByXpath("//input[@name='field75']", "12-12-2034");
338            fireEvent("field75", "blur");
339            validateErrorImage(false);
340            clearTextByName("field75");
341    
342            //---------------------------------------------Time12H Pattern Text------------------------------//
343            waitAndTypeByXpath("//input[@name='field82']", "13:00:12");
344            fireEvent("field82", "blur");
345            validateErrorImage(true);
346            clearTextByName("field82");
347            waitAndTypeByXpath("//input[@name='field82']", "09:00:");
348            fireEvent("field82", "blur");
349            validateErrorImage(true);
350            clearTextByName("field82");
351            waitAndTypeByXpath("//input[@name='field82']", "3-00:12");
352            fireEvent("field82", "blur");
353            validateErrorImage(true);
354            clearTextByName("field82");
355            waitAndTypeByXpath("//input[@name='field82']", "3:00:34");
356            fireEvent("field82", "blur");
357            validateErrorImage(false);
358            clearTextByName("field82");
359            waitAndTypeByXpath("//input[@name='field82']", "3:00");
360            fireEvent("field82", "blur");
361            validateErrorImage(false);
362            clearTextByName("field82");
363    
364            //---------------------------------------------Time24H Pattern Text------------------------------//
365            waitAndTypeByXpath("//input[@name='field83']", "24:00:12");
366            fireEvent("field83", "blur");
367            validateErrorImage(true);
368            clearTextByName("field83");
369            waitAndTypeByXpath("//input[@name='field83']", "14:00:");
370            fireEvent("field83", "blur");
371            validateErrorImage(true);
372            clearTextByName("field83");
373            waitAndTypeByXpath("//input[@name='field83']", "13:00:76");
374            fireEvent("field83", "blur");
375            validateErrorImage(true);
376            clearTextByName("field83");
377            waitAndTypeByXpath("//input[@name='field83']", "13:00:23");
378            fireEvent("field83", "blur");
379            validateErrorImage(false);
380            clearTextByName("field83");
381            waitAndTypeByXpath("//input[@name='field83']", "23:00:12");
382            fireEvent("field83", "blur");
383            validateErrorImage(false);
384            clearTextByName("field83");
385    
386            //---------------------------------------------Timestamp pattern Text------------------------------//
387            waitAndTypeByXpath("//input[@name='field56']", "1000-12-12 12:12:12.103");
388            fireEvent("field56", "blur");
389            validateErrorImage(true);
390            clearTextByName("field56");
391            waitAndTypeByXpath("//input[@name='field56']", "2000/12/12 12-12-12.87");
392            fireEvent("field56", "blur");
393            validateErrorImage(true);
394            clearTextByName("field56");
395            waitAndTypeByXpath("//input[@name='field56']", "2000/12/12 12-12-12.87");
396            fireEvent("field56", "blur");
397            validateErrorImage(true);
398            clearTextByName("field56");
399            waitAndTypeByXpath("//input[@name='field56']", "2011-08-12 12:12:12");
400            fireEvent("field56", "blur");
401            validateErrorImage(true);
402            clearTextByName("field56");
403    
404            //--------this should not be allowed
405            /*
406            clearTimeStampText();
407            waitAndType("//input[@name='field56']", "2999-12-12 12:12:12.103");
408            focus("//input[@name='field57']");
409            Thread.sleep(100);
410            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."));
411            */
412            waitAndTypeByXpath("//input[@name='field56']", "2099-12-12 12:12:12.103");
413            fireEvent("field56", "blur");
414            validateErrorImage(false);
415            clearTextByName("field56");
416    
417            //---------------------------------------------Year Pattern Text------------------------------//
418            waitAndTypeByXpath("//input[@name='field57']", "1599");
419            fireEvent("field57", "blur");
420            validateErrorImage(true);
421            clearTextByName("field57");
422            waitAndTypeByXpath("//input[@name='field57']", "2200");
423            fireEvent("field57", "blur");
424            validateErrorImage(true);
425            clearTextByName("field57");
426            waitAndTypeByXpath("//input[@name='field57']", "20000");
427            fireEvent("field57", "blur");
428            validateErrorImage(true);
429            clearTextByName("field57");
430            waitAndTypeByXpath("//input[@name='field57']", "-202");
431            fireEvent("field57", "blur");
432            validateErrorImage(true);
433            clearTextByName("field57");
434            waitAndTypeByXpath("//input[@name='field57']", "2000");
435            fireEvent("field57", "blur");
436            validateErrorImage(false);
437            clearTextByName("field57");
438    
439            //---------------------------------------------Month Pattern Text------------------------------//
440            waitAndTypeByXpath("//input[@name='field58']", "0");
441            fireEvent("field58", "blur");
442            validateErrorImage(true);
443            clearTextByName("field58");
444            waitAndTypeByXpath("//input[@name='field58']", "-12");
445            fireEvent("field58", "blur");
446            validateErrorImage(true);
447            clearTextByName("field58");
448            waitAndTypeByXpath("//input[@name='field58']", "100");
449            fireEvent("field58", "blur");
450            validateErrorImage(true);
451            clearTextByName("field58");
452            waitAndTypeByXpath("//input[@name='field58']", "12");
453            fireEvent("field58", "blur");
454            validateErrorImage(false);
455            clearTextByName("field58");
456    
457            //---------------------------------------------ZipCode Pattern Text------------------------------//
458            waitAndTypeByXpath("//input[@name='field61']", "123");
459            fireEvent("field61", "blur");
460            validateErrorImage(true);
461            clearTextByName("field61");
462            waitAndTypeByXpath("//input[@name='field61']", "2341 12");
463            fireEvent("field61", "blur");
464            validateErrorImage(true);
465            clearTextByName("field61");
466            waitAndTypeByXpath("//input[@name='field61']", "0-1231");
467            fireEvent("field61", "blur");
468            validateErrorImage(true);
469            clearTextByName("field61");
470            waitAndTypeByXpath("//input[@name='field61']", "12345");
471            fireEvent("field61", "blur");
472            validateErrorImage(false);
473            clearTextByName("field61");
474    
475            //---------------------------------------------Alpha Numeric w/o options Text------------------------------//
476            waitAndTypeByXpath("//input[@name='field62']", "123 23 @#");
477            fireEvent("field62", "blur");
478            validateErrorImage(true);
479            clearTextByName("field62");
480            waitAndTypeByXpath("//input[@name='field62']", "-asd123");
481            fireEvent("field62", "blur");
482            validateErrorImage(true);
483            clearTextByName("field62");
484            waitAndTypeByXpath("//input[@name='field62']", "asd/123");
485            fireEvent("field62", "blur");
486            validateErrorImage(true);
487            clearTextByName("field62");
488            waitAndTypeByXpath("//input[@name='field62']", "asd123");
489            fireEvent("field62", "blur");
490            validateErrorImage(false);
491            clearTextByName("field62");
492    
493            //---------------------------------------------Alpha Numeric with options Text------------------------------//
494            waitAndTypeByXpath("//input[@name='field63']", "123^we");
495            fireEvent("field63", "blur");
496            validateErrorImage(true);
497            clearTextByName("field63");
498            waitAndTypeByXpath("//input[@name='field63']", "-123_asd");
499            fireEvent("field63", "blur");
500            validateErrorImage(true);
501            clearTextByName("field63");
502            waitAndTypeByXpath("//input[@name='field63']", "123 23 @#");
503            fireEvent("field63", "blur");
504            clearTextByName("field63");
505            waitAndTypeByXpath("//input[@name='field63']", "as_de 456/123");
506            fireEvent("field63", "blur");
507            validateErrorImage(false);
508            clearTextByName("field63");
509    
510            //---------------------------------------------Alpha with Whitespace and commas Text------------------------------//
511            waitAndTypeByXpath("//input[@name='field64']", "123^we");
512            fireEvent("field64", "blur");
513            validateErrorImage(true);
514            clearTextByName("field64");
515            waitAndTypeByXpath("//input[@name='field64']", "asd_pqr");
516            fireEvent("field64", "blur");
517            validateErrorImage(true);
518            clearTextByName("field64");
519            waitAndTypeByXpath("//input[@name='field64']", "asd/def");
520            fireEvent("field64", "blur");
521            validateErrorImage(true);
522            clearTextByName("field64");
523            waitAndTypeByXpath("//input[@name='field64']", "asd ,pqr");
524            fireEvent("field64", "blur");
525            validateErrorImage(false);
526            clearTextByName("field64");
527    
528            //---------------------------------------------AlphaPatterrn with disallowed charset Text------------------------------//
529            waitAndTypeByXpath("//input[@name='field76']", "123");
530            fireEvent("field76", "blur");
531            validateErrorImage(true);
532            clearTextByName("field76");
533            waitAndTypeByXpath("//input[@name='field76']", "`abcd`");
534            fireEvent("field76", "blur");
535            validateErrorImage(true);
536            clearTextByName("field76");
537            waitAndTypeByXpath("//input[@name='field76']", "|abcd|");
538            fireEvent("field76", "blur");
539            validateErrorImage(true);
540            clearTextByName("field76");
541            waitAndTypeByXpath("//input[@name='field76']", "~abcd~");
542            fireEvent("field76", "blur");
543            validateErrorImage(true);
544            clearTextByName("field76");
545            waitAndTypeByXpath("//input[@name='field76']", " ab_c d_ef ");
546            fireEvent("field76", "blur");
547            validateErrorImage(false);
548            clearTextByName("field76");
549    
550            //---------------------------------------------Anything with No Whitespace Text------------------------------//
551            waitAndTypeByXpath("//input[@name='field65']", "123 ^we");
552            fireEvent("field65", "blur");
553            validateErrorImage(true);
554            clearTextByName("field65");
555            waitAndTypeByXpath("//input[@name='field65']", "123^we!@#^&*~:");
556            fireEvent("field65", "blur");
557            validateErrorImage(false);
558            clearTextByName("field65");
559    
560            //---------------------------------------------CharacterSet Text------------------------------//
561            waitAndTypeByXpath("//input[@name='field66']", "123 ^we");
562            fireEvent("field66", "blur");
563            validateErrorImage(true);
564            clearTextByName("field66");
565            waitAndTypeByXpath("//input[@name='field66']", "123_^we");
566            fireEvent("field66", "blur");
567            validateErrorImage(true);
568            clearTextByName("field66");
569            waitAndTypeByXpath("//input[@name='field66']", "abc ABC");
570            fireEvent("field66", "blur");
571            validateErrorImage(true);
572            clearTextByName("field66");
573            waitAndTypeByXpath("//input[@name='field66']", "aAbBcC");
574            fireEvent("field66", "blur");
575            validateErrorImage(false);
576            clearTextByName("field66");
577    
578            //---------------------------------------------Numeric Character Text------------------------------//
579            waitAndTypeByXpath("//input[@name='field67']", "123 ^we");
580            fireEvent("field67", "blur");
581            validateErrorImage(true);
582            clearTextByName("field67");
583            waitAndTypeByXpath("//input[@name='field67']", "123/10");
584            fireEvent("field67", "blur");
585            validateErrorImage(true);
586            clearTextByName("field67");
587            waitAndTypeByXpath("//input[@name='field67']", "(123.00)");
588            fireEvent("field67", "blur");
589            validateErrorImage(true);
590            clearTextByName("field67");
591            waitAndTypeByXpath("//input[@name='field67']", "(12-3)");
592            fireEvent("field67", "blur");
593            validateErrorImage(false);
594            clearTextByName("field67");
595    
596            //---------------------------------------------Valid Chars Custom Text------------------------------//
597            waitAndTypeByXpath("//input[@name='field68']", "123.123");
598            fireEvent("field68", "blur");
599            validateErrorImage(true);
600            clearTextByName("field68");
601            waitAndTypeByXpath("//input[@name='field68']", "a.b");
602            fireEvent("field68", "blur");
603            validateErrorImage(true);
604            clearTextByName("field68");
605            waitAndTypeByXpath("//input[@name='field68']", "123 qwe");
606            fireEvent("field68", "blur");
607            validateErrorImage(true);
608            clearTextByName("field68");
609            waitAndTypeByXpath("//input[@name='field68']", "5.a");
610            fireEvent("field68", "blur");
611            validateErrorImage(true);
612            clearTextByName("field68");
613            waitAndTypeByXpath("//input[@name='field68']", "a.0,b.4");
614            fireEvent("field68", "blur");
615            validateErrorImage(true);
616            clearTextByName("field68");
617            waitAndTypeByXpath("//input[@name='field68']", "a.0");
618            fireEvent("field68", "blur");
619            validateErrorImage(false);
620            clearTextByName("field68");
621            passed();
622        }
623    }