TT#17853 selenium test adaptions for geckodriver

all selenium tests are working with newest geckodriver (0.18.0) and patched S:R:D

issues:
- setting the window size: not urgent
- the unsupported move_to: fixed (new move_action)
- setting the implicit wait timeout: fixed upstream in S:R:D

Change-Id: Ic5b52cd866f4fd93682d67a4fd8a76ec54ea70cf
changes/38/14038/5
Gerhard Jungwirth 8 years ago
parent b040f4fd96
commit a672389bc7

@ -0,0 +1,111 @@
package Selenium::Remote::Driver::FirefoxExtensions;
use warnings;
use strict;
use Moo;
use Test::More import => [qw(diag ok is)];
extends 'Selenium::Firefox';
# important so that S:F doesn't start an own instance of geckodriver
has '+remote_server_addr' => (
default => '127.0.0.1',
);
has '+port' => (
default => '4444',
);
has '+proxy' => (
default => sub { return {proxyType => 'system'}; },
);
sub BUILD {
my $self = shift;
my ($window_h,$window_w) = ($ENV{WINDOW_SIZE} || '1024x1280') =~ /([0-9]+)x([0-9]+)/i;
my $browsername = $self->browser_name;
# $self->set_window_position(0, 50) if ($browsername ne "htmlunit");
# $self->set_window_size($window_h,$window_w) if ($browsername ne "htmlunit");
# diag("Window size: $window_h x $window_w");
$self->set_timeout("implicit", 10_000);
}
sub login_ok {
my ($self) = @_;
diag("Loading login page (logout first)");
my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000';
$self->get("$uri/logout"); # make sure we are logged out
$self->get("$uri/login");
diag("Do Admin Login");
ok($self->find_text("Admin Sign In"), "Text Admin Sign In found");
is($self->get_title, '');
$self->find_element('#username', 'css')->send_keys('administrator');
$self->find_element('#password', 'css')->send_keys('administrator');
$self->find_element('#submit', 'css')->click();
diag("Checking Admin interface");
is($self->get_title, 'Dashboard');
is($self->find_element('//*[@id="masthead"]//h2')->get_text(), "Dashboard");
ok(1, "Login Successful");
}
sub find_text {
my ($self, $text, $scheme) = @_;
$scheme //= "xpath";
return $self->find_element("//*[contains(text(),\"$text\")]", $scheme);
}
sub select_if_unselected {
my ($self, $query, $scheme) = @_;
$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;
}
sub fill_element {
my ($self, $query, $scheme, $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 scroll_to_id {
my ($self, $id) = @_;
my $script =
'var arg1 = arguments[0];' .
'var elem = window.document.getElementById(arg1);' .
'elem.scrollIntoView();' .
'return elem;';
my $elem = $self->execute_script($script,$id);
return $elem;
}
sub scroll_to_element {
my ($self, $elem) = @_;
my $script =
'var arg1 = arguments[0];' .
'arg1.scrollIntoView();' .
'return arg1;';
$self->execute_script($script,$elem);
return $elem;
}
sub browser_name_in {
my ($self, @names) = @_;
my $browser_name = $self->browser_name;
return scalar grep {/^$browser_name$/} @names;
}
1;

@ -2,14 +2,19 @@ use warnings;
use strict;
use lib 't/lib';
use Test::More import => [qw(done_testing is diag)];
use Selenium::Remote::Driver::Extensions qw();
use Test::More import => [qw(done_testing is diag ok)];
use Selenium::Remote::Driver::FirefoxExtensions;
diag("Init");
my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome
my $d = Selenium::Remote::Driver::Extensions->new (
'browser_name' => $browsername,
'proxy' => {'proxyType' => 'system'} );
my $d = Selenium::Remote::Driver::FirefoxExtensions->new(
browser_name => $browsername,
extra_capabilities => {
acceptInsecureCerts => \1,
},
);
ok(1, "Instantiation ok");
$d->login_ok();

@ -3,13 +3,16 @@ use strict;
use lib 't/lib';
use Test::More import => [qw(done_testing is ok diag todo_skip)];
use Selenium::Remote::Driver::Extensions qw();
use Selenium::Remote::Driver::FirefoxExtensions;
diag("Init");
my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome
my $d = Selenium::Remote::Driver::Extensions->new (
'browser_name' => $browsername,
'proxy' => {'proxyType' => 'system'} );
my $d = Selenium::Remote::Driver::FirefoxExtensions->new(
browser_name => $browsername,
extra_capabilities => {
acceptInsecureCerts => \1,
},
);
$d->login_ok();
@ -21,19 +24,19 @@ $d->find_element("Billing", 'link_text')->click();
diag("Create a billing profile");
$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('#name', 'css')->send_keys('mytestprofile');
$d->fill_element('[name=handle]', 'css', 'mytestprofile');
$d->find_element('#fraud_interval_lock', 'css');
$d->find_element('//select[@id="fraud_interval_lock"]/option[contains(text(),"foreign calls")]')->click();
$d->find_element('//div[contains(@class,"modal")]//input[@type="submit"]')->click();
diag("Search nonexisting billing profile");
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_element('#billing_profile_table td.dataTables_empty', 'css');
ok($elem);
is($elem->get_text, 'No matching records found');
@ -41,7 +44,6 @@ is($elem->get_text, 'No matching records found');
diag('Search for "mytestprofile" in billing profile');
$searchfield->clear();
$searchfield->send_keys('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")]'));
@ -50,22 +52,23 @@ 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);
$d->move_action(element => $row);
$edit_link->click();
diag("Edit mytestprofile");
$elem = $d->find_element('name', 'id');
$elem = $d->find_element('#name', 'css');
ok($elem);
is($elem->get_value, "mytestprofile");
$d->fill_element('interval_charge', 'id', '3.2');
$d->find_element('save', 'id')->click();
$d->fill_element('#interval_charge', 'css', '3.2');
$d->find_element('#save', 'css')->click();
sleep 1;
diag('Open "Fees" for 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);
$d->move_action(element => $row,xoffset => 1);
$edit_link->click();
$d->find_element('//*[@id="masthead"]//h2[contains(text(),"Billing Fees")]');
@ -73,25 +76,25 @@ diag("Create a billing fee");
$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('zone', 'name', 'testingzone');
$d->fill_element('detail', 'name', 'testingdetail');
$d->find_element('save', 'name')->click();
$d->fill_element('#zone', 'css', 'testingzone');
$d->fill_element('#detail', 'css', 'testingdetail');
$d->find_element('#save', 'css')->click();
diag("Back to orignial form (create billing fees)");
#sleep 2; # give ajax time to load
$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();
$d->fill_element('#source', 'css', '.*');
$d->fill_element('#destination', 'css', '.+');
$d->find_element('#save', 'css')->click();
diag("Delete billing fee");
$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, "Find row");
$d->move_to(element => $row);
$d->move_action(element => $row);
ok(1, "Mouse over row");
$d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"testingdetail")]/..//a[contains(@class,"btn-secondary") and contains(text(),"Delete")]')->click();
ok($d->find_text("Are you sure?"));
$d->find_element('dataConfirmOK', 'id')->click();
$d->find_element('#dataConfirmOK', 'css')->click();
diag('skip was here');
ok($d->find_text("successfully deleted"));
@ -105,10 +108,10 @@ $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->move_action(element => $row);
$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();
$d->find_element('#dataConfirmOK', 'css')->click();
diag("Go to Billing page (again)");
$d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click();
@ -120,44 +123,46 @@ $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);
$d->move_action(element => $row,xoffset=>2);
$edit_link->click();
ok($d->find_element('//*[@id="masthead"]//h2[contains(text(),"times for mytestprofile")]'));
diag("Edit Wednesday");
$row = $d->find_element('//table//td[contains(text(),"Wednesday")]');
ok($row);
$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->move_action(element => ($d->find_element('//h3[contains(text(),"Weekdays")]')));
sleep 2 if ($d->browser_name_in("htmlunit"));
$d->move_action(element => $row);
$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('start', 'name', "03:14:15");
$d->fill_element('end', 'name', "13:37:00");
$d->find_element('add', 'name')->click();
$d->fill_element('#start', 'css', "03:14:15");
$d->fill_element('#end', 'css', "13:37:00");
$d->find_element('#add', 'css')->click();
$d->find_element('//div[contains(@class,"modal")]//i[@class="icon-trash"]/..')->click();
diag('skip was here');
$d->find_element('mod_close', 'id')->click();
$d->find_element('#mod_close', 'css')->click();
diag("Create a Date Definition");
$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();
$d->fill_element('#start', 'css', "2008-02-28 03:14:15");
$d->fill_element('#end', 'css', "2008-02-28 13:37:00");
$d->find_element('#save', 'css')->click();
diag("Find/delete my created date definition");
$elem = $d->find_element('//div[contains(@class,"dataTables_wrapper")]');
$d->scroll_to_element($elem);
$row = $d->find_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"2008-02-28")]/..');
ok($row);
$d->move_to(element => $row);
$d->move_action(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->find_text("Are you sure?");
$d->find_element('dataConfirmOK', 'id')->click();
$d->find_element('#dataConfirmOK', 'css')->click();
done_testing;
# vim: filetype=perl

@ -3,13 +3,16 @@ use warnings;
use lib 't/lib';
use Test::More import => [qw(done_testing is ok diag todo_skip)];
use Selenium::Remote::Driver::Extensions qw();
use Selenium::Remote::Driver::FirefoxExtensions;
diag("Init");
my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome
my $d = Selenium::Remote::Driver::Extensions->new (
'browser_name' => $browsername,
'proxy' => {'proxyType' => 'system'} );
my $d = Selenium::Remote::Driver::FirefoxExtensions->new(
browser_name => $browsername,
extra_capabilities => {
acceptInsecureCerts => \1,
},
);
$d->login_ok();
@ -35,8 +38,9 @@ $d->select_if_unselected('//table[@id="billing_profileidtable"]/tbody/tr[1]/td[c
eval { #lets only try this
$d->select_if_unselected('//table[@id="productidtable"]/tbody/tr[1]/td[contains(text(),"Basic SIP Account")]/..//input[@type="checkbox"]');
};
$d->fill_element('external_id', 'id', $rnd_id);
$d->find_element('save', 'id')->click();
$d->scroll_to_id('external_id');
$d->fill_element('#external_id', 'css', $rnd_id);
$d->find_element('#save', 'css')->click();
diag("Open Details for our just created Customer");
sleep 2; #Else we might search on the previous page
@ -47,39 +51,41 @@ my $row = $d->find_element('(//table/tbody/tr/td[contains(text(), "'.$rnd_id.'")
ok($row);
my $edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Details")]');
ok($edit_link);
$d->move_to(element => $row);
$d->move_action(element => $row);
$edit_link->click();
diag("Edit our contact");
$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');
$d->fill_element('#company', 'css', 'Sipwise');
# Choosing Country:
$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->find_element('save', 'id')->click();
$d->find_element('#save', 'css')->click();
diag("Check if successful");
$d->find_element('//div[contains(@class,"accordion-body")]//table//td[contains(text(),"Sipwise")]');
diag("Edit 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
my $elem = $d->find_element('//div[contains(@class,"accordion-heading")]//a[contains(text(),"Fraud Limits")]');
$d->scroll_to_element($elem);
$elem->click;
sleep 4 if ($d->browser_name_in("phantomjs", "chrome")); # time to move
$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);
$d->move_action(element => $row);
$edit_link->click();
diag("Do Edit Fraud Limits");
$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->fill_element('#fraud_interval_limit', 'css', "100");
$d->fill_element('#fraud_interval_notify', 'css', 'mymail@example.org');
$d->find_element('#save', 'css')->click();
$d->find_element('//div[contains(@class,"accordion-body")]//table//td[contains(text(),"mymail@example.org")]');
diag("Terminate our customer");
@ -91,11 +97,10 @@ $row = $d->find_element('(//table/tbody/tr/td[contains(text(), "'.$rnd_id.'")]/.
ok($row);
$edit_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Terminate")]');
ok($edit_link);
$d->move_to(element => $row);
$d->move_action(element => $row);
$edit_link->click();
#sleep 2;
$d->find_text("Are you sure?");
$d->find_element('dataConfirmOK', 'id')->click();
$d->find_element('#dataConfirmOK', 'css')->click();
$d->find_text("Customer successfully terminated");
done_testing;

@ -3,14 +3,17 @@ use strict;
use lib 't/lib';
use Test::More import => [qw(done_testing is ok diag skip like)];
use Selenium::Remote::Driver::Extensions qw();
use TryCatch;
use Selenium::Remote::Driver::FirefoxExtensions;
diag("Init");
my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome
my $d = Selenium::Remote::Driver::Extensions->new (
'browser_name' => $browsername,
'proxy' => {'proxyType' => 'system'} );
my $d = Selenium::Remote::Driver::FirefoxExtensions->new(
browser_name => $browsername,
extra_capabilities => {
acceptInsecureCerts => \1,
},
);
$d->login_ok();
@ -22,7 +25,7 @@ $d->find_element('Domains', 'link_text')->click();
diag("Domains page");
is($d->find_element('//*[@id="masthead"]//h2')->get_text(), "Domains");
SKIP: {
sleep 1;
sleep 1; # prevent stale element exception
diag("Open Preferences of first Domain");
my ($row, $edit_link);
@ -34,7 +37,7 @@ SKIP: {
}
ok($edit_link);
$d->move_to(element => $row);
$d->move_action(element => $row);
$edit_link->click();
diag('Open the tab "Access Restrictions"');
@ -47,23 +50,23 @@ SKIP: {
ok($row);
$edit_link = $d->find_child_element($row, '(./../td//a)[2]');
ok($edit_link);
$d->move_to(element => $row);
$d->move_action(element => $row);
$edit_link->click();
diag("Try to change this to a value which is not a number");
my $formfield = $d->find_element('concurrent_max', 'id');
my $formfield = $d->find_element('#concurrent_max', 'css');
ok($formfield);
$formfield->clear();
$formfield->send_keys('thisisnonumber');
$d->find_element("save", 'id')->click();
$d->find_element("#save", 'css')->click();
diag('Type 789 and click Save');
$d->find_text('Value must be an integer');
$formfield = $d->find_element('concurrent_max', 'id');
$formfield = $d->find_element('#concurrent_max', 'css');
ok($formfield);
$formfield->clear();
$formfield->send_keys('789');
$d->find_element('save', 'id')->click();
$d->find_element('#save', 'css')->click();
}
done_testing;

@ -3,13 +3,16 @@ use strict;
use lib 't/lib';
use Test::More import => [qw(done_testing is ok diag todo_skip)];
use Selenium::Remote::Driver::Extensions qw();
use Selenium::Remote::Driver::FirefoxExtensions;
diag("Init");
my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome
my $d = Selenium::Remote::Driver::Extensions->new (
'browser_name' => $browsername,
'proxy' => {'proxyType' => 'system'} );
my $d = Selenium::Remote::Driver::FirefoxExtensions->new(
browser_name => $browsername,
extra_capabilities => {
acceptInsecureCerts => \1,
},
);
$d->login_ok();
@ -25,38 +28,41 @@ $d->find_element('Create Peering Group', 'link_text')->click();
diag("Create a Peering Contract");
$d->find_element('//input[@type="button" and @value="Create Contract"]')->click();
$d->select_if_unselected('//table[@id="contactidtable"]/tbody/tr[1]//input[@type="checkbox"]');
my $elem = $d->find_element('//table[@id="billing_profileidtable"]');
$d->scroll_to_element($elem);
$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->fill_element('#name', 'css', 'testinggroup');
$d->fill_element('#description', 'css', '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();
$d->find_element('#save', 'css')->click();
sleep 1;
diag("Edit Servers/Rules of testinggroup");
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);
$d->move_action(element => $row);
$edit_link->click();
diag("Create a Peering Rule");
$d->find_element('//a[contains(text(),"Create Outbound 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();
$d->fill_element('#callee_prefix', 'css', '43');
$d->fill_element('#callee_pattern', 'css', '^sip');
$d->fill_element('#caller_pattern', 'css', '999');
$d->fill_element('#description', 'css', 'for testing purposes');
$d->find_element('#save', 'css')->click();
diag("Create a Peering Server");
$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->fill_element('#name', 'css', 'mytestserver');
$d->fill_element('#ip', 'css', '10.0.0.100');
$d->fill_element('#host', 'css', 'sipwise.com');
$d->find_element('#save', 'css')->click();
$d->find_text('Peering server successfully created');
my $server_rules_uri = $d->get_current_url();
@ -70,7 +76,7 @@ $edit_link = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestserve
$row = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestserver")]/..');
ok($row);
ok($edit_link);
$d->move_to(element => $row);
$d->move_action(element => $row);
$edit_link->click();
diag('Open the tab "Number Manipulations"');
@ -81,12 +87,12 @@ $row = $d->find_element('//table/tbody/tr/td[normalize-space(text()) = "inbound_
ok($row);
$edit_link = $d->find_child_element($row, '(./../td//a)[2]');
ok($edit_link);
$d->move_to(element => $row);
$d->move_action(element => $row);
$edit_link->click();
diag('Change to "P-Asserted-Identity');
$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_element('#save', 'css')->click();
$d->find_text('Preference inbound_upn successfully updated');
diag("Go back to Servers/Rules");
@ -103,10 +109,10 @@ $row = $d->find_element('(//table/tbody/tr/td[contains(text(), "mytestserver")]/
ok($row);
$delete_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Delete")]');
ok($delete_link);
$d->move_to(element => $row);
$d->move_action(element => $row);
$delete_link->click();
$d->find_text("Are you sure?");
$d->find_element('dataConfirmOK', 'id')->click();
$d->find_element('#dataConfirmOK', 'css')->click();
$d->find_text("successfully deleted"); # delete does not work
diag("Delete the previously created Peering Rule");
@ -115,10 +121,10 @@ $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);
$d->move_action(element => $row);
$delete_link->click();
$d->find_text("Are you sure?");
$d->find_element('dataConfirmOK', 'id')->click();
$d->find_element('#dataConfirmOK', 'css')->click();
diag('skip was here');
ok($d->find_text("successfully deleted"));
@ -131,10 +137,10 @@ $row = $d->find_element('(//table/tbody/tr/td[contains(text(), "testinggroup")]/
ok($row);
$delete_link = $d->find_child_element($row, '(./td//a)[contains(text(),"Delete")]');
ok($delete_link);
$d->move_to(element => $row);
$d->move_action(element => $row);
$delete_link->click();
$d->find_text("Are you sure?");
$d->find_element('dataConfirmOK', 'id')->click();
$d->find_element('#dataConfirmOK', 'css')->click();
diag('skip was here');
ok($d->find_text("successfully deleted"));

@ -3,13 +3,16 @@ use strict;
use lib 't/lib';
use Test::More import => [qw(done_testing is ok diag)];
use Selenium::Remote::Driver::Extensions qw();
use Selenium::Remote::Driver::FirefoxExtensions;
diag("Init");
my $browsername = $ENV{BROWSER_NAME} || "firefox"; # possible values: firefox, htmlunit, chrome
my $d = Selenium::Remote::Driver::Extensions->new (
'browser_name' => $browsername,
'proxy' => {'proxyType' => 'system'} );
my $d = Selenium::Remote::Driver::FirefoxExtensions->new(
browser_name => $browsername,
extra_capabilities => {
acceptInsecureCerts => \1,
},
);
$d->login_ok();
@ -34,27 +37,27 @@ is($d->find_element('//table[@id="Resellers_table"]//tr[1]/td[1]')->get_text(),
diag("Going to create a reseller");
$d->find_element('Create Reseller', 'link_text')->click();
$d->find_element('save', 'id')->click();
$d->find_element('#save', 'css')->click();
$d->find_text("Contract field is required");
$d->find_text("Name field is required");
$d->find_element('mod_close', 'id')->click();
$d->find_element('#mod_close', 'css')->click();
diag("Click Edit on the first reseller shown (first row)");
sleep 1; #prevent a StaleElementReferenceException
my $row = $d->find_element('//*[@id="Resellers_table"]/tbody/tr[1]');
ok($row);
$d->move_to(element => $row);
$d->move_action(element => $row);
my $btn = $d->find_child_element($row, './/a[contains(text(),"Edit")]');
ok($btn);
$btn->click();
#is($d->find_element("name", id)->get_attribute("value"), "reseller 1");
$d->find_element('mod_close', 'id')->click();
$d->find_element('#mod_close', 'css')->click();
diag("Click Terminate on the first reseller shown");
sleep 1; #prevent a StaleElementReferenceException
$row = $d->find_element('//*[@id="Resellers_table"]/tbody/tr[1]');
ok($row);
$d->move_to(element => $row);
$d->move_action(element => $row,xoffset=>1); # 1 because if the mouse doesn't move, the buttons don't appear
$btn = $d->find_child_element($row, './/a[contains(@class,"btn-secondary")]');
ok($btn);
$btn->click();

Loading…
Cancel
Save