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