blob: de1df6cc556337a83b055923fc846d28a9143519 [file] [log] [blame]
// Licensed 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.tapestry5.integration.app1
import org.openqa.selenium.By
import org.testng.annotations.Test
/**
* Tests for the client-side Alerts.
*
* @since 5.3
*/
class AlertsTests extends App1TestCase {
def CONTAINER = "[data-container-type=alerts]"
@Test
void traditional_update_and_remove() {
openLinks "Alerts Demo", "Reset Alerts Storage"
select "id=severity", "Warn"
select "id=duration", "Until Dismissed"
type "id=message", "trad warn until"
clickAndWait "//input[@value='Traditional Update']"
waitForCssSelectorToAppear "$CONTAINER .alert"
assertTextPresent "trad warn until"
clickAndWait BACK_TO_INDEX
waitForCssSelectorToAppear "$CONTAINER .alert"
assertTextPresent "trad warn until"
// Click the first and only dismiss icon
click "css=$CONTAINER button.close"
waitForAjaxRequestsToComplete()
// Check that the alert container is now empty
assertText "css=$CONTAINER", ""
// Now with markup
openLinks "Alerts Demo", "Reset Alerts Storage"
select "id=severity", "Warn"
select "id=duration", "Single"
check "id=markup"
type "id=message", "<a><span>Markup!</span></a>"
clickAndWait "//input[@value='Traditional Update']"
assert isElementPresent("//div[@class='alert alert-dismissable alert-warning']/a/span[text()='Markup!']")
}
@Test
void remove_alert_container_with_last_transient_alert() {
openLinks "Alerts Demo", "Reset Alerts Storage"
select "id=severity", "Warn"
select "id=duration", "Transient"
type "id=message", "trad warn transient"
clickAndWait "//input[@value='Traditional Update']"
waitForCssSelectorToAppear "$CONTAINER .alert"
assertTextPresent "trad warn transient"
// dismiss the first alert that indicates the submission type
webDriver.findElements(By.cssSelector(CONTAINER)).find{
it.text.contains('Traditional form submission')
}.findElement(By.cssSelector('button.close')).click()
// wait for the transient alert to be automatically removed
sleep 5000
// Check that the alert container is now empty
assertText "css=$CONTAINER", ""
}
@Test
void ajax_update_and_remove() {
openLinks "Alerts Demo", "Reset Alerts Storage"
def severitySelector = "css=#ajax select[name='severity_0']"
def durationSelector = "css=#ajax select[name='duration_0']"
def messageSelector = "css=#ajax input[name='message_0']"
def markupSelector = "css=#ajax input[name='markup_0']"
select severitySelector, "Error"
select durationSelector, "Until Dismissed"
type messageSelector, "ajax error until"
click "//input[@value='Ajax Update']"
waitForCssSelectorToAppear "$CONTAINER .alert"
assertTextPresent "ajax error until"
click "css=$CONTAINER [data-action='dismiss-all']"
sleep 100
// Check that the alert container is now empty
assertText "css=$CONTAINER", ""
// Now with markup
openLinks "Alerts Demo", "Reset Alerts Storage"
select severitySelector, "Warn"
select durationSelector, "Single"
check markupSelector
type messageSelector, "<a><span>Markup!</span></a>"
click "//input[@value='Ajax Update']"
waitForCssSelectorToAppear "$CONTAINER .alert"
assert isElementPresent("//div[@class='alert alert-dismissable alert-warning']/a/span[text()='Markup!']")
}
/** Disabled by HLS 7-oct-2011; there's a timing issue that makes it very fragile. */
@Test(enabled = false)
void ajax_update_with_redirect() {
openLinks "Alerts Demo", "Reset Alerts Storage"
select "css=#ajax select[name=\"severity\"]", "Error"
select "css=#ajax select[name=\"duration\"]", "Single"
type "css=#ajax input[name=\"message\"]", "ajax error single"
check "css=#ajax input[type='checkbox']"
click "//input[@value='Ajax Update']"
waitForAjaxRequestsToComplete()
waitForCSSSelectedElementToAppear "div.t-error"
assertText "css=div.t-error div.t-message-container", "ajax error single"
click "link=Dismiss all"
}
@Test
void check_informal_parameters() {
openLinks "Alerts Demo"
assertTrue isElementPresent("css=${CONTAINER}.alert-class")
}
}