1 /* 2 * Copyright (c) 2014, 2016 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.GoldenImageManager; 63 /** 64 * 65 * @author Alexander Vorobyev 66 */ 67 @RunWith(FilteredTestRunner.class) 68 public class DialogTest extends ControlsTestBase { 69 70 private static final int DEFAULT_DELAY = 1000; 71 72 public DialogTest() { 73 } 74 75 public static ButtonType[] types = {ButtonType.APPLY, ButtonType.CANCEL, ButtonType.CLOSE, ButtonType.FINISH, ButtonType.NEXT, ButtonType.NO, ButtonType.OK, ButtonType.PREVIOUS, ButtonType.YES}; 76 public static String[] content = {TOGGLE_BUTTON_TEXT, TOGGLE_LABEL_TEXT, TOGGLE_INPUT_TEXT}; 77 78 public static enum InputType { 79 80 MOUSE, SPACE, ENTER 81 } 82 Wrap<? extends Scene> scene = null; 83 Parent<Node> parent = null; 84 Wrap clear = null; 85 static boolean isRemote; 86 87 @BeforeClass 88 public static void setUpClass() throws Exception { 89 DialogApp.main(null); 90 isRemote = (test.javaclient.shared.AppLauncher.getInstance().getMode() == test.javaclient.shared.AppLauncher.Mode.REMOTE); 91 } 92 93 @AfterClass 94 public static void tearDownClass() throws Exception { 95 } 96 97 @Before 98 public void setUp() { 99 scene = TestUtil.getScene(); 100 parent = scene.as(Parent.class, Node.class); 101 scene.mouse().click(); 102 } 103 104 @After 105 public void tearDown() { 106 } 107 108 private void deselectButtons() { 109 for (ButtonType b : types) { 110 Wrap<? extends Node> addButton = parent.lookup(ToggleButton.class, 111 new ByText<ToggleButton>(b.getText(), StringComparePolicy.EXACT)).wrap(); 112 click(addButton, InputType.MOUSE); 113 } 114 } 115 116 private void addButton(String button) { 117 Wrap<? extends Node> addButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(button, StringComparePolicy.EXACT)).wrap(); 118 click(addButton, InputType.MOUSE); 119 } 120 121 @Test(timeout = 300000) 122 public void informationAlertBasicTest() throws Throwable { 123 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_INFO_TEXT)).wrap(); 124 for (StageStyle s : StageStyle.values()) { 125 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 126 click(styleToggleButton, InputType.MOUSE); 127 click(button, InputType.MOUSE); 128 Thread.sleep(DEFAULT_DELAY); 129 checkScreenshot("informationAlertBasicTest" + s.toString() + "Test", scene); 130 closeDialogWindowByClickingButton(); 131 throwScreenshotError(); 132 } 133 } 134 135 @Test(timeout = 300000) 136 public void informationAlertWithMastheadTest() throws Throwable { 137 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_INFO_TEXT)).wrap(); 138 checkShowMastheadBox(); 139 for (StageStyle s : StageStyle.values()) { 140 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 141 click(styleToggleButton, InputType.MOUSE); 142 click(button, InputType.MOUSE); 143 Thread.sleep(DEFAULT_DELAY); 144 checkScreenshot("informationAlertWithMastheadTest" + s.toString() + "Test", scene); 145 closeDialogWindowByClickingButton(); 146 throwScreenshotError(); 147 } 148 } 149 150 @Test(timeout = 300000) 151 public void confirmationAlertBasicTest() throws Throwable { 152 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CONFIRM_TEXT)).wrap(); 153 for (StageStyle s : StageStyle.values()) { 154 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 155 click(styleToggleButton, InputType.MOUSE); 156 click(button, InputType.MOUSE); 157 Thread.sleep(DEFAULT_DELAY); 158 checkScreenshot("confirmationAlertBasicTest" + s.toString() + "Test", scene); 159 closeDialogWindowByClickingButton(); 160 throwScreenshotError(); 161 } 162 } 163 164 @Test(timeout = 300000) 165 public void confirmationAlertWithMastheadTest() throws Throwable { 166 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CONFIRM_TEXT)).wrap(); 167 checkShowMastheadBox(); 168 for (StageStyle s : StageStyle.values()) { 169 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 170 click(styleToggleButton, InputType.MOUSE); 171 click(button, InputType.MOUSE); 172 Thread.sleep(DEFAULT_DELAY); 173 checkScreenshot("confirmationAlertWithMastheadTest" + s.toString() + "Test", scene); 174 closeDialogWindowByClickingButton(); 175 throwScreenshotError(); 176 } 177 } 178 179 @Test(timeout = 300000) 180 public void warningAlertBasicTest() throws Throwable { 181 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_WARNING_TEXT)).wrap(); 182 for (StageStyle s : StageStyle.values()) { 183 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 184 click(styleToggleButton, InputType.MOUSE); 185 click(button, InputType.MOUSE); 186 Thread.sleep(DEFAULT_DELAY); 187 checkScreenshot("warningAlertBasicTest" + s.toString() + "Test", scene); 188 closeDialogWindowByClickingButton(); 189 throwScreenshotError(); 190 } 191 } 192 193 @Test(timeout = 300000) 194 public void warningAlertWithMastheadTest() throws Throwable { 195 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_WARNING_TEXT)).wrap(); 196 checkShowMastheadBox(); 197 for (StageStyle s : StageStyle.values()) { 198 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 199 click(styleToggleButton, InputType.MOUSE); 200 click(button, InputType.MOUSE); 201 Thread.sleep(DEFAULT_DELAY); 202 checkScreenshot("warningAlertWithMastheadTest" + s.toString() + "Test", scene); 203 closeDialogWindowByClickingButton(); 204 throwScreenshotError(); 205 } 206 } 207 208 @Test(timeout = 300000) 209 public void errorAlertBasicTest() throws Throwable { 210 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_ERROR_TEXT)).wrap(); 211 for (StageStyle s : StageStyle.values()) { 212 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 213 click(styleToggleButton, InputType.MOUSE); 214 click(button, InputType.MOUSE); 215 Thread.sleep(DEFAULT_DELAY); 216 checkScreenshot("errorAlertBasicTest" + s.toString() + "Test", scene); 217 closeDialogWindowByClickingButton(); 218 throwScreenshotError(); 219 } 220 } 221 222 @Test(timeout = 300000) 223 public void errorAlertWithMastheadTest() throws Throwable { 224 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_ERROR_TEXT)).wrap(); 225 checkShowMastheadBox(); 226 for (StageStyle s : StageStyle.values()) { 227 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 228 click(styleToggleButton, InputType.MOUSE); 229 click(button, InputType.MOUSE); 230 Thread.sleep(DEFAULT_DELAY); 231 checkScreenshot("errorAlertWithMastheadTest" + s.toString() + "Test", scene); 232 closeDialogWindowByClickingButton(); 233 throwScreenshotError(); 234 } 235 } 236 237 @Test(timeout = 300000) 238 public void informationAlertBasicWithButtonsTest() throws Throwable { 239 for (StageStyle s : StageStyle.values()) { 240 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 241 click(styleToggleButton, InputType.MOUSE); 242 for (ButtonType b : types) { 243 addButton(b.getText()); 244 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_INFO_TEXT)).wrap(); 245 click(button, InputType.MOUSE); 246 Thread.sleep(DEFAULT_DELAY); 247 checkScreenshot("informationAlertBasicWithButtonsTest" + s + "_" + b + "Test", scene); 248 closeDialogWindowByClickingButton(); 249 Thread.sleep(DEFAULT_DELAY); 250 throwScreenshotError(); 251 } 252 deselectButtons(); 253 } 254 } 255 256 @Test(timeout = 300000) 257 public void confirmationAlertBasicWithButtonsTest() throws Throwable { 258 for (StageStyle s : StageStyle.values()) { 259 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 260 click(styleToggleButton, InputType.MOUSE); 261 for (ButtonType b : types) { 262 addButton(b.getText()); 263 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CONFIRM_TEXT)).wrap(); 264 click(button, InputType.MOUSE); 265 Thread.sleep(DEFAULT_DELAY); 266 checkScreenshot("confirmationAlertBasicWithButtonsTest" + s + "_" + b + "Test", scene); 267 closeDialogWindowByClickingButton(); 268 Thread.sleep(DEFAULT_DELAY); 269 throwScreenshotError(); 270 } 271 deselectButtons(); 272 } 273 } 274 275 @Test(timeout = 300000) 276 public void warningAlertBasicWithButtonsTest() throws Throwable { 277 for (StageStyle s : StageStyle.values()) { 278 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 279 click(styleToggleButton, InputType.MOUSE); 280 for (ButtonType b : types) { 281 addButton(b.getText()); 282 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_WARNING_TEXT)).wrap(); 283 click(button, InputType.MOUSE); 284 Thread.sleep(DEFAULT_DELAY); 285 checkScreenshot("warningAlertBasicWithButtonsTest" + s + "_" + b + "Test", scene); 286 closeDialogWindowByClickingButton(); 287 Thread.sleep(DEFAULT_DELAY); 288 throwScreenshotError(); 289 } 290 deselectButtons(); 291 } 292 } 293 294 @Test(timeout = 300000) 295 public void errorAlertBasicWithButtonsTest() throws Throwable { 296 for (StageStyle s : StageStyle.values()) { 297 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 298 click(styleToggleButton, InputType.MOUSE); 299 for (ButtonType b : types) { 300 addButton(b.getText()); 301 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_ERROR_TEXT, StringComparePolicy.EXACT)).wrap(); 302 click(button, InputType.MOUSE); 303 Thread.sleep(DEFAULT_DELAY); 304 checkScreenshot("errorAlertBasicWithButtonsTest" + s + "_" + b + "Test", scene); 305 closeDialogWindowByClickingButton(); 306 Thread.sleep(DEFAULT_DELAY); 307 throwScreenshotError(); 308 } 309 deselectButtons(); 310 } 311 } 312 313 @Test(timeout = 300000) 314 public void textInputDialogBasicTest() throws Throwable { 315 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_TEXT_FIELD_TEXT)).wrap(); 316 for (StageStyle s : StageStyle.values()) { 317 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 318 click(styleToggleButton, InputType.MOUSE); 319 click(button, InputType.MOUSE); 320 Thread.sleep(DEFAULT_DELAY); 321 checkScreenshot("textInputDialogBasicTest" + s.toString() + "Test", scene); 322 closeDialogWindowByClickingButton(); 323 throwScreenshotError(); 324 } 325 } 326 327 @Test(timeout = 300000) 328 public void textInputWithInitialValueDialogBasicTest() throws Throwable { 329 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_INITIAL_VALUE_TEXT)).wrap(); 330 for (StageStyle s : StageStyle.values()) { 331 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 332 click(styleToggleButton, InputType.MOUSE); 333 click(button, InputType.MOUSE); 334 Thread.sleep(DEFAULT_DELAY); 335 checkScreenshot("textInputWithInitialValueDialogBasicTest" + s.toString() + "Test", scene); 336 closeDialogWindowByClickingButton(); 337 throwScreenshotError(); 338 } 339 } 340 341 @Test(timeout = 300000) 342 public void setChoiceDialogLtTenBasicTest() throws Throwable { 343 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CHOICE_LT_TEN_TEXT)).wrap(); 344 for (StageStyle s : StageStyle.values()) { 345 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 346 click(styleToggleButton, InputType.MOUSE); 347 click(button, InputType.MOUSE); 348 Thread.sleep(DEFAULT_DELAY); 349 checkScreenshot("setChoiceDialogLtTenBasicTest" + s.toString() + "Test", scene); 350 closeDialogWindowByClickingButton(); 351 throwScreenshotError(); 352 } 353 } 354 355 @Test(timeout = 300000) 356 public void setChoiceDialogGtTenBasicTest() throws Throwable { 357 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CHOICE_GT_TEN_TEXT)).wrap(); 358 for (StageStyle s : StageStyle.values()) { 359 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 360 click(styleToggleButton, InputType.MOUSE); 361 click(button, InputType.MOUSE); 362 Thread.sleep(DEFAULT_DELAY); 363 checkScreenshot("setChoiceDialogGtTenBasicTest" + s.toString() + "Test", scene); 364 closeDialogWindowByClickingButton(); 365 throwScreenshotError(); 366 } 367 } 368 369 @Test(timeout = 300000) 370 public void informationAlertResponceTest() throws Throwable { 371 for (StageStyle s : StageStyle.values()) { 372 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 373 click(styleToggleButton, InputType.MOUSE); 374 for (ButtonType b : types) { 375 addButton(b.getText()); 376 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_INFO_TEXT)).wrap(); 377 click(button, InputType.MOUSE); 378 closeDialogWindowByClickingButton(b.getText()); 379 Wrap<? extends Node> resultField = parent.lookup(TextField.class, new ByID<TextField>(RESULT_FIELD_ID)).wrap(); 380 resultField.waitProperty(Wrap.TEXT_PROP_NAME, b.getText()); 381 Thread.sleep(DEFAULT_DELAY); 382 } 383 deselectButtons(); 384 } 385 } 386 387 @Test(timeout = 300000) 388 public void confirmationAlertResponceTest() throws Throwable { 389 for (StageStyle s : StageStyle.values()) { 390 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 391 click(styleToggleButton, InputType.MOUSE); 392 for (ButtonType b : types) { 393 addButton(b.getText()); 394 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CONFIRM_TEXT)).wrap(); 395 click(button, InputType.MOUSE); 396 closeDialogWindowByClickingButton(b.getText()); 397 Thread.sleep(DEFAULT_DELAY); 398 } 399 deselectButtons(); 400 } 401 } 402 403 @Test(timeout = 300000) 404 public void warningAlertResponceTest() throws Throwable { 405 for (StageStyle s : StageStyle.values()) { 406 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 407 click(styleToggleButton, InputType.MOUSE); 408 for (ButtonType b : types) { 409 addButton(b.getText()); 410 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_WARNING_TEXT)).wrap(); 411 click(button, InputType.MOUSE); 412 closeDialogWindowByClickingButton(b.getText()); 413 Wrap<? extends Node> resultField = parent.lookup(TextField.class, new ByID<TextField>(RESULT_FIELD_ID)).wrap(); 414 resultField.waitProperty(Wrap.TEXT_PROP_NAME, b.getText()); 415 Thread.sleep(DEFAULT_DELAY); 416 } 417 deselectButtons(); 418 } 419 } 420 421 @Test(timeout = 300000) 422 public void errorAlertResponceTest() throws Throwable { 423 for (StageStyle s : StageStyle.values()) { 424 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 425 click(styleToggleButton, InputType.MOUSE); 426 for (ButtonType b : types) { 427 addButton(b.getText()); 428 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_ERROR_TEXT)).wrap(); 429 click(button, InputType.MOUSE); 430 closeDialogWindowByClickingButton(b.getText()); 431 Wrap<? extends Node> resultField = parent.lookup(TextField.class, new ByID<TextField>(RESULT_FIELD_ID)).wrap(); 432 resultField.waitProperty(Wrap.TEXT_PROP_NAME, b.getText()); 433 Thread.sleep(DEFAULT_DELAY); 434 } 435 deselectButtons(); 436 } 437 } 438 439 @Test(timeout = 300000) 440 public void textInputDialogResponceTest() throws Throwable { 441 for (StageStyle s : StageStyle.values()) { 442 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 443 click(styleToggleButton, InputType.MOUSE); 444 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_TEXT_FIELD_TEXT)).wrap(); 445 click(button, InputType.MOUSE); 446 Thread.sleep(DEFAULT_DELAY); 447 closeDialogWindowByClickingButton("OK"); 448 } 449 } 450 451 @Test(timeout = 300000) 452 public void textInputWithInitialValueDialogResponceTest() throws Throwable { 453 for (StageStyle s : StageStyle.values()) { 454 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 455 click(styleToggleButton, InputType.MOUSE); 456 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_INITIAL_VALUE_TEXT)).wrap(); 457 click(button, InputType.MOUSE); 458 Thread.sleep(DEFAULT_DELAY); 459 closeDialogWindowByClickingButton("OK"); 460 } 461 } 462 463 @Test(timeout = 300000) 464 public void setChoiceDialogLtTenResponceTest() throws Throwable { 465 for (StageStyle s : StageStyle.values()) { 466 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 467 click(styleToggleButton, InputType.MOUSE); 468 for (ButtonType b : types) { 469 addButton(b.getText()); 470 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CHOICE_LT_TEN_TEXT)).wrap(); 471 click(button, InputType.MOUSE); 472 closeDialogWindowByClickingButton(b.getText()); 473 Thread.sleep(1000); 474 } 475 deselectButtons(); 476 } 477 } 478 479 @Test(timeout = 300000) 480 public void setChoiceDialogGtTenResponceTest() throws Throwable { 481 for (StageStyle s : StageStyle.values()) { 482 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 483 click(styleToggleButton, InputType.MOUSE); 484 for (ButtonType b : types) { 485 addButton(b.getText()); 486 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CHOICE_GT_TEN_TEXT)).wrap(); 487 click(button, InputType.MOUSE); 488 closeDialogWindowByClickingButton(b.getText()); 489 Thread.sleep(DEFAULT_DELAY); 490 } 491 deselectButtons(); 492 } 493 } 494 495 @Test(timeout = 300000) 496 public void alertWithExpandableContentTest() throws Throwable { 497 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_EXP_TEXT)).wrap(); 498 for (StageStyle s : StageStyle.values()) { 499 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 500 click(styleToggleButton, InputType.MOUSE); 501 for (String c : content) { 502 Wrap<? extends Node> contentToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(c)).wrap(); 503 click(contentToggleButton, InputType.MOUSE); 504 click(button, InputType.MOUSE); 505 Thread.sleep(DEFAULT_DELAY); 506 SceneDock sd = new SceneDock(); 507 click(sd.asParent().lookup(Hyperlink.class, new ByText<Hyperlink>("Show Details")).wrap(), InputType.MOUSE); 508 // checkScreenshot("alertWithExpandableContentTest" + s + "_" + c + "Test", scene); 509 Thread.sleep(DEFAULT_DELAY); 510 closeDialogWindowByClickingButton("OK"); 511 throwScreenshotError(); 512 } 513 } 514 } 515 516 @Test(timeout = 300000) 517 public void alertWithCustomContentTest() throws Throwable { 518 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_CUSTOM_TEXT)).wrap(); 519 for (StageStyle s : StageStyle.values()) { 520 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 521 click(styleToggleButton, InputType.MOUSE); 522 for (String c : content) { 523 Wrap<? extends Node> contentToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(c)).wrap(); 524 click(contentToggleButton, InputType.MOUSE); 525 click(button, InputType.MOUSE); 526 Thread.sleep(DEFAULT_DELAY); 527 SceneDock sd = new SceneDock(); 528 checkScreenshot("alertWithCustomContentTest" + s + "_" + c + "Test", scene); 529 Thread.sleep(DEFAULT_DELAY); 530 closeDialogWindowByClickingButton("OK"); 531 throwScreenshotError(); 532 } 533 } 534 } 535 536 @Test(timeout = 300000) 537 public void alertWithNullCustomContentTest() throws Throwable { 538 Wrap<? extends Node> button = parent.lookup(Button.class, new ByText<Button>(BUTTON_SHOW_EXP_TEXT)).wrap(); 539 Wrap<? extends Node> contentToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(TOGGLE_NOTHING_TEXT)).wrap(); 540 for (StageStyle s : StageStyle.values()) { 541 Wrap<? extends Node> styleToggleButton = parent.lookup(ToggleButton.class, new ByText<ToggleButton>(s.toString())).wrap(); 542 click(styleToggleButton, InputType.MOUSE); 543 click(contentToggleButton, InputType.MOUSE); 544 click(button, InputType.MOUSE); 545 closeDialogWindowByClickingButton("OK"); 546 } 547 } 548 549 protected void click(final Wrap<? extends Node> wrap, InputType ctrl) { 550 switch (ctrl) { 551 case MOUSE: 552 wrap.mouse().click(); 553 break; 554 case SPACE: 555 if (requestFocusByKeyboard(wrap)) { 556 wrap.keyboard().pushKey(KeyboardButtons.SPACE); 557 } 558 break; 559 case ENTER: 560 if (requestFocusByKeyboard(wrap)) { 561 wrap.keyboard().pushKey(KeyboardButtons.ENTER); 562 } 563 break; 564 } 565 } 566 567 protected void closeDialogWindowByClickingButton() { 568 SceneDock sd = new SceneDock(); 569 click(sd.asParent().lookup(Button.class).wrap(0), InputType.MOUSE); 570 } 571 572 protected void closeDialogWindowByClickingButton(String text) { 573 SceneDock sd = new SceneDock(); 574 click(sd.asParent().lookup(Button.class, new ByText<Button>(text)).wrap(), InputType.MOUSE); 575 } 576 577 protected void closeDialogWindowByClosingWindow() { 578 Application.invokeAndWait(() -> { 579 final Robot robot = Application.GetApplication().createRobot(); 580 Wrap<? extends com.sun.glass.ui.Window> dialogWindow = Root.ROOT.lookup(new ByWindowType(Window.class)).lookup(Scene.class).wrap(0); 581 robot.mouseMove(dialogWindow.getScreenBounds().x + dialogWindow.getScreenBounds().width - 2, dialogWindow.getScreenBounds().y - 20); 582 robot.mousePress(1); 583 robot.mouseRelease(1); 584 }); 585 } 586 587 protected void checkShowMastheadBox() { 588 Wrap<? extends Node> showMastheadCheckbox = parent.lookup(CheckBox.class, new ByID<CheckBox>(CHK_SHOW_MASTHEAD_ID)).wrap(); 589 click(showMastheadCheckbox, InputType.MOUSE); 590 } 591 592 protected void saveSceneImage(String fileName) { 593 Image sceneImage; 594 sceneImage = scene.getScreenImage(); 595 sceneImage.save(GoldenImageManager.getScreenshotPath(fileName)); 596 } 597 598 protected boolean requestFocusByKeyboard(final Wrap<? extends Node> wrap) { 599 int numberOfControls = parent.lookup(Node.class).size() + 1; 600 for (int i = 0; i < numberOfControls; ++i) { 601 if (new GetAction<Boolean>() { 602 603 @Override 604 public void run(Object... os) throws Exception { 605 setResult(wrap.getControl().isFocused()); 606 } 607 }.dispatch(Root.ROOT.getEnvironment())) { 608 return true; 609 } 610 scene.keyboard().pushKey(KeyboardButtons.TAB); 611 } 612 return false; 613 } 614 }