| /* |
| Licensed to the Apache Software Foundation (ASF) under one |
| or more contributor license agreements. See the NOTICE file |
| distributed with this work for additional information |
| regarding copyright ownership. The ASF licenses this file |
| to you under the Apache License, Version 2.0 (the |
| "License"); you may not use this file except in compliance |
| with the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, |
| software distributed under the License is distributed on an |
| "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations |
| under the License. |
| */ |
| package org.apache.wiki.pages.haddock; |
| |
| import org.apache.wiki.pages.Page; |
| import org.openqa.selenium.By; |
| |
| import com.codeborne.selenide.Condition; |
| import com.codeborne.selenide.Selenide; |
| import com.codeborne.selenide.SelenideElement; |
| |
| /** |
| * Actions available on the View page. |
| */ |
| public class ReadWikiPage implements HaddockPage { |
| |
| /** |
| * Open a given page for view. |
| * |
| * @param pageName Wiki page name to View. |
| * @return {@link ReadWikiPage} instance, to allow chaining of actions. |
| */ |
| public static ReadWikiPage open( final String pageName ) { |
| return Page.withUrl( Page.baseUrl() + "/Wiki.jsp?page=" + pageName ).openAs( new ReadWikiPage() ); |
| } |
| |
| /** |
| * Returns the authenticated user text. |
| * |
| * @return the authenticated user text. |
| */ |
| public String authenticatedText() { |
| return Selenide.$( By.className( "wikipage" ) ).text().trim(); |
| } |
| |
| /** |
| * Clicks on the login button. |
| * |
| * @return {@link LoginPage} instance, to allow chaining of actions. |
| */ |
| public LoginPage clickOnLogin() { |
| Selenide.$( By.className( "icon-signin" ) ).click(); |
| return new LoginPage(); |
| } |
| |
| /** |
| * Clicks on the show reader view link. |
| * |
| * @return {@link ReadWikiPage} instance, to allow chaining of actions. |
| */ |
| public ReadWikiPage clickOnShowReaderView() { |
| Selenide.$( By.linkText( "Show Reader View" ) ).click(); |
| return this; |
| } |
| |
| /** |
| * Hover's the user's icon, so the login area gets visible. |
| * |
| * @return {@link ReadWikiPage} instance, to allow chaining of actions. |
| */ |
| public ReadWikiPage hoverLoginArea() { |
| Selenide.$( By.className( "icon-user" ) ).hover(); |
| return this; |
| } |
| |
| /** |
| * Hover's the More tab, making its associated pane visible. |
| * |
| * @return {@link ReadWikiPage} instance, to allow chaining of actions. |
| */ |
| public ReadWikiPage hoverMoreArea() { |
| Selenide.$( By.id( "more" ) ).hover(); |
| return this; |
| } |
| |
| /** |
| * Clicks the edit link. |
| * |
| * @return {@link EditWikiPage} instance, to allow chaining of actions. |
| */ |
| public EditWikiPage editPage() { |
| Selenide.$( By.cssSelector( "li#edit a" ) ).waitUntil( Condition.visible, 1_000L ).click(); |
| return new EditWikiPage(); |
| } |
| |
| /** |
| * Searches for a given text. |
| * |
| * @param text text to search for. |
| * @return {@link SearchResultsPage} instance, to allow chaining of actions. |
| */ |
| public SearchResultsPage searchFor( final String text ) { |
| Selenide.$( By.id( "searchForm" ) ).hover(); |
| Selenide.$( By.id( "query" ) ).click(); |
| Selenide.$( By.id( "query" ) ).val( text ); |
| Selenide.$( By.id( "searchSubmit" ) ).click(); |
| return new SearchResultsPage(); |
| } |
| |
| /** |
| * Logs the user out. |
| * |
| * @return {@link ReadWikiPage} instance, to allow chaining of actions. |
| */ |
| public ReadWikiPage logout() { |
| Selenide.$( By.linkText( "Log out" ) ).click(); |
| Selenide.$( By.className( "btn-success" ) ).waitUntil( Condition.visible, 1_000L ).click(); |
| return this; |
| } |
| |
| /** |
| * Navigates to a given view page. |
| * |
| * @param wikiPageName wikipage name to navigate to. |
| * @return {@link ReadWikiPage} instance, to allow chaining of actions. |
| */ |
| public ReadWikiPage navigateTo( final String wikiPageName ) { |
| Selenide.$( By.linkText( wikiPageName ) ).click(); |
| return this; |
| } |
| |
| /** |
| * Returns the sidebar element. |
| * |
| * @return the sidebar element. |
| */ |
| public SelenideElement sidebar() { |
| return Selenide.$( By.className( "sidebar" ) ); |
| } |
| |
| } |