1 /* 2 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 package javafx.scene.control.test.dialog; 26 27 import com.sun.glass.ui.Application; 28 import com.sun.glass.ui.Robot; 29 import javafx.scene.Node; 30 import javafx.scene.Scene; 31 import javafx.scene.control.Button; 32 import javafx.scene.control.ButtonBar; 33 import javafx.scene.control.ButtonType; 34 import javafx.scene.control.CheckBox; 35 import javafx.scene.control.Hyperlink; 36 import javafx.scene.control.TextField; 37 import javafx.scene.control.ToggleButton; 38 import javafx.scene.control.test.ControlsTestBase; 39 import javafx.scene.control.test.dialog.DialogApp; 40 import static javafx.scene.control.test.dialog.DialogApp.DialogScene.*; 41 import javafx.stage.StageStyle; 42 import javafx.stage.Window; 43 import org.jemmy.action.GetAction; 44 import org.jemmy.control.Wrap; 45 import org.jemmy.fx.ByID; 46 import org.jemmy.fx.ByText; 47 import org.jemmy.fx.ByWindowType; 48 import org.jemmy.fx.Root; 49 import org.jemmy.fx.SceneDock; 50 import org.jemmy.image.Image; 51 import org.jemmy.interfaces.Keyboard.KeyboardButtons; 52 import org.jemmy.interfaces.Parent; 53 import org.jemmy.resources.StringComparePolicy; 54 import org.junit.After; 55 import org.junit.AfterClass; 56 import org.junit.Before; 57 import org.junit.BeforeClass; 58 import org.junit.Test; 59 import org.junit.runner.RunWith; 60 import test.javaclient.shared.FilteredTestRunner; 61 import test.javaclient.shared.TestUtil; 62 import test.javaclient.shared.screenshots.ImagesManager; 63 64 /** 65 * 66 * @author Alexander Vorobyev 67 */ 68 @RunWith(FilteredTestRunner.class) 69 public class DialogTest extends ControlsTestBase { 70 71 private static final int DEFAULT_DELAY = 1000; 72 73 public DialogTest() { 74 } 75 76 public static ButtonType[] types = {ButtonType.APPLY, ButtonType.CANCEL, ButtonType.CLOSE, ButtonType.FINISH, ButtonType.NEXT, ButtonType.NO, ButtonType.OK, ButtonType.PREVIOUS, ButtonType.YES}; 77 public static String[] content = {TOGGLE_BUTTON_TEXT, TOGGLE_LABEL_TEXT, TOGGLE_INPUT_TEXT}; 78 79 public static enum InputType { 80 81 MOUSE, SPACE, ENTER 82 } 83 Wrap<? extends Scene> scene = null; 84 Parent<Node> parent = null; 85 Wrap clear = null; 86 static boolean isRemote; 87 88 @BeforeClass 89 public static void setUpClass() throws Exception { 90 DialogApp.main(null); 91 isRemote = (test.javaclient.shared.AppLauncher.getInstance().getMode() == test.javaclient.shared.AppLauncher.Mode.REMOTE); 92 } 93 94 @AfterClass 95 public static void tearDownClass() throws Exception { 96 } 97 98 @Before 99 public void setUp() { 100 scene = TestUtil.getScene(); 101 parent = scene.as(Parent.class, Node.class); 102 scene.mouse().click(); 103 } 104 105 @After 106 public void tearDown() { 107 } 108 109 private void deselectButtons() { 110 for (ButtonType b : types) { 111 Wrap<? extends Node> addButton = parent.lookup(ToggleButton.class, 112 new ByText<ToggleButton>(b.getText(), StringComparePolicy.EXACT)).wrap(); 113 click(addButton, InputType.MOUSE); 114 } 115 } 116 117 private void addButton(String button) { 118 Wrap<? extends Node> addButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(button, StringComparePolicy.EXACT)).wrap(); 119 click(addButton, InputType.MOUSE); 120 } 121 122 @Test(timeout = 300000) 123 public void informationAlertBasicTest() throws Throwable { 124 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_INFO_TEXT)).wrap(); 125 for (StageStyle s : StageStyle.values()) { 126 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 127 click(styleToggleButton, InputType.MOUSE); 128 click(button, InputType.MOUSE); 129 Thread.sleep(DEFAULT_DELAY); 130 checkScreenshot("informationAlertBasicTest" + s.toString() + "Test", scene); 131 closeDialogWindowByClickingButton(); 132 throwScreenshotError(); 133 } 134 } 135 136 @Test(timeout = 300000) 137 public void informationAlertWithMastheadTest() throws Throwable { 138 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_INFO_TEXT)).wrap(); 139 checkShowMastheadBox(); 140 for (StageStyle s : StageStyle.values()) { 141 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 142 click(styleToggleButton, InputType.MOUSE); 143 click(button, InputType.MOUSE); 144 Thread.sleep(DEFAULT_DELAY); 145 checkScreenshot("informationAlertWithMastheadTest" + s.toString() + "Test", scene); 146 closeDialogWindowByClickingButton(); 147 throwScreenshotError(); 148 } 149 } 150 151 @Test(timeout = 300000) 152 public void confirmationAlertBasicTest() throws Throwable { 153 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CONFIRM_TEXT)).wrap(); 154 for (StageStyle s : StageStyle.values()) { 155 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 156 click(styleToggleButton, InputType.MOUSE); 157 click(button, InputType.MOUSE); 158 Thread.sleep(DEFAULT_DELAY); 159 checkScreenshot("confirmationAlertBasicTest" + s.toString() + "Test", scene); 160 closeDialogWindowByClickingButton(); 161 throwScreenshotError(); 162 } 163 } 164 165 @Test(timeout = 300000) 166 public void confirmationAlertWithMastheadTest() throws Throwable { 167 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CONFIRM_TEXT)).wrap(); 168 checkShowMastheadBox(); 169 for (StageStyle s : StageStyle.values()) { 170 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 171 click(styleToggleButton, InputType.MOUSE); 172 click(button, InputType.MOUSE); 173 Thread.sleep(DEFAULT_DELAY); 174 checkScreenshot("confirmationAlertWithMastheadTest" + s.toString() + "Test", scene); 175 closeDialogWindowByClickingButton(); 176 throwScreenshotError(); 177 } 178 } 179 180 @Test(timeout = 300000) 181 public void warningAlertBasicTest() throws Throwable { 182 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_WARNING_TEXT)).wrap(); 183 for (StageStyle s : StageStyle.values()) { 184 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 185 click(styleToggleButton, InputType.MOUSE); 186 click(button, InputType.MOUSE); 187 Thread.sleep(DEFAULT_DELAY); 188 checkScreenshot("warningAlertBasicTest" + s.toString() + "Test", scene); 189 closeDialogWindowByClickingButton(); 190 throwScreenshotError(); 191 } 192 } 193 194 @Test(timeout = 300000) 195 public void warningAlertWithMastheadTest() throws Throwable { 196 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_WARNING_TEXT)).wrap(); 197 checkShowMastheadBox(); 198 for (StageStyle s : StageStyle.values()) { 199 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 200 click(styleToggleButton, InputType.MOUSE); 201 click(button, InputType.MOUSE); 202 Thread.sleep(DEFAULT_DELAY); 203 checkScreenshot("warningAlertWithMastheadTest" + s.toString() + "Test", scene); 204 closeDialogWindowByClickingButton(); 205 throwScreenshotError(); 206 } 207 } 208 209 @Test(timeout = 300000) 210 public void errorAlertBasicTest() throws Throwable { 211 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_ERROR_TEXT)).wrap(); 212 for (StageStyle s : StageStyle.values()) { 213 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 214 click(styleToggleButton, InputType.MOUSE); 215 click(button, InputType.MOUSE); 216 Thread.sleep(DEFAULT_DELAY); 217 checkScreenshot("errorAlertBasicTest" + s.toString() + "Test", scene); 218 closeDialogWindowByClickingButton(); 219 throwScreenshotError(); 220 } 221 } 222 223 @Test(timeout = 300000) 224 public void errorAlertWithMastheadTest() throws Throwable { 225 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_ERROR_TEXT)).wrap(); 226 checkShowMastheadBox(); 227 for (StageStyle s : StageStyle.values()) { 228 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 229 click(styleToggleButton, InputType.MOUSE); 230 click(button, InputType.MOUSE); 231 Thread.sleep(DEFAULT_DELAY); 232 checkScreenshot("errorAlertWithMastheadTest" + s.toString() + "Test", scene); 233 closeDialogWindowByClickingButton(); 234 throwScreenshotError(); 235 } 236 } 237 238 @Test(timeout = 300000) 239 public void informationAlertBasicWithButtonsTest() throws Throwable { 240 for (StageStyle s : StageStyle.values()) { 241 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 242 click(styleToggleButton, InputType.MOUSE); 243 for (ButtonType b : types) { 244 addButton(b.getText()); 245 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_INFO_TEXT)).wrap(); 246 click(button, InputType.MOUSE); 247 Thread.sleep(DEFAULT_DELAY); 248 checkScreenshot("informationAlertBasicWithButtonsTest" + s + "_" + b + "Test", scene); 249 closeDialogWindowByClickingButton(); 250 Thread.sleep(DEFAULT_DELAY); 251 throwScreenshotError(); 252 } 253 deselectButtons(); 254 } 255 } 256 257 @Test(timeout = 300000) 258 public void confirmationAlertBasicWithButtonsTest() throws Throwable { 259 for (StageStyle s : StageStyle.values()) { 260 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 261 click(styleToggleButton, InputType.MOUSE); 262 for (ButtonType b : types) { 263 addButton(b.getText()); 264 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CONFIRM_TEXT)).wrap(); 265 click(button, InputType.MOUSE); 266 Thread.sleep(DEFAULT_DELAY); 267 checkScreenshot("confirmationAlertBasicWithButtonsTest" + s + "_" + b + "Test", scene); 268 closeDialogWindowByClickingButton(); 269 Thread.sleep(DEFAULT_DELAY); 270 throwScreenshotError(); 271 } 272 deselectButtons(); 273 } 274 } 275 276 @Test(timeout = 300000) 277 public void warningAlertBasicWithButtonsTest() throws Throwable { 278 for (StageStyle s : StageStyle.values()) { 279 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 280 click(styleToggleButton, InputType.MOUSE); 281 for (ButtonType b : types) { 282 addButton(b.getText()); 283 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_WARNING_TEXT)).wrap(); 284 click(button, InputType.MOUSE); 285 Thread.sleep(DEFAULT_DELAY); 286 checkScreenshot("warningAlertBasicWithButtonsTest" + s + "_" + b + "Test", scene); 287 closeDialogWindowByClickingButton(); 288 Thread.sleep(DEFAULT_DELAY); 289 throwScreenshotError(); 290 } 291 deselectButtons(); 292 } 293 } 294 295 @Test(timeout = 300000) 296 public void errorAlertBasicWithButtonsTest() throws Throwable { 297 for (StageStyle s : StageStyle.values()) { 298 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 299 click(styleToggleButton, InputType.MOUSE); 300 for (ButtonType b : types) { 301 addButton(b.getText()); 302 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_ERROR_TEXT, StringComparePolicy.EXACT)).wrap(); 303 click(button, InputType.MOUSE); 304 Thread.sleep(DEFAULT_DELAY); 305 checkScreenshot("errorAlertBasicWithButtonsTest" + s + "_" + b + "Test", scene); 306 closeDialogWindowByClickingButton(); 307 Thread.sleep(DEFAULT_DELAY); 308 throwScreenshotError(); 309 } 310 deselectButtons(); 311 } 312 } 313 314 @Test(timeout = 300000) 315 public void textInputDialogBasicTest() throws Throwable { 316 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_TEXT_FIELD_TEXT)).wrap(); 317 for (StageStyle s : StageStyle.values()) { 318 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 319 click(styleToggleButton, InputType.MOUSE); 320 click(button, InputType.MOUSE); 321 Thread.sleep(DEFAULT_DELAY); 322 checkScreenshot("textInputDialogBasicTest" + s.toString() + "Test", scene); 323 closeDialogWindowByClickingButton(); 324 throwScreenshotError(); 325 } 326 } 327 328 @Test(timeout = 300000) 329 public void textInputWithInitialValueDialogBasicTest() throws Throwable { 330 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_INITIAL_VALUE_TEXT)).wrap(); 331 for (StageStyle s : StageStyle.values()) { 332 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 333 click(styleToggleButton, InputType.MOUSE); 334 click(button, InputType.MOUSE); 335 Thread.sleep(DEFAULT_DELAY); 336 checkScreenshot("textInputWithInitialValueDialogBasicTest" + s.toString() + "Test", scene); 337 closeDialogWindowByClickingButton(); 338 throwScreenshotError(); 339 } 340 } 341 342 @Test(timeout = 300000) 343 public void setChoiceDialogLtTenBasicTest() throws Throwable { 344 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CHOICE_LT_TEN_TEXT)).wrap(); 345 for (StageStyle s : StageStyle.values()) { 346 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 347 click(styleToggleButton, InputType.MOUSE); 348 click(button, InputType.MOUSE); 349 Thread.sleep(DEFAULT_DELAY); 350 checkScreenshot("setChoiceDialogLtTenBasicTest" + s.toString() + "Test", scene); 351 closeDialogWindowByClickingButton(); 352 throwScreenshotError(); 353 } 354 } 355 356 @Test(timeout = 300000) 357 public void setChoiceDialogGtTenBasicTest() throws Throwable { 358 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CHOICE_GT_TEN_TEXT)).wrap(); 359 for (StageStyle s : StageStyle.values()) { 360 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 361 click(styleToggleButton, InputType.MOUSE); 362 click(button, InputType.MOUSE); 363 Thread.sleep(DEFAULT_DELAY); 364 checkScreenshot("setChoiceDialogGtTenBasicTest" + s.toString() + "Test", scene); 365 closeDialogWindowByClickingButton(); 366 throwScreenshotError(); 367 } 368 } 369 370 @Test(timeout = 300000) 371 public void informationAlertResponceTest() throws Throwable { 372 for (StageStyle s : StageStyle.values()) { 373 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 374 click(styleToggleButton, InputType.MOUSE); 375 for (ButtonType b : types) { 376 addButton(b.getText()); 377 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_INFO_TEXT)).wrap(); 378 click(button, InputType.MOUSE); 379 closeDialogWindowByClickingButton(b.getText()); 380 Wrap<? extends Node> resultField = parent.lookup(TextField.class, new ByID<TextField>(RESULT_FIELD_ID)).wrap(); 381 resultField.waitProperty(Wrap.TEXT_PROP_NAME, b.getText()); 382 Thread.sleep(DEFAULT_DELAY); 383 } 384 deselectButtons(); 385 } 386 } 387 388 @Test(timeout = 300000) 389 public void confirmationAlertResponceTest() throws Throwable { 390 for (StageStyle s : StageStyle.values()) { 391 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 392 click(styleToggleButton, InputType.MOUSE); 393 for (ButtonType b : types) { 394 addButton(b.getText()); 395 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CONFIRM_TEXT)).wrap(); 396 click(button, InputType.MOUSE); 397 closeDialogWindowByClickingButton(b.getText()); 398 Thread.sleep(DEFAULT_DELAY); 399 } 400 deselectButtons(); 401 } 402 } 403 404 @Test(timeout = 300000) 405 public void warningAlertResponceTest() throws Throwable { 406 for (StageStyle s : StageStyle.values()) { 407 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 408 click(styleToggleButton, InputType.MOUSE); 409 for (ButtonType b : types) { 410 addButton(b.getText()); 411 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_WARNING_TEXT)).wrap(); 412 click(button, InputType.MOUSE); 413 closeDialogWindowByClickingButton(b.getText()); 414 Wrap<? extends Node> resultField = parent.lookup(TextField.class, new ByID<TextField>(RESULT_FIELD_ID)).wrap(); 415 resultField.waitProperty(Wrap.TEXT_PROP_NAME, b.getText()); 416 Thread.sleep(DEFAULT_DELAY); 417 } 418 deselectButtons(); 419 } 420 } 421 422 @Test(timeout = 300000) 423 public void errorAlertResponceTest() throws Throwable { 424 for (StageStyle s : StageStyle.values()) { 425 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 426 click(styleToggleButton, InputType.MOUSE); 427 for (ButtonType b : types) { 428 addButton(b.getText()); 429 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_ERROR_TEXT)).wrap(); 430 click(button, InputType.MOUSE); 431 closeDialogWindowByClickingButton(b.getText()); 432 Wrap<? extends Node> resultField = parent.lookup(TextField.class, new ByID<TextField>(RESULT_FIELD_ID)).wrap(); 433 resultField.waitProperty(Wrap.TEXT_PROP_NAME, b.getText()); 434 Thread.sleep(DEFAULT_DELAY); 435 } 436 deselectButtons(); 437 } 438 } 439 440 @Test(timeout = 300000) 441 public void textInputDialogResponceTest() throws Throwable { 442 for (StageStyle s : StageStyle.values()) { 443 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 444 click(styleToggleButton, InputType.MOUSE); 445 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_TEXT_FIELD_TEXT)).wrap(); 446 click(button, InputType.MOUSE); 447 Thread.sleep(DEFAULT_DELAY); 448 closeDialogWindowByClickingButton("OK"); 449 } 450 } 451 452 @Test(timeout = 300000) 453 public void textInputWithInitialValueDialogResponceTest() throws Throwable { 454 for (StageStyle s : StageStyle.values()) { 455 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 456 click(styleToggleButton, InputType.MOUSE); 457 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_INITIAL_VALUE_TEXT)).wrap(); 458 click(button, InputType.MOUSE); 459 Thread.sleep(DEFAULT_DELAY); 460 closeDialogWindowByClickingButton("OK"); 461 } 462 } 463 464 @Test(timeout = 300000) 465 public void setChoiceDialogLtTenResponceTest() throws Throwable { 466 for (StageStyle s : StageStyle.values()) { 467 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 468 click(styleToggleButton, InputType.MOUSE); 469 for (ButtonType b : types) { 470 addButton(b.getText()); 471 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CHOICE_LT_TEN_TEXT)).wrap(); 472 click(button, InputType.MOUSE); 473 closeDialogWindowByClickingButton(b.getText()); 474 Thread.sleep(1000); 475 } 476 deselectButtons(); 477 } 478 } 479 480 @Test(timeout = 300000) 481 public void setChoiceDialogGtTenResponceTest() throws Throwable { 482 for (StageStyle s : StageStyle.values()) { 483 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 484 click(styleToggleButton, InputType.MOUSE); 485 for (ButtonType b : types) { 486 addButton(b.getText()); 487 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CHOICE_GT_TEN_TEXT)).wrap(); 488 click(button, InputType.MOUSE); 489 closeDialogWindowByClickingButton(b.getText()); 490 Thread.sleep(DEFAULT_DELAY); 491 } 492 deselectButtons(); 493 } 494 } 495 496 @Test(timeout = 300000) 497 public void alertWithExpandableContentTest() throws Throwable { 498 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_EXP_TEXT)).wrap(); 499 for (StageStyle s : StageStyle.values()) { 500 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 501 click(styleToggleButton, InputType.MOUSE); 502 for (String c : content) { 503 Wrap<? extends Node> contentToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(c)).wrap(); 504 click(contentToggleButton, InputType.MOUSE); 505 click(button, InputType.MOUSE); 506 Thread.sleep(DEFAULT_DELAY); 507 SceneDock sd = new SceneDock(); 508 click(sd.asParent().lookup(Hyperlink.class, new ByText<Hyperlink>("Show Details")).wrap(), InputType.MOUSE); 509 // checkScreenshot("alertWithExpandableContentTest" + s + "_" + c + "Test", scene); 510 Thread.sleep(DEFAULT_DELAY); 511 closeDialogWindowByClickingButton("OK"); 512 throwScreenshotError(); 513 } 514 } 515 } 516 517 @Test(timeout = 300000) 518 public void alertWithCustomContentTest() throws Throwable { 519 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CUSTOM_TEXT)).wrap(); 520 for (StageStyle s : StageStyle.values()) { 521 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 522 click(styleToggleButton, InputType.MOUSE); 523 for (String c : content) { 524 Wrap<? extends Node> contentToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(c)).wrap(); 525 click(contentToggleButton, InputType.MOUSE); 526 click(button, InputType.MOUSE); 527 Thread.sleep(DEFAULT_DELAY); 528 SceneDock sd = new SceneDock(); 529 checkScreenshot("alertWithCustomContentTest" + s + "_" + c + "Test", scene); 530 Thread.sleep(DEFAULT_DELAY); 531 closeDialogWindowByClickingButton("OK"); 532 throwScreenshotError(); 533 } 534 } 535 } 536 537 @Test(timeout = 300000) 538 public void alertWithNullCustomContentTest() throws Throwable { 539 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_EXP_TEXT)).wrap(); 540 Wrap<? extends Node> contentToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(TOGGLE_NOTHING_TEXT)).wrap(); 541 for (StageStyle s : StageStyle.values()) { 542 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 543 click(styleToggleButton, InputType.MOUSE); 544 click(contentToggleButton, InputType.MOUSE); 545 click(button, InputType.MOUSE); 546 closeDialogWindowByClickingButton("OK"); 547 } 548 } 549 550 protected void click(final Wrap<? extends Node> wrap, InputType ctrl) { 551 switch (ctrl) { 552 case MOUSE: 553 wrap.mouse().click(); 554 break; 555 case SPACE: 556 if (requestFocusByKeyboard(wrap)) { 557 wrap.keyboard().pushKey(KeyboardButtons.SPACE); 558 } 559 break; 560 case ENTER: 561 if (requestFocusByKeyboard(wrap)) { 562 wrap.keyboard().pushKey(KeyboardButtons.ENTER); 563 } 564 break; 565 } 566 } 567 568 protected void closeDialogWindowByClickingButton() { 569 SceneDock sd = new SceneDock(); 570 click(sd.asParent().lookup(Button.class).wrap(0), InputType.MOUSE); 571 } 572 573 protected void closeDialogWindowByClickingButton(String text) { 574 SceneDock sd = new SceneDock(); 575 click(sd.asParent().lookup(Button.class, new ByText<Button>(text)).wrap(), InputType.MOUSE); 576 } 577 578 protected void closeDialogWindowByClosingWindow() { 579 Application.invokeAndWait(() -> { 580 final Robot robot = Application.GetApplication().createRobot(); 581 Wrap<? extends com.sun.glass.ui.Window> dialogWindow = Root.ROOT.lookup(new ByWindowType(Window.class)).lookup(Scene.class).wrap(0); 582 robot.mouseMove(dialogWindow.getScreenBounds().x + dialogWindow.getScreenBounds().width - 2, dialogWindow.getScreenBounds().y - 20); 583 robot.mousePress(1); 584 robot.mouseRelease(1); 585 }); 586 } 587 588 protected void checkShowMastheadBox() { 589 Wrap<? extends Node> showMastheadCheckbox = parent.lookup(CheckBox.class, new ByID<CheckBox>(CHK_SHOW_MASTHEAD_ID)).wrap(); 590 click(showMastheadCheckbox, InputType.MOUSE); 591 } 592 593 protected void saveSceneImage(String fileName) { 594 Image sceneImage; 595 sceneImage = scene.getScreenImage(); 596 sceneImage.save(ImagesManager.getInstance().getScreenshotPath(fileName)); 597 } 598 599 protected boolean requestFocusByKeyboard(final Wrap<? extends Node> wrap) { 600 int numberOfControls = parent.lookup(Node.class).size() + 1; 601 for (int i = 0; i < numberOfControls; ++i) { 602 if (new GetAction<Boolean>() { 603 604 @Override 605 public void run(Object... os) throws Exception { 606 setResult(wrap.getControl().isFocused()); 607 } 608 }.dispatch(Root.ROOT.getEnvironment())) { 609 return true; 610 } 611 scene.keyboard().pushKey(KeyboardButtons.TAB); 612 } 613 return false; 614 } 615 }