package t::WWW::Selenium; use strict; use warnings; use Test::More; use Test::Exception; use Test::Mock::LWP; use base 'WWW::Selenium'; my $ua_timeout = 180; sub new { my $class = shift; my %opts = ( host => 'localhost', port => 4444, browser => '*firefox', browser_url => 'http://example.com', no_deprecation_msg => 1, @_, ); my $self = $class->SUPER::new( %opts ); # Store mock www user agent and startup a session $self->_set_mock_response_content('FAKE_SESSION_ID'); $self->start; $self->ua->mock( timeout => sub { $ua_timeout = $_[1] if $_[1]; return $ua_timeout; } ); # Test that the session was started as we expect my $req_args = $Mock_req->new_args; my $url = "http://$opts{host}:$opts{port}/selenium-server/driver/"; my $content = "cmd=getNewBrowserSession&1=%2Afirefox" . "&2=https%3A%2F%2Ffanyv88.com%3A443%2Fhttp%2Fexample.com"; is $req_args->[1], 'POST'; is $req_args->[2], $url; is $req_args->[4], $content; return $self; } sub _set_mock_response_content { my ($self, $content) = @_; my $msg = $content; if (length($msg) == 0 or $msg !~ /^ERROR/) { $msg = "OK,$msg"; } $Mock_resp->mock( content => sub { $msg } ); } sub _method_exists { my ($self, $method, $return_type) = @_; my $response = 'Something'; $response = 'true' if $method =~ m/^(?:is_|get_whether)/i; $self->_set_mock_response_content($response); lives_ok { $self->$method(1, 2) } "$method lives"; } 1;