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 }