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