package org.eclipse.linuxtools.docker.reddeer.utils; /******************************************************************************* * Copyright (c) 2017 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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 * * Contributor: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ import static org.junit.Assert.assertFalse; import org.jboss.reddeer.common.condition.AbstractWaitCondition; import org.jboss.reddeer.common.matcher.RegexMatcher; import org.jboss.reddeer.common.wait.WaitWhile; import org.jboss.reddeer.core.condition.JobIsRunning; import org.jboss.reddeer.core.exception.CoreLayerException; import org.jboss.reddeer.eclipse.ui.browser.BrowserEditor; import org.jboss.reddeer.eclipse.ui.browser.BrowserView; import org.jboss.reddeer.eclipse.ui.console.ConsoleView; /** * * Class is checking contents of browser. * * @author rhopp@redhat.com, jkopriva@redhat.com * */ public class BrowserContentsCheck { /** * * Close browser if it was opened. * */ protected static void closeBrowser() { try { BrowserEditor browser = new BrowserEditor(new RegexMatcher(".*")); while (browser != null) { browser.close(); try { browser = new BrowserEditor(new RegexMatcher(".*")); } catch (CoreLayerException ex) { // Browser editor is not opened browser = null; } } } catch (CoreLayerException ex) { return; } } /** * * Checks browser, if page is accessible and address is correct. * * @param browserEditor */ public static void checkBrowserForErrorPage(BrowserEditor browserEditor) { evaluateBrowserPage(browserEditor.getText()); } /** * * Checks browser, if page is accessible and address is correct. * * @param browserView * @param url */ public static void checkBrowserForErrorPage(BrowserView browserView, String url) { // Try to refresh page if it is not loaded. if (browserView.getText().contains("Unable") || browserView.getText().contains("404")) { if (url == null) { browserView.refreshPage(); } else { browserView.openPageURL(url); } } new WaitWhile(new JobIsRunning()); evaluateBrowserPage(browserView.getText()); } /** * * Evaluate page text, if it not empty or without error. * * @param browserPage */ private static void evaluateBrowserPage(String browserPage) { ConsoleView consoleView = new ConsoleView(); consoleView.open(); assertFalse( "Browser contains text 'Status 404'\n Console output:\n" + consoleView.getConsoleText() + System.getProperty("line.separator") + "Browser contents:" + browserPage, browserPage.contains("Status 404") || browserPage.contains("404 - Not Found")); assertFalse( "Browser contains text 'Error processing request'\n Console output:\n" + consoleView.getConsoleText() + System.getProperty("line.separator") + "Browser contents:" + browserPage, browserPage.contains("Error processing request")); assertFalse( "Browser contains text 'Forbidden'\n Console output:\n" + consoleView.getConsoleText() + System.getProperty("line.separator") + "Browser contents:" + browserPage, browserPage.contains("Forbidden")); } /** * * Wait condition if browser is empty. * */ class BrowserIsNotEmpty extends AbstractWaitCondition { BrowserEditor browser; public BrowserIsNotEmpty(BrowserEditor browser) { this.browser = browser; } public boolean test() { return !browser.getText().equals(""); } public String description() { return "Browser is empty!"; } } }