Change-Id: I5c2133598196a620d4e8a6376beb800cdde81f3cchanges/52/2552/7
parent
bd9a184c56
commit
5879cfe0e1
@ -0,0 +1,46 @@
|
||||
package Selenium::Remote::Driver::Extensions;
|
||||
use warnings;
|
||||
use strict;
|
||||
use Moo;
|
||||
use MooseX::Method::Signatures;
|
||||
extends 'Selenium::Remote::Driver';
|
||||
|
||||
method select_if_unselected(Str $query, Str $scheme = "xpath") {
|
||||
my $elem = $self->find_element($query, $scheme);
|
||||
return 0 unless $elem;
|
||||
return 0 unless $elem->is_displayed;
|
||||
if (! $elem->is_selected() ) {
|
||||
$elem->click;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
method find_text(Str $text, Str $scheme = "xpath") {
|
||||
return $self->find_element("//*[contains(text(),\"$text\")]", $scheme);
|
||||
}
|
||||
|
||||
method save_screenshot() {
|
||||
use MIME::Base64;
|
||||
open(my $FH,'>','screenshot.png');
|
||||
binmode $FH;
|
||||
my $png_base64 = $self->screenshot();
|
||||
print $FH decode_base64($png_base64);
|
||||
close $FH;
|
||||
}
|
||||
|
||||
method fill_element(Str $query, Str $scheme, Str $filltext) {
|
||||
my $elem = $self->find_element($query, $scheme);
|
||||
return 0 unless $elem;
|
||||
return 0 unless $elem->is_displayed;
|
||||
$elem->clear();
|
||||
$elem->send_keys($filltext);
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub browser_name_in {
|
||||
my ($self, @names) = @_;
|
||||
my $browser_name = $self->get_capabilities->{browserName};
|
||||
return scalar grep {/^$browser_name$/} @names;
|
||||
}
|
||||
|
||||
1;
|
||||
@ -1,59 +0,0 @@
|
||||
package Test::WebDriver::Sipwise;
|
||||
use warnings;
|
||||
use strict;
|
||||
use Moo;
|
||||
use MooseX::Method::Signatures;
|
||||
extends 'Test::WebDriver';
|
||||
|
||||
method find(Str $scheme, Str $query) {
|
||||
$self->find_element($query, $scheme);
|
||||
}
|
||||
|
||||
method findclick(Str $scheme, Str $query) {
|
||||
my $elem = $self->find($scheme, $query);
|
||||
return 0 unless $elem;
|
||||
return 0 unless $elem->is_displayed;
|
||||
$elem->click;
|
||||
return 1;
|
||||
}
|
||||
|
||||
method select_if_unselected(Str $scheme, Str $query) {
|
||||
my $elem = $self->find($scheme, $query);
|
||||
return 0 unless $elem;
|
||||
return 0 unless $elem->is_displayed;
|
||||
if (! $elem->is_selected() ) {
|
||||
$elem->click;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
method findtext(Str $text, Any $ignore) {
|
||||
return $self->find(xpath => "//*[contains(text(),\"$text\")]");
|
||||
}
|
||||
|
||||
method save_screenshot() {
|
||||
use MIME::Base64;
|
||||
open(my $FH,'>','screenshot.png');
|
||||
binmode $FH;
|
||||
my $png_base64 = $self->screenshot();
|
||||
print $FH decode_base64($png_base64);
|
||||
close $FH;
|
||||
}
|
||||
|
||||
method fill_element(ArrayRef $options, Any $ignore) {
|
||||
my ($scheme, $query, $filltext) = @$options;
|
||||
my $elem = $self->find($scheme => $query);
|
||||
return 0 unless $elem;
|
||||
return 0 unless $elem->is_displayed;
|
||||
$elem->clear;
|
||||
$elem->send_keys($filltext);
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub browser_name_in {
|
||||
my ($self, @names) = @_;
|
||||
my $browser_name = $self->get_capabilities->{browserName};
|
||||
return scalar grep {/^$browser_name$/} @names;
|
||||
}
|
||||
|
||||
1;
|
||||
@ -1,22 +1,31 @@
|
||||
use Sipwise::Base;
|
||||
use lib 't/lib';
|
||||
use Test::More import => [qw(done_testing is diag)];
|
||||
use Test::WebDriver::Sipwise qw();
|
||||
use Selenium::Remote::Driver::Extensions qw();
|
||||
|
||||
my $browsername = $ENV{BROWSER_NAME} || ""; #possible values: htmlunit, chrome
|
||||
my $d = Test::WebDriver::Sipwise->new (browser_name => $browsername,
|
||||
'proxy' => {'proxyType' => 'system'});
|
||||
diag("Init");
|
||||
my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000';
|
||||
$d->get_ok("$uri/logout"); #make sure we are logged out
|
||||
$d->get_ok("$uri/login");
|
||||
my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome
|
||||
my $d = Selenium::Remote::Driver::Extensions->new (
|
||||
'browser_name' => $browsername,
|
||||
'proxy' => {'proxyType' => 'system'} );
|
||||
|
||||
diag("Loading login page (logout first)");
|
||||
$d->set_window_size(1024,1280) if ($browsername ne "htmlunit");
|
||||
$d->get("$uri/logout"); # make sure we are logged out
|
||||
$d->get("$uri/login");
|
||||
$d->set_implicit_wait_timeout(10000);
|
||||
$d->default_finder('xpath');
|
||||
|
||||
diag("Do Admin Login");
|
||||
$d->findtext_ok('Admin Sign In');
|
||||
$d->find(name => 'username')->send_keys('administrator');
|
||||
$d->find(name => 'password')->send_keys('administrator');
|
||||
$d->findclick_ok(name => 'submit');
|
||||
$d->find_text("Admin Sign In");
|
||||
is($d->get_title, '');
|
||||
$d->find_element('username', name)->send_keys('administrator');
|
||||
$d->find_element('password', name)->send_keys('administrator');
|
||||
$d->find_element('submit', name)->click();
|
||||
|
||||
$d->title_is('Dashboard');
|
||||
diag("Checking Admin interface");
|
||||
is($d->get_title, 'Dashboard');
|
||||
is($d->find_element('//*[@id="masthead"]//h2','xpath')->get_text(), "Dashboard");
|
||||
|
||||
diag("Done: admin-login.t");
|
||||
done_testing;
|
||||
|
||||
@ -1,169 +1,176 @@
|
||||
use Sipwise::Base;
|
||||
use lib 't/lib';
|
||||
use Test::More import => [qw(done_testing is ok diag todo_skip)];
|
||||
use Test::WebDriver::Sipwise qw();
|
||||
use Selenium::Remote::Driver::Extensions qw();
|
||||
|
||||
my $browsername = $ENV{BROWSER_NAME} || ""; #possible values: htmlunit, chrome
|
||||
my $d = Test::WebDriver::Sipwise->new (browser_name => $browsername,
|
||||
'proxy' => {'proxyType' => 'system'});
|
||||
$d->set_window_size(1024,1280) if ($browsername ne "htmlunit");
|
||||
diag("Init");
|
||||
my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000';
|
||||
$d->get_ok("$uri/logout"); #make sure we are logged out
|
||||
$d->get_ok("$uri/login");
|
||||
my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome
|
||||
my $d = Selenium::Remote::Driver::Extensions->new (
|
||||
'browser_name' => $browsername,
|
||||
'proxy' => {'proxyType' => 'system'} );
|
||||
|
||||
diag("Loading login page (logout first)");
|
||||
$d->set_window_size(1024,1280) if ($browsername ne "htmlunit");
|
||||
$d->get("$uri/logout"); # make sure we are logged out
|
||||
$d->get("$uri/login");
|
||||
$d->set_implicit_wait_timeout(10000);
|
||||
$d->default_finder('xpath');
|
||||
|
||||
diag("Do Admin Login");
|
||||
$d->findtext_ok('Admin Sign In');
|
||||
$d->find(name => 'username')->send_keys('administrator');
|
||||
$d->find(name => 'password')->send_keys('administrator');
|
||||
$d->findclick_ok(name => 'submit');
|
||||
|
||||
$d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Dashboard")]');
|
||||
$d->find_text("Admin Sign In");
|
||||
is($d->get_title, '');
|
||||
$d->find_element('username', name)->send_keys('administrator');
|
||||
$d->find_element('password', name)->send_keys('administrator');
|
||||
$d->find_element('submit', name)->click();
|
||||
is($d->find_element('//*[@id="masthead"]//h2')->get_text(), "Dashboard");
|
||||
|
||||
diag("Go to Billing page");
|
||||
$d->findclick_ok(xpath => '//*[@id="main-nav"]//*[contains(text(),"Settings")]');
|
||||
$d->find_ok(xpath => '//a[contains(@href,"/domain")]');
|
||||
$d->findclick_ok(link_text => "Billing");
|
||||
$d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click();
|
||||
$d->find_element('//a[contains(@href,"/domain")]');
|
||||
$d->find_element("Billing", link_text)->click();
|
||||
|
||||
diag("Create a billing profile");
|
||||
$d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Billing Profiles")]');
|
||||
$d->findclick_ok(link_text => 'Create Billing Profile');
|
||||
$d->find(id => 'name')->send_keys('mytestprofile');
|
||||
$d->fill_element_ok(['name', 'handle', 'mytestprofile']);
|
||||
$d->find_ok(id => 'fraud_interval_lock');
|
||||
$d->findclick_ok(xpath => '//select[@id="fraud_interval_lock"]/option[contains(text(),"foreign calls")]');
|
||||
$d->findclick_ok(xpath => '//div[contains(@class,modal-body)]//table[@id="reselleridtable"]/tbody/tr[1]/td//input[@type="checkbox"]');
|
||||
|
||||
$d->findclick_ok(xpath => '//div[contains(@class,"modal")]//input[@type="submit"]');
|
||||
$d->find_element('//*[@id="masthead"]//h2[contains(text(),"Billing Profiles")]')->click();
|
||||
$d->find_element('Create Billing Profile', link_text)->click();
|
||||
$d->find_element('name', id)->send_keys('mytestprofile');
|
||||
$d->fill_element('handle', name, 'mytestprofile');
|
||||
$d->find_element('fraud_interval_lock', id);
|
||||
$d->find_element('//select[@id="fraud_interval_lock"]/option[contains(text(),"foreign calls")]')->click();
|
||||
$d->find_element('//div[contains(@class,modal-body)]//table[@id="reselleridtable"]/tbody/tr[1]/td//input[@type="checkbox"]')->click();
|
||||
$d->find_element('//div[contains(@class,"modal")]//input[@type="submit"]')->click();
|
||||
|
||||
diag("Search nonexisting billing profile");
|
||||
my $searchfield = $d->find(css => '#billing_profile_table_filter label input');
|
||||
my $searchfield = $d->find_element('#billing_profile_table_filter label input', css);
|
||||
ok($searchfield);
|
||||
$searchfield->send_keys('donotfindme');
|
||||
|
||||
diag("Verify that nothing is shown");
|
||||
my $elem = $d->find(css => '#billing_profile_table td.dataTables_empty');
|
||||
my $elem = $d->find_element('#billing_profile_table td.dataTables_empty', css);
|
||||
ok($elem);
|
||||
is($elem->get_text,'No matching records found');
|
||||
is($elem->get_text, 'No matching records found');
|
||||
|
||||
diag('Search for "mytestprofile" in billing profile');
|
||||
$searchfield->clear();
|
||||
$searchfield->send_keys('mytestprofile');
|
||||
$d->find_ok(css => '#billing_profile_table tr.sw_action_row');
|
||||
is($d->find(xpath => '//table[@id="billing_profile_table"]//tr[1]/td[2]')->get_text,'mytestprofile');
|
||||
#sleep 1;
|
||||
#$d->find_element('#billing_profile_table tr.sw_action_row', css);
|
||||
ok($d->find_element('//table[@id="billing_profile_table"]//tr[1]/td[2][contains(text(),"mytestprofile")]'));
|
||||
|
||||
diag("Open edit dialog for mytestprofile");
|
||||
my $row = $d->find(xpath => '//table/tbody/tr/td[contains(text(), "mytestprofile")]/..');
|
||||
my $row = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestprofile")]/..');
|
||||
ok($row);
|
||||
my $edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Edit")]');
|
||||
ok($edit_link);
|
||||
$d->move_to(element => $row);
|
||||
$edit_link->click;
|
||||
$edit_link->click();
|
||||
|
||||
diag("Edit mytestprofile");
|
||||
$elem = $d->find(id => 'name');
|
||||
$elem = $d->find_element('name', id);
|
||||
ok($elem);
|
||||
is($elem->get_value, "mytestprofile");
|
||||
$d->fill_element_ok(['id', 'interval_charge', '3.2']);
|
||||
$d->findclick_ok(id => 'save');
|
||||
$d->fill_element('interval_charge', id, '3.2');
|
||||
$d->find_element('save', id)->click();
|
||||
|
||||
diag('Open "Fees" for mytestprofile');
|
||||
$row = $d->find(xpath => '//table/tbody/tr/td[contains(text(), "mytestprofile")]/..');
|
||||
$row = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestprofile")]/..');
|
||||
ok($row);
|
||||
$edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Fees")]');
|
||||
ok($edit_link);
|
||||
$d->move_to(element => $row);
|
||||
$edit_link->click;
|
||||
$d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Billing Fees")]');
|
||||
$edit_link->click();
|
||||
$d->find_element('//*[@id="masthead"]//h2[contains(text(),"Billing Fees")]');
|
||||
|
||||
diag("Create a billing fee");
|
||||
$d->findclick_ok(link_text => 'Create Fee Entry');
|
||||
$d->findclick_ok(xpath => '//div[contains(@class,"modal")]//input[@value="Create Zone"]');
|
||||
$d->find_element('Create Fee Entry', link_text)->click();
|
||||
$d->find_element('//div[contains(@class,"modal")]//input[@value="Create Zone"]')->click();
|
||||
diag("Create a billing zone (redirect from previous form)");
|
||||
$d->fill_element_ok([name => 'zone', 'testingzone']);
|
||||
$d->fill_element_ok([name => 'detail', 'testingdetail']);
|
||||
$d->findclick_ok(name => 'save');
|
||||
$d->fill_element('zone', name, 'testingzone');
|
||||
$d->fill_element('detail', name, 'testingdetail');
|
||||
$d->find_element('save', name)->click();
|
||||
diag("Back to orignial form (create billing fees)");
|
||||
#sleep 2; # give ajax time to load
|
||||
$d->select_if_unselected_ok(xpath => '//div[contains(@class,"modal")]//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingzone")]/..//input[@type="checkbox"]');
|
||||
$d->fill_element_ok([id => 'source', '.*']);
|
||||
$d->fill_element_ok([name => 'destination', '.+']);
|
||||
$d->findclick_ok(id => 'save');
|
||||
$d->select_if_unselected('//div[contains(@class,"modal")]//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingzone")]/..//input[@type="checkbox"]');
|
||||
$d->fill_element('source', id, '.*');
|
||||
$d->fill_element('destination', name, '.+');
|
||||
$d->find_element('save', id)->click();
|
||||
|
||||
diag("Delete billing fee");
|
||||
$d->find_ok(xpath => '//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingdetail")]/..//a[contains(@class,"btn-primary") and contains(text(),"Edit")]');
|
||||
$row = $d->find(xpath => '//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingdetail")]/..');
|
||||
$d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingdetail")]/..//a[contains(@class,"btn-primary") and contains(text(),"Edit")]');
|
||||
$row = $d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingdetail")]/..');
|
||||
ok($row);
|
||||
ok(true, "test1");
|
||||
$d->move_to(element => $row);
|
||||
$d->findclick_ok(xpath => '//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingdetail")]/..//a[contains(@class,"btn-secondary") and contains(text(),"Delete")]');
|
||||
$d->findtext_ok("Are you sure?");
|
||||
$d->findclick_ok(id => 'dataConfirmOK');
|
||||
ok(true, "test2");
|
||||
$d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingdetail")]/..//a[contains(@class,"btn-secondary") and contains(text(),"Delete")]')->click();
|
||||
ok(true, "test3");
|
||||
$d->find_text("Are you sure?");
|
||||
$d->find_element('dataConfirmOK', id)->click();
|
||||
diag('skip was here');
|
||||
$d->findtext_ok("successfully deleted");
|
||||
$d->find_text("successfully deleted");
|
||||
|
||||
diag("Click Edit Zones");
|
||||
$d->findclick_ok(link_text => "Edit Zones");
|
||||
$d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Billing Zones")]');
|
||||
$d->find_element("Edit Zones", link_text)->click();
|
||||
ok($d->find_element('//*[@id="masthead"]//h2[contains(text(),"Billing Zones")]'));
|
||||
|
||||
diag("Delete testingzone");
|
||||
$d->fill_element_ok([xpath => '//div[contains(@class, "dataTables_filter")]//input', 'thisshouldnotexist']);
|
||||
$d->find_ok(css => '#billing_zone_table tr > td.dataTables_empty');
|
||||
$d->fill_element_ok([xpath => '//div[contains(@class, "dataTables_filter")]//input', 'testingdetail']);
|
||||
$row = $d->find(xpath => '//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingzone")]/..');
|
||||
$d->fill_element('//div[contains(@class, "dataTables_filter")]//input', xpath, 'thisshouldnotexist');
|
||||
$d->find_element('#billing_zone_table tr > td.dataTables_empty', css);
|
||||
$d->fill_element('//div[contains(@class, "dataTables_filter")]//input', xpath, 'testingdetail');
|
||||
$row = $d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingzone")]/..');
|
||||
ok($row);
|
||||
$d->move_to(element => $row);
|
||||
$d->findclick_ok(xpath => '//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingzone")]/..//a[contains(text(),"Delete")]');
|
||||
$d->findtext_ok("Are you sure?");
|
||||
$d->findclick_ok(id => 'dataConfirmOK');
|
||||
$d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingzone")]/..//a[contains(text(),"Delete")]')->click();
|
||||
$d->find_text("Are you sure?");
|
||||
$d->find_element('dataConfirmOK', id)->click();
|
||||
|
||||
diag("Go to Billing page (again)");
|
||||
$d->findclick_ok(xpath => '//*[@id="main-nav"]//*[contains(text(),"Settings")]');
|
||||
$d->find_ok(xpath => '//a[contains(@href,"/domain")]');
|
||||
$d->findclick_ok(link_text => "Billing");
|
||||
$d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click();
|
||||
ok($d->find_element('//a[contains(@href,"/domain")]'));
|
||||
$d->find_element("Billing", link_text)->click();
|
||||
|
||||
diag('Open "Edit Peak Times" for mytestprofile');
|
||||
$row = $d->find(xpath => '//table/tbody/tr/td[contains(text(), "mytestprofile")]/..');
|
||||
$row = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestprofile")]/..');
|
||||
ok($row);
|
||||
$edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Peaktimes")]');
|
||||
ok($edit_link);
|
||||
$d->move_to(element => $row);
|
||||
$edit_link->click;
|
||||
$d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"times for mytestprofile")]');
|
||||
$edit_link->click();
|
||||
ok($d->find_element('//*[@id="masthead"]//h2[contains(text(),"times for mytestprofile")]'));
|
||||
|
||||
diag("Edit Wednesday");
|
||||
$row = $d->find(xpath => '//table//td[contains(text(),"Wednesday")]');
|
||||
$row = $d->find_element('//table//td[contains(text(),"Wednesday")]');
|
||||
ok($row);
|
||||
$d->move_to(element => ($d->find(xpath => '//h3[contains(text(),"Weekdays")]')));
|
||||
$d->move_to(element => ($d->find_element('//h3[contains(text(),"Weekdays")]')));
|
||||
sleep 2 if ($d->browser_name_in("firefox", "htmlunit"));
|
||||
$d->move_to(element => $row);
|
||||
$d->findclick_ok(xpath => '//table//td[contains(text(),"Wednesday")]/..//a[text()[contains(.,"Edit")]]');
|
||||
$d->findtext_ok("Edit Wednesday");
|
||||
$d->find_element('//table//td[contains(text(),"Wednesday")]/..//a[text()[contains(.,"Edit")]]')->click();
|
||||
$d->find_text("Edit Wednesday");
|
||||
|
||||
diag("add/delete a time def to Wednesday");
|
||||
$d->fill_element_ok([name => 'start', "03:14:15"]);
|
||||
$d->fill_element_ok([name => 'end', "13:37:00"]);
|
||||
$d->findclick_ok(name => 'add');
|
||||
$d->findclick_ok(xpath => '//div[contains(@class,"modal")]//i[@class="icon-trash"]/..');
|
||||
$d->fill_element('start', name, "03:14:15");
|
||||
$d->fill_element('end', name, "13:37:00");
|
||||
$d->find_element('add', name)->click();
|
||||
$d->find_element('//div[contains(@class,"modal")]//i[@class="icon-trash"]/..')->click();
|
||||
|
||||
diag('skip was here');
|
||||
$d->findclick_ok(id => 'mod_close');
|
||||
$d->find_element('mod_close', id)->click();
|
||||
|
||||
diag("Create a Date Definition");
|
||||
$d->findclick_ok(link_text => 'Create Special Off-Peak Date');
|
||||
$d->fill_element_ok([name => 'start', "2008-02-28 03:14:15"]);
|
||||
$d->fill_element_ok([name => 'end', "2008-02-28 13:37:00"]);
|
||||
$d->findclick_ok(name => 'save');
|
||||
$d->find_element('Create Special Off-Peak Date', link_text)->click();
|
||||
$d->fill_element('start', name, "2008-02-28 03:14:15");
|
||||
$d->fill_element('end', name, "2008-02-28 13:37:00");
|
||||
$d->find_element('save', name)->click();
|
||||
|
||||
diag("Find/delete my created date definition");
|
||||
$row = $d->find(xpath => '//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"2008-02-28")]/..');
|
||||
$row = $d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"2008-02-28")]/..');
|
||||
ok($row);
|
||||
$d->move_to(element => $row);
|
||||
$edit_link = $d->find_child_element($row, './/a[contains(@class,"btn-secondary")]');
|
||||
ok($edit_link);
|
||||
sleep 2 if ($browsername eq "htmlunit");
|
||||
$edit_link->click;
|
||||
$d->findtext_ok("Are you sure?");
|
||||
$d->findclick_ok(id => 'dataConfirmOK');
|
||||
$edit_link->click();
|
||||
$d->find_text("Are you sure?");
|
||||
$d->find_element('dataConfirmOK', id)->click();
|
||||
|
||||
done_testing;
|
||||
# vim: filetype=perl
|
||||
|
||||
@ -1,109 +1,113 @@
|
||||
use Sipwise::Base;
|
||||
use lib 't/lib';
|
||||
use Test::More import => [qw(done_testing is ok diag todo_skip)];
|
||||
use Test::WebDriver::Sipwise qw();
|
||||
use Selenium::Remote::Driver::Extensions qw();
|
||||
|
||||
my $browsername = $ENV{BROWSER_NAME} || ""; #possible values: htmlunit, chrome
|
||||
my $d = Test::WebDriver::Sipwise->new (browser_name => $browsername,
|
||||
'proxy' => {'proxyType' => 'system'});
|
||||
$d->set_window_size(1024,1280) if ($browsername ne "htmlunit");
|
||||
diag("Init");
|
||||
my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000';
|
||||
$d->get_ok("$uri/logout"); #make sure we are logged out
|
||||
$d->get_ok("$uri/login");
|
||||
my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome
|
||||
my $d = Selenium::Remote::Driver::Extensions->new (
|
||||
'browser_name' => $browsername,
|
||||
'proxy' => {'proxyType' => 'system'} );
|
||||
|
||||
diag("Loading login page (logout first)");
|
||||
$d->set_window_size(1024,1280) if ($browsername ne "htmlunit");
|
||||
$d->get("$uri/logout"); # make sure we are logged out
|
||||
$d->get("$uri/login");
|
||||
$d->set_implicit_wait_timeout(10000);
|
||||
$d->default_finder('xpath');
|
||||
|
||||
diag("Do Admin Login");
|
||||
$d->findtext_ok('Admin Sign In');
|
||||
$d->find(name => 'username')->send_keys('administrator');
|
||||
$d->find(name => 'password')->send_keys('administrator');
|
||||
$d->findclick_ok(name => 'submit');
|
||||
$d->find_text("Admin Sign In");
|
||||
is($d->get_title, '');
|
||||
$d->find_element('username', name)->send_keys('administrator');
|
||||
$d->find_element('password', name)->send_keys('administrator');
|
||||
$d->find_element('submit', name)->click();
|
||||
is($d->find_element('//*[@id="masthead"]//h2')->get_text(), "Dashboard");
|
||||
|
||||
my @chars = ("A".."Z", "a".."z");
|
||||
my $rnd_id;
|
||||
$rnd_id .= $chars[rand @chars] for 1..8;
|
||||
|
||||
$d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Dashboard")]');
|
||||
|
||||
diag("Go to Customers page");
|
||||
$d->findclick_ok(xpath => '//*[@id="main-nav"]//*[contains(text(),"Settings")]');
|
||||
$d->findclick_ok(link_text => "Customers");
|
||||
$d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click();
|
||||
$d->find_element("Customers", link_text)->click();
|
||||
|
||||
diag("Create a Customer");
|
||||
$d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Customers")]');
|
||||
$d->findclick_ok(link_text => 'Create Customer');
|
||||
$d->fill_element_ok([css => '#contactidtable_filter input', 'thisshouldnotexist']);
|
||||
$d->find_ok(css => '#contactidtable tr > td.dataTables_empty');
|
||||
$d->fill_element_ok([css => '#contactidtable_filter input', 'default-customer']);
|
||||
$d->select_if_unselected_ok(xpath => '//table[@id="contactidtable"]/tbody/tr[1]/td[contains(text(),"default-customer")]/..//input[@type="checkbox"]');
|
||||
$d->fill_element_ok([css => '#billing_profileidtable_filter input', 'thisshouldnotexist']);
|
||||
$d->find_ok(css => '#billing_profileidtable tr > td.dataTables_empty');
|
||||
$d->fill_element_ok([css => '#billing_profileidtable_filter input', 'Default Billing Profile']);
|
||||
$d->select_if_unselected_ok(xpath => '//table[@id="billing_profileidtable"]/tbody/tr[1]/td[contains(text(),"Default Billing Profile")]/..//input[@type="checkbox"]');
|
||||
$d->find_element('//*[@id="masthead"]//h2[contains(text(),"Customers")]');
|
||||
$d->find_element('Create Customer', link_text)->click();
|
||||
$d->fill_element('#contactidtable_filter input', css, 'thisshouldnotexist');
|
||||
$d->find_element('#contactidtable tr > td.dataTables_empty', css);
|
||||
$d->fill_element('#contactidtable_filter input', css, 'default-customer');
|
||||
$d->select_if_unselected('//table[@id="contactidtable"]/tbody/tr[1]/td[contains(text(),"default-customer")]/..//input[@type="checkbox"]');
|
||||
$d->fill_element('#billing_profileidtable_filter input', css, 'thisshouldnotexist');
|
||||
$d->find_element('#billing_profileidtable tr > td.dataTables_empty', css);
|
||||
$d->fill_element('#billing_profileidtable_filter input', css, 'Default Billing Profile');
|
||||
$d->select_if_unselected('//table[@id="billing_profileidtable"]/tbody/tr[1]/td[contains(text(),"Default Billing Profile")]/..//input[@type="checkbox"]');
|
||||
eval { #lets only try this
|
||||
$d->select_if_unselected(xpath => '//table[@id="productidtable"]/tbody/tr[1]/td[contains(text(),"Basic SIP Account")]/..//input[@type="checkbox"]');
|
||||
$d->select_if_unselected('//table[@id="productidtable"]/tbody/tr[1]/td[contains(text(),"Basic SIP Account")]/..//input[@type="checkbox"]');
|
||||
};
|
||||
$d->fill_element_ok([id => 'external_id', $rnd_id]);
|
||||
$d->findclick_ok(id => 'save');
|
||||
$d->fill_element('external_id', id, $rnd_id);
|
||||
$d->find_element('save', id)->click();
|
||||
|
||||
diag("Open Details for our just created Customer");
|
||||
sleep 2; #Else we might search on the previous page
|
||||
$d->fill_element_ok([css => '#Customer_table_filter input', 'thisshouldnotexist']);
|
||||
$d->find_ok(css => '#Customer_table tr > td.dataTables_empty');
|
||||
$d->fill_element_ok([css => '#Customer_table_filter input', $rnd_id]);
|
||||
my $row = $d->find(xpath => '(//table/tbody/tr/td[contains(text(), "'.$rnd_id.'")]/..)[1]');
|
||||
$d->fill_element('#Customer_table_filter input', css, 'thisshouldnotexist');
|
||||
$d->find_element('#Customer_table tr > td.dataTables_empty', css);
|
||||
$d->fill_element('#Customer_table_filter input', css, $rnd_id);
|
||||
my $row = $d->find_element('(//table/tbody/tr/td[contains(text(), "'.$rnd_id.'")]/..)[1]');
|
||||
ok($row);
|
||||
my $edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Details")]');
|
||||
ok($edit_link);
|
||||
$d->move_to(element => $row);
|
||||
$edit_link->click;
|
||||
$edit_link->click();
|
||||
|
||||
diag("Edit our contact");
|
||||
$d->findclick_ok(xpath => '//div[contains(@class,"accordion-heading")]//a[contains(text(),"Contact Details")]');
|
||||
$d->findclick_ok(xpath => '//div[contains(@class,"accordion-body")]//*[contains(@class,"btn-primary") and contains(text(),"Edit Contact")]');
|
||||
$d->fill_element_ok([css => 'div.modal #firstname', "Alice"]);
|
||||
$d->fill_element_ok([id => 'company', 'Sipwise']);
|
||||
$d->find_element('//div[contains(@class,"accordion-heading")]//a[contains(text(),"Contact Details")]')->click();
|
||||
$d->find_element('//div[contains(@class,"accordion-body")]//*[contains(@class,"btn-primary") and contains(text(),"Edit Contact")]')->click();
|
||||
$d->fill_element('div.modal #firstname', css, "Alice");
|
||||
$d->fill_element('company', id, 'Sipwise');
|
||||
# Choosing Country:
|
||||
$d->fill_element_ok([css => '#countryidtable_filter input', 'thisshouldnotexist']);
|
||||
$d->find_ok(css => '#countryidtable tr > td.dataTables_empty');
|
||||
$d->fill_element_ok([css => '#countryidtable_filter input', 'Ukraine']);
|
||||
$d->select_if_unselected_ok(xpath => '//table[@id="countryidtable"]/tbody/tr[1]/td[contains(text(),"Ukraine")]/..//input[@type="checkbox"]');
|
||||
$d->fill_element('#countryidtable_filter input', css, 'thisshouldnotexist');
|
||||
$d->find_element('#countryidtable tr > td.dataTables_empty', css);
|
||||
$d->fill_element('#countryidtable_filter input', css, 'Ukraine');
|
||||
$d->select_if_unselected('//table[@id="countryidtable"]/tbody/tr[1]/td[contains(text(),"Ukraine")]/..//input[@type="checkbox"]');
|
||||
# Save
|
||||
$d->findclick_ok(id => 'save');
|
||||
$d->find_element('save', id)->click();
|
||||
|
||||
diag("Check if successful");
|
||||
$d->find_ok(xpath => '//div[contains(@class,"accordion-body")]//table//td[contains(text(),"Sipwise")]');
|
||||
$d->find_element('//div[contains(@class,"accordion-body")]//table//td[contains(text(),"Sipwise")]');
|
||||
|
||||
diag("Edit Fraud Limits");
|
||||
$d->findclick_ok(xpath => '//div[contains(@class,"accordion-heading")]//a[contains(text(),"Fraud Limits")]');
|
||||
$d->find_element('//div[contains(@class,"accordion-heading")]//a[contains(text(),"Fraud Limits")]')->click();
|
||||
sleep 2 if ($d->browser_name_in("phantomjs", "chrome", "firefox")); # time to move
|
||||
$row = $d->find(xpath => '//div[contains(@class,"accordion-body")]//table//tr/td[contains(text(),"Monthly Settings")]');
|
||||
$row = $d->find_element('//div[contains(@class,"accordion-body")]//table//tr/td[contains(text(),"Monthly Settings")]');
|
||||
ok($row);
|
||||
$edit_link = $d->find_child_element($row, './../td//a[text()[contains(.,"Edit")]]');
|
||||
ok($edit_link);
|
||||
$d->move_to(element => $row);
|
||||
$edit_link->click;
|
||||
$edit_link->click();
|
||||
|
||||
diag("Do Edit Fraud Limits");
|
||||
$d->fill_element_ok([id => 'fraud_interval_limit', "100"]);
|
||||
$d->fill_element_ok([id => 'fraud_interval_notify', 'mymail@example.org']);
|
||||
$d->findclick_ok(id => 'save');
|
||||
$d->find_ok(xpath => '//div[contains(@class,"accordion-body")]//table//td[contains(text(),"mymail@example.org")]');
|
||||
$d->fill_element('fraud_interval_limit', id, "100");
|
||||
$d->fill_element('fraud_interval_notify', id, 'mymail@example.org');
|
||||
$d->find_element('save', id)->click();
|
||||
$d->find_element('//div[contains(@class,"accordion-body")]//table//td[contains(text(),"mymail@example.org")]');
|
||||
|
||||
diag("Terminate our customer");
|
||||
$d->findclick_ok(xpath => '//a[contains(@class,"btn-primary") and text()[contains(.,"Back")]]');
|
||||
$d->fill_element_ok([css => '#Customer_table_filter input', 'thisshouldnotexist']);
|
||||
$d->find_ok(css => '#Customer_table tr > td.dataTables_empty');
|
||||
$d->fill_element_ok([css => '#Customer_table_filter input', $rnd_id]);
|
||||
$row = $d->find(xpath => '(//table/tbody/tr/td[contains(text(), "'.$rnd_id.'")]/..)[1]');
|
||||
$d->find_element('//a[contains(@class,"btn-primary") and text()[contains(.,"Back")]]')->click();
|
||||
$d->fill_element('#Customer_table_filter input', css, 'thisshouldnotexist');
|
||||
$d->find_element('#Customer_table tr > td.dataTables_empty', css);
|
||||
$d->fill_element('#Customer_table_filter input', css, $rnd_id);
|
||||
$row = $d->find_element('(//table/tbody/tr/td[contains(text(), "'.$rnd_id.'")]/..)[1]');
|
||||
ok($row);
|
||||
$edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Terminate")]');
|
||||
ok($edit_link);
|
||||
$d->move_to(element => $row);
|
||||
$edit_link->click;
|
||||
$edit_link->click();
|
||||
#sleep 2;
|
||||
$d->findtext_ok("Are you sure?");
|
||||
$d->findclick_ok(id => 'dataConfirmOK');
|
||||
$d->findtext_ok("Customer successfully terminated");
|
||||
$d->find_text("Are you sure?");
|
||||
$d->find_element('dataConfirmOK', id)->click();
|
||||
$d->find_text("Customer successfully terminated");
|
||||
|
||||
done_testing;
|
||||
# vim: filetype=perl
|
||||
|
||||
@ -1,150 +1,154 @@
|
||||
use Sipwise::Base;
|
||||
use lib 't/lib';
|
||||
use Test::More import => [qw(done_testing is ok diag todo_skip)];
|
||||
use Test::WebDriver::Sipwise qw();
|
||||
use Selenium::Remote::Driver::Extensions qw();
|
||||
|
||||
my $browsername = $ENV{BROWSER_NAME} || ""; #possible values: htmlunit, chrome
|
||||
my $d = Test::WebDriver::Sipwise->new (browser_name => $browsername,
|
||||
'proxy' => {'proxyType' => 'system'});
|
||||
$d->set_window_size(1024,1280) if ($browsername ne "htmlunit");
|
||||
diag("Init");
|
||||
my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000';
|
||||
$d->get_ok("$uri/logout"); #make sure we are logged out
|
||||
$d->get_ok("$uri/login");
|
||||
my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome
|
||||
my $d = Selenium::Remote::Driver::Extensions->new (
|
||||
'browser_name' => $browsername,
|
||||
'proxy' => {'proxyType' => 'system'} );
|
||||
|
||||
diag("Loading login page (logout first)");
|
||||
$d->set_window_size(1024,1280) if ($browsername ne "htmlunit");
|
||||
$d->get("$uri/logout"); # make sure we are logged out
|
||||
$d->get("$uri/login");
|
||||
$d->set_implicit_wait_timeout(10000);
|
||||
$d->default_finder('xpath');
|
||||
|
||||
diag("Do Admin Login");
|
||||
$d->findtext_ok('Admin Sign In');
|
||||
$d->find(name => 'username')->send_keys('administrator');
|
||||
$d->find(name => 'password')->send_keys('administrator');
|
||||
$d->findclick_ok(name => 'submit');
|
||||
|
||||
$d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Dashboard")]');
|
||||
$d->find_text("Admin Sign In");
|
||||
is($d->get_title, '');
|
||||
$d->find_element('username', name)->send_keys('administrator');
|
||||
$d->find_element('password', name)->send_keys('administrator');
|
||||
$d->find_element('submit', name)->click();
|
||||
is($d->find_element('//*[@id="masthead"]//h2')->get_text(), "Dashboard");
|
||||
|
||||
diag("Go to Peerings page");
|
||||
$d->findclick_ok(xpath => '//*[@id="main-nav"]//*[contains(text(),"Settings")]');
|
||||
$d->findclick_ok(link_text => "Peerings");
|
||||
$d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click();
|
||||
$d->find_element("Peerings", link_text)->click();
|
||||
|
||||
diag("Create a Peering Group");
|
||||
$d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"SIP Peering Groups")]');
|
||||
my $peerings_uri = $d->get_location;
|
||||
$d->findclick_ok(link_text => 'Create Peering Group');
|
||||
$d->find_element('//*[@id="masthead"]//h2[contains(text(),"SIP Peering Groups")]');
|
||||
my $peerings_uri = $d->get_current_url();
|
||||
$d->find_element('Create Peering Group', link_text)->click();
|
||||
|
||||
diag("Create a Peering Contract");
|
||||
$d->findclick_ok(xpath => '//input[@type="button" and @value="Create Contract"]');
|
||||
$d->select_if_unselected_ok(xpath => '//table[@id="contactidtable"]/tbody/tr[1]//input[@type="checkbox"]');
|
||||
$d->select_if_unselected_ok(xpath => '//table[@id="billing_profileidtable"]/tbody/tr[1]//input[@type="checkbox"]');
|
||||
$d->findclick_ok(xpath => '//div[contains(@class,"modal-body")]//div//select[@id="status"]/option[@value="active"]');
|
||||
$d->findclick_ok(xpath => '//div[contains(@class,"modal")]//input[@type="submit"]');
|
||||
$d->findtext_ok('Create Peering Group'); #Should go back to prev form
|
||||
|
||||
$d->fill_element_ok([id => 'name', 'testinggroup']);
|
||||
$d->fill_element_ok([id => 'description', 'A group created for testing purposes']);
|
||||
$d->select_if_unselected(xpath => '//table[@id="contractidtable"]/tbody/tr[1]//input[@type="checkbox"]');
|
||||
$d->findclick_ok(id => 'save');
|
||||
$d->find_element('//input[@type="button" and @value="Create Contract"]')->click();
|
||||
$d->select_if_unselected('//table[@id="contactidtable"]/tbody/tr[1]//input[@type="checkbox"]');
|
||||
$d->select_if_unselected('//table[@id="billing_profileidtable"]/tbody/tr[1]//input[@type="checkbox"]');
|
||||
$d->find_element('//div[contains(@class,"modal-body")]//div//select[@id="status"]/option[@value="active"]')->click();
|
||||
$d->find_element('//div[contains(@class,"modal")]//input[@type="submit"]')->click();
|
||||
$d->find_text('Create Peering Group'); # Should go back to prev form
|
||||
|
||||
$d->fill_element('name', id, 'testinggroup');
|
||||
$d->fill_element('description', id, 'A group created for testing purposes');
|
||||
$d->select_if_unselected('//table[@id="contractidtable"]/tbody/tr[1]//input[@type="checkbox"]');
|
||||
$d->find_element('save', id)->click();
|
||||
|
||||
diag("Edit Servers/Rules of testinggroup");
|
||||
my $row = $d->find(xpath => '(//table/tbody/tr/td[contains(text(), "testinggroup")]/..)[1]');
|
||||
my $row = $d->find_element('(//table/tbody/tr/td[contains(text(), "testinggroup")]/..)[1]');
|
||||
ok($row);
|
||||
my $edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Details")]');
|
||||
ok($edit_link);
|
||||
$d->move_to(element => $row);
|
||||
$edit_link->click;
|
||||
$edit_link->click();
|
||||
|
||||
diag("Create a Peering Rule");
|
||||
$d->findclick_ok(xpath => '//a[contains(text(),"Create Peering Rule")]');
|
||||
$d->fill_element_ok(['id', 'callee_prefix', '43']);
|
||||
$d->fill_element_ok(['id', 'callee_pattern', '^sip']);
|
||||
$d->fill_element_ok(['id', 'caller_pattern', '999']);
|
||||
$d->fill_element_ok(['id', 'description', 'for testing purposes']);
|
||||
$d->findclick_ok(id => 'save');
|
||||
$d->find_element('//a[contains(text(),"Create Peering Rule")]')->click();
|
||||
$d->fill_element('callee_prefix', id, '43');
|
||||
$d->fill_element('callee_pattern', id, '^sip');
|
||||
$d->fill_element('caller_pattern', id, '999');
|
||||
$d->fill_element('description', id, 'for testing purposes');
|
||||
$d->find_element('save', id)->click();
|
||||
|
||||
diag("Create a Peering Server");
|
||||
$d->findclick_ok(xpath => '//a[contains(text(),"Create Peering Server")]');
|
||||
$d->fill_element_ok(['id', 'name', 'mytestserver']);
|
||||
$d->fill_element_ok(['id', 'ip', '10.0.0.100']);
|
||||
$d->fill_element_ok(['id', 'host', 'sipwise.com']);
|
||||
$d->findclick_ok(id => 'save');
|
||||
$d->findtext_ok('Peering server successfully created');
|
||||
$d->find_element('//a[contains(text(),"Create Peering Server")]')->click();
|
||||
$d->fill_element('name', id, 'mytestserver');
|
||||
$d->fill_element('ip', id, '10.0.0.100');
|
||||
$d->fill_element('host', id, 'sipwise.com');
|
||||
$d->find_element('save', id)->click();
|
||||
$d->find_text('Peering server successfully created');
|
||||
|
||||
my $server_rules_uri = $d->get_location;
|
||||
my $server_rules_uri = $d->get_current_url();
|
||||
|
||||
diag('Edit Preferences for "mytestserver".');
|
||||
sleep 1; #make sure, we are on the right page
|
||||
$d->fill_element_ok([css => '#peering_servers_table_filter input', 'thisshouldnotexist']);
|
||||
$d->find_ok(css => '#peering_servers_table tr > td.dataTables_empty');
|
||||
$d->fill_element_ok([css => '#peering_servers_table_filter input', 'mytestserver']);
|
||||
$edit_link = $d->find(xpath => '//table/tbody/tr/td[contains(text(), "mytestserver")]/../td//a[contains(text(),"Preferences")]');
|
||||
$row = $d->find(xpath => '//table/tbody/tr/td[contains(text(), "mytestserver")]/..');
|
||||
$d->fill_element('#peering_servers_table_filter input', css, 'thisshouldnotexist');
|
||||
$d->find_element('#peering_servers_table tr > td.dataTables_empty', css);
|
||||
$d->fill_element('#peering_servers_table_filter input', css, 'mytestserver');
|
||||
$edit_link = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestserver")]/../td//a[contains(text(),"Preferences")]');
|
||||
$row = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestserver")]/..');
|
||||
ok($row);
|
||||
ok($edit_link);
|
||||
$d->move_to(element => $row);
|
||||
$edit_link->click;
|
||||
$edit_link->click();
|
||||
|
||||
diag('Open the tab "Number Manipulations"');
|
||||
$d->findclick_ok(link_text => "Number Manipulations");
|
||||
$d->find_element("Number Manipulations", link_text)->click();
|
||||
|
||||
diag("Click edit for the preference inbound_upn");
|
||||
$row = $d->find(xpath => '//table/tbody/tr/td[normalize-space(text()) = "inbound_upn"]');
|
||||
$row = $d->find_element('//table/tbody/tr/td[normalize-space(text()) = "inbound_upn"]');
|
||||
ok($row);
|
||||
$edit_link = $d->find_child_element($row, '(./../td//a)[2]');
|
||||
ok($edit_link);
|
||||
$d->move_to(element => $row);
|
||||
$edit_link->click;
|
||||
$edit_link->click();
|
||||
|
||||
diag('Change to "P-Asserted-Identity');
|
||||
$d->findclick_ok(xpath => '//div[contains(@class,"modal-body")]//select[@id="inbound_upn"]/option[@value="pai_user"]');
|
||||
$d->findclick_ok(id => 'save');
|
||||
$d->findtext_ok('Preference inbound_upn successfully updated');
|
||||
$d->find_element('//div[contains(@class,"modal-body")]//select[@id="inbound_upn"]/option[@value="pai_user"]')->click();
|
||||
$d->find_element('save', id)->click();
|
||||
$d->find_text('Preference inbound_upn successfully updated');
|
||||
|
||||
diag("Go back to Servers/Rules");
|
||||
$d->navigate_ok($server_rules_uri);
|
||||
$d->get($server_rules_uri);
|
||||
|
||||
my $delete_link;
|
||||
diag('skip was here');
|
||||
diag("Delete mytestserver");
|
||||
sleep 1; #make sure, we are on the right page
|
||||
$d->fill_element_ok([css => '#peering_servers_table_filter input', 'thisshouldnotexist']);
|
||||
$d->find_ok(css => '#peering_servers_table tr > td.dataTables_empty');
|
||||
$d->fill_element_ok([css => '#peering_servers_table_filter input', 'mytestserver']);
|
||||
$row = $d->find(xpath => '(//table/tbody/tr/td[contains(text(), "mytestserver")]/..)[1]');
|
||||
$d->fill_element('#peering_servers_table_filter input', css, 'thisshouldnotexist');
|
||||
$d->find_element('#peering_servers_table tr > td.dataTables_empty', css);
|
||||
$d->fill_element('#peering_servers_table_filter input', css, 'mytestserver');
|
||||
$row = $d->find_element('(//table/tbody/tr/td[contains(text(), "mytestserver")]/..)[1]');
|
||||
ok($row);
|
||||
$delete_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Delete")]');
|
||||
ok($delete_link);
|
||||
$d->move_to(element => $row);
|
||||
$delete_link->click;
|
||||
$d->findtext_ok("Are you sure?");
|
||||
$d->findclick_ok(id => 'dataConfirmOK');
|
||||
$d->findtext_ok("successfully deleted"); # delete does not work
|
||||
$delete_link->click();
|
||||
$d->find_text("Are you sure?");
|
||||
$d->find_element('dataConfirmOK', id)->click();
|
||||
$d->find_text("successfully deleted"); # delete does not work
|
||||
|
||||
diag("Delete the previously created Peering Rule");
|
||||
sleep 1;
|
||||
$row = $d->find(xpath => '//table[@id="PeeringRules_table"]/tbody/tr[1]');
|
||||
$row = $d->find_element('//table[@id="PeeringRules_table"]/tbody/tr[1]');
|
||||
ok($row);
|
||||
$delete_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Delete")]');
|
||||
ok($delete_link);
|
||||
$d->move_to(element => $row);
|
||||
$delete_link->click;
|
||||
$d->findtext_ok("Are you sure?");
|
||||
$d->findclick_ok(id => 'dataConfirmOK');
|
||||
$delete_link->click();
|
||||
$d->find_text("Are you sure?");
|
||||
$d->find_element('dataConfirmOK', id)->click();
|
||||
|
||||
diag('skip was here');
|
||||
$d->findtext_ok("successfully deleted");
|
||||
$d->find_text("successfully deleted");
|
||||
|
||||
diag('Go back to "SIP Peering Groups".');
|
||||
$d->navigate_ok($peerings_uri);
|
||||
$d->get($peerings_uri);
|
||||
|
||||
diag('Delete "testinggroup"');
|
||||
$row = $d->find(xpath => '(//table/tbody/tr/td[contains(text(), "testinggroup")]/..)[1]');
|
||||
$row = $d->find_element('(//table/tbody/tr/td[contains(text(), "testinggroup")]/..)[1]');
|
||||
ok($row);
|
||||
$delete_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Delete")]');
|
||||
ok($delete_link);
|
||||
$d->move_to(element => $row);
|
||||
$delete_link->click;
|
||||
$d->findtext_ok("Are you sure?");
|
||||
$d->findclick_ok(id => 'dataConfirmOK');
|
||||
$delete_link->click();
|
||||
$d->find_text("Are you sure?");
|
||||
$d->find_element('dataConfirmOK', id)->click();
|
||||
|
||||
diag('skip was here');
|
||||
$d->findtext_ok("successfully deleted");
|
||||
$d->find_text("successfully deleted");
|
||||
|
||||
done_testing;
|
||||
# vim: filetype=perl
|
||||
|
||||
@ -1,72 +1,76 @@
|
||||
use Sipwise::Base;
|
||||
use lib 't/lib';
|
||||
use Test::More import => [qw(done_testing is ok diag)];
|
||||
use Test::WebDriver::Sipwise qw();
|
||||
use Selenium::Remote::Driver::Extensions qw();
|
||||
|
||||
my $browsername = $ENV{BROWSER_NAME} || "";
|
||||
#possible values: htmlunit, chrome, firefox (default)
|
||||
my $d = Test::WebDriver::Sipwise->new (browser_name => $browsername,
|
||||
'proxy' => {'proxyType' => 'system'});
|
||||
$d->set_window_size(1024,1280) if ($browsername ne "htmlunit");
|
||||
diag("Init");
|
||||
my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000';
|
||||
$d->get_ok("$uri/logout"); #make sure we are logged out
|
||||
$d->get_ok("$uri/login");
|
||||
my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome
|
||||
my $d = Selenium::Remote::Driver::Extensions->new (
|
||||
'browser_name' => $browsername,
|
||||
'proxy' => {'proxyType' => 'system'} );
|
||||
|
||||
diag("Loading login page (logout first)");
|
||||
$d->set_window_size(1024,1280) if ($browsername ne "htmlunit");
|
||||
$d->get("$uri/logout"); # make sure we are logged out
|
||||
$d->get("$uri/login");
|
||||
$d->set_implicit_wait_timeout(10000);
|
||||
$d->default_finder('xpath');
|
||||
|
||||
diag("Do Admin Login");
|
||||
$d->findtext_ok('Admin Sign In');
|
||||
$d->find(name => 'username')->send_keys('administrator');
|
||||
$d->find(name => 'password')->send_keys('administrator');
|
||||
$d->findclick_ok(name => 'submit');
|
||||
$d->find_text("Admin Sign In");
|
||||
is($d->get_title, '');
|
||||
$d->find_element('username', name)->send_keys('administrator');
|
||||
$d->find_element('password', name)->send_keys('administrator');
|
||||
$d->find_element('submit', name)->click();
|
||||
is($d->find_element('//*[@id="masthead"]//h2')->get_text(), "Dashboard");
|
||||
|
||||
diag("Go to reseller list");
|
||||
$d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Dashboard")]');
|
||||
$d->findclick_ok(xpath => '//a[@class="btn" and contains(@href,"/reseller")]');
|
||||
$d->find_element('//a[@class="btn" and contains(@href,"/reseller")]')->click();
|
||||
|
||||
diag("Search nonexisting reseller");
|
||||
my $searchfield = $d->find(css => '#Resellers_table_filter label input');
|
||||
my $searchfield = $d->find_element('#Resellers_table_filter label input', css);
|
||||
ok($searchfield);
|
||||
$searchfield->send_keys('donotfindme');
|
||||
|
||||
diag("Verify that nothing is shown");
|
||||
my $elem = $d->find(css => '#Resellers_table td.dataTables_empty');
|
||||
my $elem = $d->find_element('#Resellers_table td.dataTables_empty', css);
|
||||
ok($elem);
|
||||
is($elem->get_text,'No matching records found');
|
||||
|
||||
diag('Search for "1" in resellers');
|
||||
$searchfield->clear();
|
||||
$searchfield->send_keys('active');
|
||||
$d->find_ok(css => '#Resellers_table tr.sw_action_row');
|
||||
is($d->find(xpath => '//table[@id="Resellers_table"]//tr[1]/td[1]')->get_text,'1');
|
||||
$d->find_element('#Resellers_table tr.sw_action_row', css);
|
||||
is($d->find_element('//table[@id="Resellers_table"]//tr[1]/td[1]')->get_text(), '1');
|
||||
|
||||
diag("Going to create a reseller");
|
||||
$d->findclick_ok(link_text => 'Create Reseller');
|
||||
$d->findclick_ok(id => 'save');
|
||||
$d->findtext_ok("Contract field is required");
|
||||
$d->findtext_ok("Name field is required");
|
||||
$d->findclick_ok(id => 'mod_close');
|
||||
$d->find_element('Create Reseller', link_text)->click();
|
||||
$d->find_element('save', id)->click();
|
||||
$d->find_text("Contract field is required");
|
||||
$d->find_text("Name field is required");
|
||||
$d->find_element('mod_close', id)->click();
|
||||
|
||||
diag("Click Edit on the first reseller shown (first row)");
|
||||
sleep 1; #prevent a StaleElementReferenceException
|
||||
my $row = $d->find(xpath => '//*[@id="Resellers_table"]/tbody/tr[1]');
|
||||
my $row = $d->find_element('//*[@id="Resellers_table"]/tbody/tr[1]');
|
||||
ok($row);
|
||||
$d->move_to(element => $row);
|
||||
my $btn = $d->find_child_element($row, './/a[contains(text(),"Edit")]');
|
||||
ok($btn);
|
||||
$btn->click;
|
||||
#is($d->find(id => "name")->get_attribute("value"), "reseller 1");
|
||||
$d->findclick_ok(id => 'mod_close');
|
||||
$btn->click();
|
||||
#is($d->find_element("name", id)->get_attribute("value"), "reseller 1");
|
||||
$d->find_element('mod_close', id)->click();
|
||||
|
||||
diag("Click Terminate on the first reseller shown");
|
||||
sleep 1; #prevent a StaleElementReferenceException
|
||||
$row = $d->find(xpath => '//*[@id="Resellers_table"]/tbody/tr[1]');
|
||||
$row = $d->find_element('//*[@id="Resellers_table"]/tbody/tr[1]');
|
||||
ok($row);
|
||||
$d->move_to(element => $row);
|
||||
$btn = $d->find_child_element($row, './/a[contains(@class,"btn-secondary")]');
|
||||
ok($btn);
|
||||
$btn->click;
|
||||
$d->findtext_ok("Are you sure?");
|
||||
$d->findclick_ok(xpath => '//div[@id="dataConfirmModal"]//button[contains(text(),"Cancel")]');
|
||||
$btn->click();
|
||||
$d->find_text("Are you sure?");
|
||||
$d->find_element('//div[@id="dataConfirmModal"]//button[contains(text(),"Cancel")]')->click();
|
||||
|
||||
done_testing;
|
||||
# vim: filetype=perl
|
||||
|
||||
Loading…
Reference in new issue