From 5879cfe0e15589922824a3ef15602bbc71fd4354 Mon Sep 17 00:00:00 2001 From: Alexander Lutay Date: Fri, 28 Aug 2015 18:10:48 +0200 Subject: [PATCH] MT#14585 Move selenium tests on Selenium::Remote::Driver(::Extensions) Change-Id: I5c2133598196a620d4e8a6376beb800cdde81f3c --- t/lib/Selenium/Remote/Driver/Extensions.pm | 46 ++++++ t/lib/Test/WebDriver/Sipwise.pm | 59 ------- t/selenium/admin-login.t | 33 ++-- t/selenium/controller_billing.t | 179 +++++++++++---------- t/selenium/controller_customer.t | 124 +++++++------- t/selenium/controller_domain.t | 71 ++++---- t/selenium/controller_peering.t | 158 +++++++++--------- t/selenium/controller_reseller.t | 68 ++++---- 8 files changed, 380 insertions(+), 358 deletions(-) create mode 100644 t/lib/Selenium/Remote/Driver/Extensions.pm delete mode 100644 t/lib/Test/WebDriver/Sipwise.pm diff --git a/t/lib/Selenium/Remote/Driver/Extensions.pm b/t/lib/Selenium/Remote/Driver/Extensions.pm new file mode 100644 index 0000000000..7703464f84 --- /dev/null +++ b/t/lib/Selenium/Remote/Driver/Extensions.pm @@ -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; diff --git a/t/lib/Test/WebDriver/Sipwise.pm b/t/lib/Test/WebDriver/Sipwise.pm deleted file mode 100644 index dce9df7bdf..0000000000 --- a/t/lib/Test/WebDriver/Sipwise.pm +++ /dev/null @@ -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; \ No newline at end of file diff --git a/t/selenium/admin-login.t b/t/selenium/admin-login.t index b4102b3f9c..a49cc871b6 100644 --- a/t/selenium/admin-login.t +++ b/t/selenium/admin-login.t @@ -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; diff --git a/t/selenium/controller_billing.t b/t/selenium/controller_billing.t index 2674c6d9b9..d40b30aa90 100644 --- a/t/selenium/controller_billing.t +++ b/t/selenium/controller_billing.t @@ -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 diff --git a/t/selenium/controller_customer.t b/t/selenium/controller_customer.t index b032639240..440cbfd92d 100644 --- a/t/selenium/controller_customer.t +++ b/t/selenium/controller_customer.t @@ -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 diff --git a/t/selenium/controller_domain.t b/t/selenium/controller_domain.t index 7a647db418..84c01b3139 100644 --- a/t/selenium/controller_domain.t +++ b/t/selenium/controller_domain.t @@ -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; diff --git a/t/selenium/controller_peering.t b/t/selenium/controller_peering.t index 7a2f50fd1c..4c586b95b4 100644 --- a/t/selenium/controller_peering.t +++ b/t/selenium/controller_peering.t @@ -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 diff --git a/t/selenium/controller_reseller.t b/t/selenium/controller_reseller.t index 5db0a40c45..6210691568 100644 --- a/t/selenium/controller_reseller.t +++ b/t/selenium/controller_reseller.t @@ -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