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