MT#14585 Move selenium tests on Selenium::Remote::Driver(::Extensions)

Change-Id: I5c2133598196a620d4e8a6376beb800cdde81f3c
changes/52/2552/7
Alexander Lutay 10 years ago
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,73 +1,80 @@
use Sipwise::Base;
use lib 't/lib';
use Test::More import => [qw(done_testing is ok diag skip)];
use Test::WebDriver::Sipwise qw();
use Selenium::Remote::Driver::Extensions qw();
use TryCatch;
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 Domains page");
$d->findclick_ok(xpath => '//*[@id="main-nav"]//*[contains(text(),"Settings")]');
$d->find_ok(xpath => '//a[contains(@href,"/domain")]');
$d->findclick_ok(link_text => "Domains");
$d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click();
$d->find_element('//a[contains(@href,"/domain")]');
$d->find_element('Domains', link_text)->click();
$d->find_ok(xpath => '//*[@id="masthead"]//h2[contains(text(),"Domains")]');
diag("Domains page");
is($d->find_element('//*[@id="masthead"]//h2')->get_text(), "Domains");
SKIP: {
sleep 1;
diag("Open Preferences of first Domain");
my ($row, $edit_link);
try {
$row = $d->find(xpath => '//table[@id="Domain_table"]/tbody/tr[1]');
$edit_link = $d->find(xpath => '(//table[@id="Domain_table"]/tbody/tr[1]/td//a)[contains(text(),"Preferences")]');
$row = $d->find_element('//table[@id="Domain_table"]/tbody/tr[1]', xpath);
$edit_link = $d->find_element('(//table[@id="Domain_table"]/tbody/tr[1]/td//a)[contains(text(),"Preferences")]');
} catch {
skip ("It seems, no domains exist", 1);
}
ok($edit_link);
$d->move_to(element => $row);
$edit_link->click;
$edit_link->click();
diag('Open the tab "Access Restrictions"');
$d->location_like(qr!domain/\d+/preferences!); #/
$d->findclick_ok(link_text => "Access Restrictions");
#$d->location_ok(qr!domain/\d+/preferences!); #/ # FIXME
$d->find_element("Access Restrictions", link_text)->click();
diag("Click edit for the preference concurrent_max");
sleep 1;
$row = $d->find(xpath => '//table/tbody/tr/td[normalize-space(text()) = "concurrent_max"]');
$row = $d->find_element('//table/tbody/tr/td[normalize-space(text()) = "concurrent_max"]');
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("Try to change this to a value which is not a number");
my $formfield = $d->find('id' => 'concurrent_max');
my $formfield = $d->find_element('concurrent_max', id);
ok($formfield);
$formfield->clear;
$formfield->clear();
$formfield->send_keys('thisisnonumber');
$d->findclick_ok(id => 'save');
$d->find_element("save", id)->click();
diag('Type 789 and click Save');
$d->findtext_ok('Value must be an integer');
$formfield = $d->find('id' => 'concurrent_max');
$d->find_text('Value must be an integer');
$formfield = $d->find_element('concurrent_max', id);
ok($formfield);
$formfield->clear;
$formfield->clear();
$formfield->send_keys('789');
$d->findclick_ok(id => 'save');
$d->find_element('save', id)->click();
}
done_testing;

@ -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…
Cancel
Save