org.eclipse.che.selenium.intelligencecommand.CheckIntelligenceCommandFromToolbarTest.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.che.selenium.intelligencecommand.CheckIntelligenceCommandFromToolbarTest.java

Source

/*
 * Copyright (c) 2012-2017 Red Hat, Inc.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *   Red Hat, Inc. - initial API and implementation
 */
package org.eclipse.che.selenium.intelligencecommand;

import static org.eclipse.che.selenium.core.constant.TestMenuCommandsConstants.Workspace.CREATE_PROJECT;
import static org.eclipse.che.selenium.core.constant.TestMenuCommandsConstants.Workspace.WORKSPACE;
import static org.eclipse.che.selenium.core.constant.TestTimeoutsConstants.MULTIPLE;
import static org.eclipse.che.selenium.core.constant.TestWorkspaceConstants.RUNNING_WORKSPACE_MESS;

import com.google.inject.Inject;
import org.eclipse.che.commons.lang.NameGenerator;
import org.eclipse.che.selenium.core.SeleniumWebDriver;
import org.eclipse.che.selenium.core.workspace.TestWorkspace;
import org.eclipse.che.selenium.pageobject.Consoles;
import org.eclipse.che.selenium.pageobject.Ide;
import org.eclipse.che.selenium.pageobject.Menu;
import org.eclipse.che.selenium.pageobject.NotificationsPopupPanel;
import org.eclipse.che.selenium.pageobject.ProjectExplorer;
import org.eclipse.che.selenium.pageobject.Wizard;
import org.eclipse.che.selenium.pageobject.intelligent.CommandsToolbar;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

/** @author Musienko Maxim */
public class CheckIntelligenceCommandFromToolbarTest {

    private static final String PROJECT_NAME = NameGenerator.generate("project", 2);

    @Inject
    private TestWorkspace testWorkspace;
    @Inject
    private Ide ide;
    @Inject
    private ProjectExplorer projectExplorer;
    @Inject
    private Consoles consoles;
    @Inject
    private Menu menu;
    @Inject
    private Wizard wizard;
    @Inject
    private CommandsToolbar commandsToolbar;
    @Inject
    private SeleniumWebDriver seleniumWebDriver;
    @Inject
    private NotificationsPopupPanel notificationsPanel;

    @BeforeClass
    public void setUp() throws Exception {
        ide.open(testWorkspace);
    }

    @Test(priority = 1)
    public void launchClonedWepAppTest() throws Exception {
        String currentWindow = seleniumWebDriver.getWindowHandle();
        projectExplorer.waitProjectExplorer();
        menu.runCommand(WORKSPACE, CREATE_PROJECT);
        wizard.selectProjectAndCreate(Wizard.SamplesName.WEB_JAVA_SPRING, PROJECT_NAME);
        projectExplorer.waitItem(PROJECT_NAME);
        commandsToolbar.clickWithHoldAndLaunchCommandFromList(PROJECT_NAME + ": build and run");
        consoles.waitExpectedTextIntoConsole(" Server startup in");
        consoles.clickOnPreviewUrl();
        checkTestAppAndReturnToIde(currentWindow, "Enter your name:");
        consoles.waitExpectedTextIntoConsole(" Server startup in");
        seleniumWebDriver.navigate().refresh();
        notificationsPanel.waitExpectedMessageOnProgressPanelAndClosed(RUNNING_WORKSPACE_MESS);
        projectExplorer.waitProjectExplorer();
        consoles.clickOnPreviewUrl();
        checkTestAppAndReturnToIde(currentWindow, "Enter your name:");
    }

    @Test(priority = 2)
    public void checkButtonsOnToolbar() {
        projectExplorer.waitProjectExplorer();
        String currentWindow = seleniumWebDriver.getWindowHandle();
        commandsToolbar.clickExecStopBtn();
        consoles.clickOnPreviewUrl();
        checkTestAppAndReturnToIde(currentWindow, "This site cant be reached");
        commandsToolbar.clickExecRerunBtn();
        consoles.waitExpectedTextIntoConsole(" Server startup in");
        consoles.clickOnPreviewUrl();
        checkTestAppAndReturnToIde(currentWindow, "Enter your name:");
        Assert.assertTrue(commandsToolbar.getTimerValue().matches("\\d\\d:\\d\\d"));
        Assert.assertTrue(commandsToolbar.getNumOfProcessCounter().equals("#2"));
        commandsToolbar.clickOnPreviewCommandBtnAndSelectUrl("dev-machine:8080");
        checkTestAppAndReturnToIde(currentWindow, "Enter your name:");
        commandsToolbar.clickExecStopBtn();
        commandsToolbar.clickWithHoldAndLaunchDebuCmdFromList(PROJECT_NAME + ": debug");
        consoles.waitExpectedTextIntoConsole("Listening for transport dt_socket at address: 8000", 60);
        consoles.waitExpectedTextIntoConsole(" Server startup in", 30);
    }

    private void checkTestAppAndReturnToIde(String currentWindow, String expectedTextOnTestAppPage) {
        seleniumWebDriver.switchToNoneCurrentWindow(currentWindow);
        new WebDriverWait(seleniumWebDriver, MULTIPLE).until(
                ExpectedConditions.textToBePresentInElementLocated(By.tagName("body"), expectedTextOnTestAppPage));
        seleniumWebDriver.close();
        seleniumWebDriver.switchTo().window(currentWindow);
    }
}