Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 1903944862
Fetching contributors…

Cannot retrieve contributors at this time

153 lines (135 sloc) 4.562 kb
#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 45;
use Test::Exception;
use Test::Mock::LWP;
BEGIN {
use lib 'lib';
use_ok 'WWW::Selenium';
use_ok 'Test::WWW::Selenium';
}
Good_usage: {
my $sel = WWW::Selenium->new( host => 'localhost',
port => 4444,
browser => '*firefox',
browser_url => 'http://foo.com'
);
isa_ok $sel, 'WWW::Selenium';
is $sel->{host}, 'localhost';
is $sel->{port}, 4444;
is $sel->{browser_start_command}, '*firefox';
is $sel->{browser_url}, 'http://foo.com';
is $sel->{session_id}, undef;
Start_up_selenium: {
$Mock_resp->mock( content => sub {'OK,SESSION_ID'} );
$sel->start;
is $sel->{session_id}, 'SESSION_ID';
req_ok('cmd=getNewBrowserSession&1=%2Afirefox&2=http%3A%2F%2Ffoo.com');
$Mock_resp->mock( content => sub { 'OK' } );
$sel->open;
}
Execute_command: {
$Mock_resp->mock( content => sub { 'OK,Some Title' } );
is $sel->get_title, 'Some Title';
req_ok('cmd=getTitle&sessionId=SESSION_ID');
}
Close_down_selenium: {
$Mock_resp->mock( content => sub { 'OK' } );
$sel->stop;
is $sel->{session_id}, undef;
req_ok('cmd=testComplete&sessionId=SESSION_ID');
}
}
No_browser_url: {
throws_ok { WWW::Selenium->new } qr#browser_url is mandatory#;
}
Default_args: {
my $sel = WWW::Selenium->new( browser_url => 'http://foo.com' );
is $sel->{host}, 'localhost';
is $sel->{port}, 4444;
is $sel->{browser_start_command}, '*firefox';
is $sel->{browser_url}, 'http://foo.com';
is $sel->{session_id}, undef;
}
start_fails: {
my $sel = WWW::Selenium->new( browser_url => 'http://foo.com' );
$Mock_resp->mock( content => sub { 'Error: foo' } );
throws_ok { $sel->start } qr#Error: foo#;
}
Failing_command: {
my $sel = WWW::Selenium->new( browser_url => 'http://foo.com' );
$Mock_resp->mock( content => sub { 'OK,SESSION_ID' } );
$sel->start;
$sel->open;
$Mock_resp->mock( content => sub { 'Error: foo' } );
throws_ok { $sel->get_title } qr#Error: foo#;
$Mock_resp->mock( content => sub { 'OK' } );
}
Multi_values: {
my $sel = WWW::Selenium->new( browser_url => 'http://foo.com' );
$Mock_resp->mock( content => sub { 'OK,SESSION_ID' } );
$sel->start;
$sel->open;
my %testcases = (
'one,two,three' => [qw(one two three)],
'one\\,two' => ['one,two'],
);
my %skip_testcases = (
'veni\, vidi\, vici,c:\\foo\\bar,c:\\I came\, I \\saw\\\, I conquered',
=> ['veni, vidi, vici',
'c:\foo\bar',
'c:\I came, I \saw\, I conquered',
],
'one\\\\,two' => ['one\\,two'],
'one\\\\\\,two' => ['one\\', 'two'],
);
my $tester = sub {
my $tests = shift;
for my $k (keys %$tests) {
$Mock_resp->mock( content => sub { "OK,$k" } );
my $fields = [$sel->get_all_fields];
is_deeply $fields, $tests->{$k}, "parsing $k";
}
};
$tester->(\%testcases);
TODO: {
local $TODO = 'Need to fix get_string_array';
$tester->(\%skip_testcases);
}
}
Stop_called_twice: {
my $sel = WWW::Selenium->new( browser_url => 'http://foo.com' );
$Mock_resp->mock( content => sub { 'OK,SESSION_ID' } );
$sel->start;
is $sel->{session_id}, 'SESSION_ID';
$Mock_resp->mock( content => sub { 'OK' } );
$sel->stop;
is $sel->{session_id}, undef;
req_ok('cmd=testComplete&sessionId=SESSION_ID');
$sel->stop;
is_deeply $Mock_req->new_args, undef;
}
With_session_id: {
my $sel = Test::WWW::Selenium->new(
browser_url => 'http://foo.com',
session_id => 'MY_ID',
);
$Mock_resp->mock( content => sub { die "Should never be called!" } );
$sel->start;
is $sel->{session_id}, 'MY_ID';
$Mock_resp->mock( content => sub { 'OK' } );
$sel->stop;
is $sel->{session_id}, undef;
req_ok('cmd=testComplete&sessionId=MY_ID');
$sel->stop;
is_deeply $Mock_req->new_args, undef;
}
exit;
sub req_ok {
my $content = shift;
my $args = $Mock_req->new_args;
is $args->[0], 'HTTP::Request';
is $args->[1], 'GET';
is $args->[2], "http://localhost:4444/selenium-server/driver/?$content";
}
Jump to Line
Something went wrong with that request. Please try again.