From 3b8651ac2a86ff864d4e6e4a2ed15b5d8dab04b5 Mon Sep 17 00:00:00 2001 From: Gerhard Jungwirth Date: Thu, 3 Sep 2015 14:54:03 +0200 Subject: [PATCH] MT#14585 improve selenium test quality use strict and warnings therefore forbid unquoted strings factor out initialisation screenshot functionality is implemented upstream Change-Id: I18a0dcc7a6418dc9fd2fa64d367ae226018a7645 --- t/lib/Selenium/Remote/Driver/Extensions.pm | 41 ++++++++-- t/selenium/admin-login.t | 23 ++---- t/selenium/controller_billing.t | 95 ++++++++++------------ t/selenium/controller_customer.t | 71 +++++++--------- t/selenium/controller_domain.t | 37 +++------ t/selenium/controller_peering.t | 73 +++++++---------- t/selenium/controller_reseller.t | 33 +++----- 7 files changed, 163 insertions(+), 210 deletions(-) diff --git a/t/lib/Selenium/Remote/Driver/Extensions.pm b/t/lib/Selenium/Remote/Driver/Extensions.pm index 7703464f84..82441b239a 100644 --- a/t/lib/Selenium/Remote/Driver/Extensions.pm +++ b/t/lib/Selenium/Remote/Driver/Extensions.pm @@ -2,9 +2,41 @@ package Selenium::Remote::Driver::Extensions; use warnings; use strict; use Moo; +use Test::More import => [qw(diag ok is)]; use MooseX::Method::Signatures; extends 'Selenium::Remote::Driver'; +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_implicit_wait_timeout(10_000); + $self->default_finder('xpath'); +} + +method login_ok() { + 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"); + $self->find_text("Admin Sign In"); + is($self->get_title, ''); + $self->find_element('username', 'name')->send_keys('administrator'); + $self->find_element('password', 'name')->send_keys('administrator'); + $self->find_element('submit', 'name')->click(); + + diag("Checking Admin interface"); + is($self->get_title, 'Dashboard'); + is($self->find_element('//*[@id="masthead"]//h2')->get_text(), "Dashboard"); + ok(1, "Login Successful"); +} + method select_if_unselected(Str $query, Str $scheme = "xpath") { my $elem = $self->find_element($query, $scheme); return 0 unless $elem; @@ -19,15 +51,6 @@ 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; diff --git a/t/selenium/admin-login.t b/t/selenium/admin-login.t index a49cc871b6..8e5dd83c4b 100644 --- a/t/selenium/admin-login.t +++ b/t/selenium/admin-login.t @@ -1,31 +1,18 @@ +use warnings; +use strict; + use lib 't/lib'; use Test::More import => [qw(done_testing is diag)]; use Selenium::Remote::Driver::Extensions qw(); diag("Init"); -my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000'; 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->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(); - -diag("Checking Admin interface"); -is($d->get_title, 'Dashboard'); -is($d->find_element('//*[@id="masthead"]//h2','xpath')->get_text(), "Dashboard"); +$d->login_ok(); diag("Done: admin-login.t"); done_testing; +# vim: filetype=perl diff --git a/t/selenium/controller_billing.t b/t/selenium/controller_billing.t index d40b30aa90..5d3da8e0ca 100644 --- a/t/selenium/controller_billing.t +++ b/t/selenium/controller_billing.t @@ -1,51 +1,40 @@ +use warnings; +use strict; + use lib 't/lib'; use Test::More import => [qw(done_testing is ok diag todo_skip)]; use Selenium::Remote::Driver::Extensions qw(); diag("Init"); -my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000'; 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->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"); +$d->login_ok(); diag("Go to Billing page"); $d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click(); $d->find_element('//a[contains(@href,"/domain")]'); -$d->find_element("Billing", link_text)->click(); +$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('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_element('#billing_profile_table_filter label input', css); +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); +my $elem = $d->find_element('#billing_profile_table td.dataTables_empty', 'css'); ok($elem); is($elem->get_text, 'No matching records found'); @@ -65,11 +54,11 @@ $d->move_to(element => $row); $edit_link->click(); diag("Edit mytestprofile"); -$elem = $d->find_element('name', id); +$elem = $d->find_element('name', 'id'); 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', 'id', '3.2'); +$d->find_element('save', 'id')->click(); diag('Open "Fees" for mytestprofile'); $row = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestprofile")]/..'); @@ -81,52 +70,50 @@ $edit_link->click(); $d->find_element('//*[@id="masthead"]//h2[contains(text(),"Billing Fees")]'); diag("Create a billing fee"); -$d->find_element('Create Fee Entry', link_text)->click(); +$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', '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('//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', 'id', '.*'); +$d->fill_element('destination', 'name', '.+'); +$d->find_element('save', 'id')->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); -ok(true, "test1"); +ok($row, "Find row"); $d->move_to(element => $row); -ok(true, "test2"); +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(true, "test3"); -$d->find_text("Are you sure?"); -$d->find_element('dataConfirmOK', id)->click(); +ok($d->find_text("Are you sure?")); +$d->find_element('dataConfirmOK', 'id')->click(); diag('skip was here'); -$d->find_text("successfully deleted"); +ok($d->find_text("successfully deleted")); diag("Click Edit Zones"); -$d->find_element("Edit Zones", link_text)->click(); +$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('//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'); +$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->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', 'id')->click(); diag("Go to Billing page (again)"); $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(); +$d->find_element("Billing", 'link_text')->click(); diag('Open "Edit Peak Times" for mytestprofile'); $row = $d->find_element('//table/tbody/tr/td[contains(text(), "mytestprofile")]/..'); @@ -147,19 +134,19 @@ $d->find_element('//table//td[contains(text(),"Wednesday")]/..//a[text()[contain $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', '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->find_element('mod_close', id)->click(); +$d->find_element('mod_close', 'id')->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->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_element('//div[contains(@class,"dataTables_wrapper")]//td[contains(text(),"2008-02-28")]/..'); @@ -170,7 +157,7 @@ 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', 'id')->click(); done_testing; # vim: filetype=perl diff --git a/t/selenium/controller_customer.t b/t/selenium/controller_customer.t index 440cbfd92d..e2920cf2cb 100644 --- a/t/selenium/controller_customer.t +++ b/t/selenium/controller_customer.t @@ -1,28 +1,17 @@ +use strict; +use warnings; + use lib 't/lib'; use Test::More import => [qw(done_testing is ok diag todo_skip)]; use Selenium::Remote::Driver::Extensions qw(); diag("Init"); -my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000'; 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->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"); +$d->login_ok(); my @chars = ("A".."Z", "a".."z"); my $rnd_id; @@ -30,30 +19,30 @@ $rnd_id .= $chars[rand @chars] for 1..8; diag("Go to Customers page"); $d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click(); -$d->find_element("Customers", link_text)->click(); +$d->find_element("Customers", 'link_text')->click(); diag("Create a Customer"); $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->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->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('//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->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('#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); +$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")]'); @@ -64,15 +53,15 @@ $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('div.modal #firstname', 'css', "Alice"); +$d->fill_element('company', 'id', '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->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', 'id')->click(); diag("Check if successful"); $d->find_element('//div[contains(@class,"accordion-body")]//table//td[contains(text(),"Sipwise")]'); @@ -88,16 +77,16 @@ $d->move_to(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', '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->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); +$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")]'); @@ -106,7 +95,7 @@ $d->move_to(element => $row); $edit_link->click(); #sleep 2; $d->find_text("Are you sure?"); -$d->find_element('dataConfirmOK', id)->click(); +$d->find_element('dataConfirmOK', 'id')->click(); $d->find_text("Customer successfully terminated"); done_testing; diff --git a/t/selenium/controller_domain.t b/t/selenium/controller_domain.t index 84c01b3139..6cf05308d2 100644 --- a/t/selenium/controller_domain.t +++ b/t/selenium/controller_domain.t @@ -1,34 +1,23 @@ +use warnings; +use strict; + use lib 't/lib'; -use Test::More import => [qw(done_testing is ok diag skip)]; +use Test::More import => [qw(done_testing is ok diag skip like)]; use Selenium::Remote::Driver::Extensions qw(); use TryCatch; diag("Init"); -my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000'; 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->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"); +$d->login_ok(); diag("Go to Domains page"); $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_element('Domains', 'link_text')->click(); diag("Domains page"); is($d->find_element('//*[@id="masthead"]//h2')->get_text(), "Domains"); @@ -38,7 +27,7 @@ SKIP: { my ($row, $edit_link); try { - $row = $d->find_element('//table[@id="Domain_table"]/tbody/tr[1]', xpath); + $row = $d->find_element('//table[@id="Domain_table"]/tbody/tr[1]'); $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); @@ -49,8 +38,8 @@ SKIP: { $edit_link->click(); diag('Open the tab "Access Restrictions"'); - #$d->location_ok(qr!domain/\d+/preferences!); #/ # FIXME - $d->find_element("Access Restrictions", link_text)->click(); + like($d->get_path, qr!domain/\d+/preferences!); + $d->find_element("Access Restrictions", 'link_text')->click(); diag("Click edit for the preference concurrent_max"); sleep 1; @@ -62,19 +51,19 @@ SKIP: { $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', 'id'); ok($formfield); $formfield->clear(); $formfield->send_keys('thisisnonumber'); - $d->find_element("save", id)->click(); + $d->find_element("save", 'id')->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', 'id'); ok($formfield); $formfield->clear(); $formfield->send_keys('789'); - $d->find_element('save', id)->click(); + $d->find_element('save', 'id')->click(); } done_testing; diff --git a/t/selenium/controller_peering.t b/t/selenium/controller_peering.t index 4c586b95b4..42fae653f6 100644 --- a/t/selenium/controller_peering.t +++ b/t/selenium/controller_peering.t @@ -1,37 +1,26 @@ +use warnings; +use strict; + use lib 't/lib'; use Test::More import => [qw(done_testing is ok diag todo_skip)]; use Selenium::Remote::Driver::Extensions qw(); diag("Init"); -my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000'; 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->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"); +$d->login_ok(); diag("Go to Peerings page"); $d->find_element('//*[@id="main-nav"]//*[contains(text(),"Settings")]')->click(); -$d->find_element("Peerings", link_text)->click(); +$d->find_element("Peerings", 'link_text')->click(); diag("Create a 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(); +$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(); @@ -41,10 +30,10 @@ $d->find_element('//div[contains(@class,"modal-body")]//div//select[@id="status" $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', '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(); +$d->find_element('save', 'id')->click(); diag("Edit Servers/Rules of testinggroup"); my $row = $d->find_element('(//table/tbody/tr/td[contains(text(), "testinggroup")]/..)[1]'); @@ -56,27 +45,27 @@ $edit_link->click(); diag("Create a Peering Rule"); $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(); +$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->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', '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_current_url(); diag('Edit Preferences for "mytestserver".'); sleep 1; #make sure, we are on the right page -$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'); +$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); @@ -85,7 +74,7 @@ $d->move_to(element => $row); $edit_link->click(); diag('Open the tab "Number Manipulations"'); -$d->find_element("Number Manipulations", link_text)->click(); +$d->find_element("Number Manipulations", 'link_text')->click(); diag("Click edit for the preference inbound_upn"); $row = $d->find_element('//table/tbody/tr/td[normalize-space(text()) = "inbound_upn"]'); @@ -97,7 +86,7 @@ $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', 'id')->click(); $d->find_text('Preference inbound_upn successfully updated'); diag("Go back to Servers/Rules"); @@ -107,9 +96,9 @@ my $delete_link; diag('skip was here'); diag("Delete mytestserver"); sleep 1; #make sure, we are on the right page -$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'); +$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")]'); @@ -117,7 +106,7 @@ ok($delete_link); $d->move_to(element => $row); $delete_link->click(); $d->find_text("Are you sure?"); -$d->find_element('dataConfirmOK', id)->click(); +$d->find_element('dataConfirmOK', 'id')->click(); $d->find_text("successfully deleted"); # delete does not work diag("Delete the previously created Peering Rule"); @@ -129,10 +118,10 @@ ok($delete_link); $d->move_to(element => $row); $delete_link->click(); $d->find_text("Are you sure?"); -$d->find_element('dataConfirmOK', id)->click(); +$d->find_element('dataConfirmOK', 'id')->click(); diag('skip was here'); -$d->find_text("successfully deleted"); +ok($d->find_text("successfully deleted")); diag('Go back to "SIP Peering Groups".'); $d->get($peerings_uri); @@ -145,10 +134,10 @@ ok($delete_link); $d->move_to(element => $row); $delete_link->click(); $d->find_text("Are you sure?"); -$d->find_element('dataConfirmOK', id)->click(); +$d->find_element('dataConfirmOK', 'id')->click(); diag('skip was here'); -$d->find_text("successfully deleted"); +ok($d->find_text("successfully deleted")); done_testing; # vim: filetype=perl diff --git a/t/selenium/controller_reseller.t b/t/selenium/controller_reseller.t index 6210691568..04fc30b524 100644 --- a/t/selenium/controller_reseller.t +++ b/t/selenium/controller_reseller.t @@ -1,54 +1,43 @@ +use warnings; +use strict; + use lib 't/lib'; use Test::More import => [qw(done_testing is ok diag)]; use Selenium::Remote::Driver::Extensions qw(); diag("Init"); -my $uri = $ENV{CATALYST_SERVER} || 'http://localhost:3000'; 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->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"); +$d->login_ok(); diag("Go to reseller list"); $d->find_element('//a[@class="btn" and contains(@href,"/reseller")]')->click(); diag("Search nonexisting reseller"); -my $searchfield = $d->find_element('#Resellers_table_filter label input', css); +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_element('#Resellers_table td.dataTables_empty', css); +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_element('#Resellers_table tr.sw_action_row', css); +$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->find_element('Create Reseller', link_text)->click(); -$d->find_element('save', id)->click(); +$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(); +$d->find_element('mod_close', 'id')->click(); diag("Click Edit on the first reseller shown (first row)"); sleep 1; #prevent a StaleElementReferenceException @@ -59,7 +48,7 @@ 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', 'id')->click(); diag("Click Terminate on the first reseller shown"); sleep 1; #prevent a StaleElementReferenceException