Lithium-WebDriver
view release on metacpan or search on metacpan
t/12-alert-dialogs.t view on Meta::CPAN
#!/usr/bin/perl
use strict;
use warnings;
use Test::Builder::Tester;
use t::common;
my $site = start_depends;
# Connect to the test site and click click on the popup button in the footer
# this will manually click on buttons and ensure visibility and invisibility
# It does not create generic functions to handle "popups"
my $DRIVER = Lithium::WebDriver->new(%{driver_conf(site => $site)});
$DRIVER->connect;
$DRIVER->maximize;
# set up variables to enable easier cross-browser testing;
my $ok = "ok";
my $nok = "not ok";
my $confirm_alert = "OK!";
my $cancel_alert = "Cancel!";
if (is_phantom) {
note "Testing under phantomjs, ensuring oks are now not oks, as phantom doesn't support modals";
$ok = $nok;
$confirm_alert = $cancel_alert;
}
### NOTE: None of these test blocks can be converted to subtests, as that will interfere
### with Test::Builder::Tester's testing of the tests.
{
# Use default message on confirm_alert
$DRIVER->open(url => "/");
is($DRIVER->text("p#ok_cancel"), "", "No alert confirm/cancel state at initialization");
$DRIVER->click(selector => "button.popup.confirm");
test_out "$ok 1 - Confirming alertbox";
ok($DRIVER->confirm, "Confirming alertbox");
test_test name => "Default test name for confirm_alert comes through",
skip_err => 1;
is($DRIVER->text("p#ok_cancel"), $confirm_alert, "Confirm state shown after confirming");
# Now with custom message for confirm_alert
$DRIVER->open(url => "/");
is($DRIVER->text("p#ok_cancel"), "", "No alert confirm/cancel state at initialization");
$DRIVER->click(selector => "button.popup.confirm");
test_out "$ok 1 - I can confirm";
ok($DRIVER->confirm, "I can confirm");
test_test name => "Test name for confirm_alert is correctly overridden",
skip_err => 1;
is($DRIVER->text("p#ok_cancel"), $confirm_alert, "Confirm state shown after confirming");
# Make sure confirming with lack of alert dialog works
$DRIVER->open(url => "/");
is($DRIVER->text("p#ok_cancel"), "", "No alert confirm/cancel state at initialization");
test_out "$nok 1 - There is no alert to confirm";
test_fail(+1);
ok($DRIVER->confirm, "There is no alert to confirm");
test_test name => "Properly failed the confirm_alert test if no alert available",
skip_err => 1;
is($DRIVER->text("p#ok_cancel"), "", "No alert confirm/cancel state after testing");
}
{
# Use default message on cancel_alert
$DRIVER->open(url => "/");
is($DRIVER->text("p#ok_cancel"), "", "No alert confirm/cancel state at initialization");
$DRIVER->click(selector => "button.popup.confirm");
test_out "$ok 1 - Canceling alertbox";
ok($DRIVER->cancel, "Canceling alertbox");
test_test name => "Default test name for cancel_alert comes through",
skip_err => 1;
is($DRIVER->text("p#ok_cancel"), $cancel_alert, "Cancel state shown after canceling");
# Now with custom message for cancel_alert
$DRIVER->open(url => "/");
is($DRIVER->text("p#ok_cancel"), "", "No alert confirm/cancel state at initialization");
$DRIVER->click(selector => "button.popup.confirm");
test_out "$ok 1 - I can cancel";
ok($DRIVER->cancel, "I can cancel");
test_test name => "Test name for cancel_alert is correctly overridden",
skip_err => 1;
is($DRIVER->text("p#ok_cancel"), $cancel_alert, "Cancel state shown after canceling");
# Make sure confirming with lack of alert dialog works
$DRIVER->open(url => "/");
is($DRIVER->text("p#ok_cancel"), "", "No alert confirm/cancel state at initialization");
test_out "$nok 1 - There is no alert to cancel";
test_fail +1;
ok($DRIVER->confirm, "There is no alert to cancel");
test_test name => "Properly failed the cancel_alert test if no alert available",
skip_err => 1;
is($DRIVER->text("p#ok_cancel"), "", "No alert confirm/cancel state after testing");
}
{
# Default message for alert_text
my $expect = is_phantom() ? undef : "I am an alert box!";
$DRIVER->open(url => "/");
$DRIVER->click(selector => "button.popup");
test_out "$ok 1 - Retrieving alert text";
my $txt = $DRIVER->alert_text();
ok($DRIVER->alert_text, "Retrieving alert text");
test_test name => "Default Test Name for alert_text comes through",
skip_err => 1;
is $txt, $expect, "Alert text returns correct content";
# now with custom message for alert_text
test_out "$ok 1 - Custom alert msg";
ok($DRIVER->alert_text("Custom alert msg"), "Custom alert msg");
test_test name => "Test Name for alert_text is correctly overridden",
skip_err => 1;
test_out "$ok 1 - Confirm popup";
ok($DRIVER->confirm, "Confirm popup");
test_test name => "Closing alert",
skip_err =>1;
# Make sure alert_text fails on lack of alert dialog
$DRIVER->open(url => "/");
test_out "$nok 1 - Retrieving alert text";
test_fail +1;
ok($DRIVER->alert_text, "Retrieving alert text");
test_test name => "Properly failed the alert_text call if no alert available",
skip_err => 1;
}
{
# Default message for type_alert
my $expect = is_phantom() ? "" : "Hello first_name! How are you today?";
$DRIVER->open(url => "/");
is $DRIVER->text('p#popup_input'), "",
"type_alert feedback text is empty on test initialization";
$DRIVER->click(selector => "button.popup.input");
test_out "$ok 1 - Setting alert text", "$ok 2 - Confirming alertbox";
ok($DRIVER->alert_text("first_name"), "Setting alert text");
ok($DRIVER->confirm, "Confirming alertbox");
test_test name => "Default Test Name for type_alert comes through",
skip_err => 1;
is $DRIVER->text('p#popup_input'), $expect,
"type_alert input was handled correctly";
# Custom message for type_alert
$expect = is_phantom() ? "" : "Hello second_name! How are you today?";
$DRIVER->open(url => "/");
is $DRIVER->text('p#popup_input'), "",
"type_alert feedback text is empty on test initialization";
$DRIVER->click(selector => "button.popup.input");
test_out "$ok 1 - Cutom type message", "$ok 2 - Confirming alertbox";
ok($DRIVER->alert_text("second_name"), "Cutom type message");
ok($DRIVER->confirm, "Confirming alertbox");
test_test name => "Test Name for type_alert is correctly overridden",
skip_err => 1;
is $DRIVER->text('p#popup_input'), $expect,
"type_alert input was handled correctly with custom message";
# pass undef into type_alert
$expect = is_phantom() ? "" : "Hello ! How are you today?";
$DRIVER->open(url => "/");
is $DRIVER->text('p#popup_input'), "",
"type_alert feedback text is empty on test initialization";
$DRIVER->click(selector => "button.popup.input");
test_out "$ok 1 - Setting alert text", "$ok 2 - Confirming alertbox";
ok($DRIVER->alert_text(""), "Setting alert text");
ok($DRIVER->confirm, "Confirming alertbox");
test_test name => "type_alert handles undef input",
skip_err => 1;
is $DRIVER->text('p#popup_input'), $expect,
"type_alert with undef input sets properly";
# pass empty string into type_alert
$DRIVER->open(url => "/");
is $DRIVER->text('p#popup_input'), "",
"type_alert feedback text is empty on test initialization";
$DRIVER->click(selector => "button.popup.input");
test_out "$ok 1 - Setting alert text", "$ok 2 - Confirming alertbox";
ok($DRIVER->alert_text(""), "Setting alert text");
ok($DRIVER->confirm, "Confirming alertbox");
test_test name => "type_alert handles empty string input",
skip_err => 1;
is $DRIVER->text('p#popup_input'), $expect,
"type_alert with empty string sets properly";
$DRIVER->open(url => "/");
is $DRIVER->text('p#popup_input'), "",
"type_alert feedback text is empty on test initialization";
test_out "$nok 1 - Setting alert text";
test_fail +1;
ok($DRIVER->alert_text("fail"), "Setting alert text");
test_test name => "type_alert properly failed when no alert dialog was present",
skip_err => 1;
is $DRIVER->text('p#popup_input'), "",
"type_alert feedback text is empty after testing";
}
$DRIVER->disconnect;
stop_depends;
done_testing;
( run in 0.667 second using v1.01-cache-2.11-cpan-364913b4093 )