From e5248774afd0182d6caea3187818ada71eeb1a94 Mon Sep 17 00:00:00 2001 From: bernhard Date: Sun, 11 Apr 2021 15:46:03 +0200 Subject: [PATCH 01/13] Issue #335: a bit of refactoring in _check_ok() --- lib/Test/Selenium/Remote/Role/DoesTesting.pm | 23 ++++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/lib/Test/Selenium/Remote/Role/DoesTesting.pm b/lib/Test/Selenium/Remote/Role/DoesTesting.pm index fb38d0c2..2f3d0c30 100644 --- a/lib/Test/Selenium/Remote/Role/DoesTesting.pm +++ b/lib/Test/Selenium/Remote/Role/DoesTesting.pm @@ -23,9 +23,11 @@ has _builder => ( sub _get_finder_key { my $self = shift; my $finder_value = shift; + foreach my $k ( keys %{ $self->FINDERS } ) { return $k if ( $self->FINDERS->{$k} eq $finder_value ); } + return; } @@ -56,7 +58,7 @@ sub _check_method { sub _check_ok { my $self = shift; my $method = shift; - my $real_method = ''; + my @args = @_; my ( $rv, $num_of_args, @r_args ); try { @@ -86,30 +88,26 @@ sub _check_ok { # quick hack to fit 'find_no_element' into check_ok logic if ( $method eq 'find_no_element' ) { - $real_method = $method; - # If we use `find_element` and find nothing, the error # handler is incorrectly invoked. Doing a `find_elements` # and checking that it returns an empty array does not # invoke the error_handler. See # https://github.com/gempesaw/Selenium-Remote-Driver/issues/253 - $method = 'find_elements'; - my $elements = $self->$method(@r_args); - if ( scalar(@$elements) ) { + my $elements = $self->find_elements(@r_args); + if ( @{$elements} ) { $rv = $elements->[0]; } else { - $rv = 1; + $rv = 1; # empty list means success } } else { - $rv = $self->$method(@r_args); + $rv = $self->$method(@r_args); # a true $rv means success } } catch { - if ($real_method) { - $method = $real_method; - $rv = 1; + if ($method eq 'find_no_element') { + $rv = 1; # an exception from find_elements() means success } else { $self->croak($_); @@ -123,11 +121,12 @@ sub _check_ok { my $test_name = pop @args // $default_test_name; # case when find_no_element found an element, we should croak - if ( $real_method eq 'find_no_element' ) { + if ( $method eq 'find_no_element' ) { if ( blessed($rv) && $rv->isa('Selenium::Remote::WebElement') ) { $self->croak($test_name); } } + return $self->ok( $rv, $test_name ); } From 5e4b17c5edc0565e8bbeb94d2022458681560587 Mon Sep 17 00:00:00 2001 From: bernhard Date: Sun, 11 Apr 2021 15:53:09 +0200 Subject: [PATCH 02/13] Issue #335: Use $method for the generic test name, as $method is no longer changed in the sub. Slightly nicer formatting of the generic test name. --- lib/Test/Selenium/Remote/Role/DoesTesting.pm | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/Test/Selenium/Remote/Role/DoesTesting.pm b/lib/Test/Selenium/Remote/Role/DoesTesting.pm index 2f3d0c30..e10cd5e4 100644 --- a/lib/Test/Selenium/Remote/Role/DoesTesting.pm +++ b/lib/Test/Selenium/Remote/Role/DoesTesting.pm @@ -114,11 +114,16 @@ sub _check_ok { } }; - my $default_test_name = $method; - $default_test_name .= "'" . join( "' ", @r_args ) . "'" - if $num_of_args > 0; - - my $test_name = pop @args // $default_test_name; + # test description might have been explicitly passed + my $test_name = pop @args; + + # generic test description when no explicit test description was passed + if ( ! defined $test_name ) { + $test_name = $num_of_args > 0 ? + join( ' ', $method, map { q{'$_'} } @r_args ) + : + $method; + } # case when find_no_element found an element, we should croak if ( $method eq 'find_no_element' ) { From e0576bb348295c04f8373228e17b23d997527680 Mon Sep 17 00:00:00 2001 From: bernhard Date: Sun, 11 Apr 2021 15:56:00 +0200 Subject: [PATCH 03/13] Issue #335: refactor _build_sub() Use early return where possible. --- lib/Test/Selenium/Remote/Role/DoesTesting.pm | 57 ++++++++++++-------- 1 file changed, 34 insertions(+), 23 deletions(-) diff --git a/lib/Test/Selenium/Remote/Role/DoesTesting.pm b/lib/Test/Selenium/Remote/Role/DoesTesting.pm index e10cd5e4..c4caa615 100644 --- a/lib/Test/Selenium/Remote/Role/DoesTesting.pm +++ b/lib/Test/Selenium/Remote/Role/DoesTesting.pm @@ -140,39 +140,50 @@ sub _check_ok { sub _build_sub { my $self = shift; my $meth_name = shift; - my @func_args; - my $comparators = { + + # e.g. for $meth_name = 'find_no_element_ok': + # $meth_comp = 'ok' + # $meth_without_comp = 'find_no_element' + my @meth_elements = split '_', $meth_name; + my $meth_comp = pop @meth_elements; + my $meth_without_comp = join '_', @meth_elements; + + # handle the ok testing methods + if ( $meth_comp eq 'ok' ) { + return sub { + my $self = shift; + + local $Test::Builder::Level = $Test::Builder::Level + 2; + + return $self->_check_ok($meth_without_comp, @_); + }; + } + + # find the Test::More comparator method + my %comparators = ( is => 'is_eq', isnt => 'isnt_eq', like => 'like', unlike => 'unlike', - }; - my @meth_elements = split( '_', $meth_name ); - my $meth = '_check_ok'; - my $meth_comp = pop @meth_elements; - if ( $meth_comp eq 'ok' ) { - push @func_args, join( '_', @meth_elements ); - } - else { - if ( defined( $comparators->{$meth_comp} ) ) { - $meth = '_check_method'; - push @func_args, join( '_', @meth_elements ), - $comparators->{$meth_comp}; - } - else { - return sub { - my $self = shift; - $self->croak("Sub $meth_name could not be defined"); - } - } + ); + + # croak on unknown comparator methods + if ( ! exists $comparators{$meth_comp} ) { + return sub { + my $self = shift; + + return $self->croak("Sub $meth_name could not be defined"); + }; } + # handle check in _check_method() return sub { my $self = shift; + local $Test::Builder::Level = $Test::Builder::Level + 2; - $self->$meth( @func_args, @_ ); - }; + return $self->_check_method( $meth_without_comp, $comparators{$meth_comp}, @_ ); + }; } 1; From 59592a263b0cc28adecfc46f766795fa4833e996 Mon Sep 17 00:00:00 2001 From: Keita Jamadam Sugama Date: Tue, 1 Jun 2021 07:51:10 +0900 Subject: [PATCH 04/13] make waiter timeout recognizable --- lib/Selenium/Waiter.pm | 4 +++- t/13-waiter.t | 44 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 t/13-waiter.t diff --git a/lib/Selenium/Waiter.pm b/lib/Selenium/Waiter.pm index f4326751..13109e42 100644 --- a/lib/Selenium/Waiter.pm +++ b/lib/Selenium/Waiter.pm @@ -93,7 +93,9 @@ sub wait_until (&%) { my $start = time; my $timeout_not_elapsed = sub { my $elapsed = time - $start; - return $elapsed < $args->{timeout}; + my $ret = $elapsed < $args->{timeout}; + warn 'timeout' if ( !$ret && $args->{debug} ); + return $ret; }; my $exception = ''; diff --git a/t/13-waiter.t b/t/13-waiter.t new file mode 100644 index 00000000..dc291be4 --- /dev/null +++ b/t/13-waiter.t @@ -0,0 +1,44 @@ +use strict; +use warnings; + +use Selenium::Waiter; + +use FindBin; +use lib $FindBin::Bin . '/lib'; +use Test::More; + +my $res; + +subtest 'basic' => sub { + $res = wait_until { 1 }; + is $res, 1, 'right return value'; + + $res = wait_until { 0 } timeout => 1; + is $res, '', 'right return value'; +}; + +subtest 'exception' => sub { + my @warning; + local $SIG{__WARN__} = sub { push( @warning, $_[0] ) }; + + $res = wait_until { die 'case1' } debug => 0, timeout => 1; + is $res, '', 'right return value'; + is( scalar @warning, 1, 'right number of warnings' ); + like( $warning[0], qr{^case1}, 'right warning' ); + + @warning = (); + eval { + $res = wait_until { die 'case2' } die => 1, timeout => 1; + }; + like $@, qr{case2}, 'right error'; + is $res, '', 'right return value'; + is( scalar @warning, 0, 'right number of warnings' ); + + @warning = (); + $res = wait_until { 0 } debug => 1, timeout => 1; + is $res, '', 'right return value'; + is( scalar @warning, 1, 'right number of warnings' ); + like( $warning[0], qr{timeout}i, 'timeout is reported' ); +}; + +done_testing; From 217cb5683171acfe635b9570dc041653f5db7645 Mon Sep 17 00:00:00 2001 From: Keita Jamadam Sugama Date: Tue, 1 Jun 2021 08:23:38 +0900 Subject: [PATCH 05/13] better implimentation for warning timeout --- lib/Selenium/Waiter.pm | 6 +++--- t/13-waiter.t | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/Selenium/Waiter.pm b/lib/Selenium/Waiter.pm index 13109e42..60166e8d 100644 --- a/lib/Selenium/Waiter.pm +++ b/lib/Selenium/Waiter.pm @@ -93,9 +93,7 @@ sub wait_until (&%) { my $start = time; my $timeout_not_elapsed = sub { my $elapsed = time - $start; - my $ret = $elapsed < $args->{timeout}; - warn 'timeout' if ( !$ret && $args->{debug} ); - return $ret; + return $elapsed < $args->{timeout}; }; my $exception = ''; @@ -120,6 +118,8 @@ sub wait_until (&%) { return $try_ret if $try_ret; } + warn 'timeout' if $args->{debug}; + # No need to repeat ourselves if we're already debugging. warn $exception if $exception && !$args->{debug}; return ''; diff --git a/t/13-waiter.t b/t/13-waiter.t index dc291be4..009ab0fd 100644 --- a/t/13-waiter.t +++ b/t/13-waiter.t @@ -10,11 +10,16 @@ use Test::More; my $res; subtest 'basic' => sub { + my @warning; + local $SIG{__WARN__} = sub { push( @warning, $_[0] ) }; + $res = wait_until { 1 }; is $res, 1, 'right return value'; $res = wait_until { 0 } timeout => 1; is $res, '', 'right return value'; + + is( scalar @warning, 0, 'no warnings' ); }; subtest 'exception' => sub { From de954c9931a2e1c8919e704d4efee10f3ec01cbd Mon Sep 17 00:00:00 2001 From: "George S. Baugh" Date: Wed, 16 Jun 2021 01:05:03 -0500 Subject: [PATCH 06/13] fix whitespace, nobody runs dzil test --- lib/Selenium/Waiter.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Selenium/Waiter.pm b/lib/Selenium/Waiter.pm index 60166e8d..d17ba2cc 100644 --- a/lib/Selenium/Waiter.pm +++ b/lib/Selenium/Waiter.pm @@ -119,7 +119,7 @@ sub wait_until (&%) { } warn 'timeout' if $args->{debug}; - + # No need to repeat ourselves if we're already debugging. warn $exception if $exception && !$args->{debug}; return ''; From f40b14ffd40c3787be7b36de0b26dacde4f86ee2 Mon Sep 17 00:00:00 2001 From: "George S. Baugh" Date: Thu, 21 Oct 2021 11:15:35 -0500 Subject: [PATCH 07/13] fix #476 --- Changes | 3 +++ dist.ini | 2 +- t/error.t | 25 ------------------------- 3 files changed, 4 insertions(+), 26 deletions(-) diff --git a/Changes b/Changes index 09fd2474..de637271 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,8 @@ Revision history for Selenium-Remote-Driver +1.45 2021-10-21 TEODESIAN + - Remove ill-advised test reaching out to saucelabs at install-time, vendors are the users' problem + 1.44 2021-03-26 TEODESIAN - Remove all usage of default profiles for Firefox when in direct binary mode. diff --git a/dist.ini b/dist.ini index 70b4449f..fdad9b0c 100644 --- a/dist.ini +++ b/dist.ini @@ -1,5 +1,5 @@ name = Selenium-Remote-Driver -version = 1.44 +version = 1.45 author = George S. Baugh author = Aditya Ivaturi author = Daniel Gempesaw diff --git a/t/error.t b/t/error.t index f52cf9e0..888dcc26 100644 --- a/t/error.t +++ b/t/error.t @@ -43,29 +43,4 @@ LOCAL: { 'Error message for not finding a selenium server is helpful' ); } -SAUCE: { - SKIP: { - my $host = 'ondemand.saucelabs.com'; - my $port = 80; - my $sock = IO::Socket::INET->new( - PeerAddr => $host, - PeerPort => $port, - ); - - skip 'Cannot reach saucelabs for Sauce error case ', 1 - unless $sock; - - like(exception { - Selenium::Remote::Driver->new_from_caps( - remote_server_addr => $host, - port => $port, - desired_capabilities => { - browserName => 'invalid' - } - ); - }, qr/Sauce Labs/, - 'Saucelabs errors are passed to user'); - - } -} done_testing; From 32fb391b2a9ae0db19c389c429e122db7e752f41 Mon Sep 17 00:00:00 2001 From: Yuki Kimoto Date: Tue, 30 Nov 2021 07:55:54 +0900 Subject: [PATCH 08/13] Improve Selenium::Remote::WDKeys documents. Add SYNOPSIS, CONSTANT KEYS, FUNCTIONS --- lib/Selenium/Remote/WDKeys.pm | 76 +++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/lib/Selenium/Remote/WDKeys.pm b/lib/Selenium/Remote/WDKeys.pm index 630a3550..72172398 100644 --- a/lib/Selenium/Remote/WDKeys.pm +++ b/lib/Selenium/Remote/WDKeys.pm @@ -6,6 +6,82 @@ package Selenium::Remote::WDKeys; The constant KEYS is defined here. +=head1 SYNOPSIS + + use Selenium::Remote::WDKeys; + + my $space_key = KEYS->{'space'}; + my $enter_key = KEYS->{'enter'}; + +=head1 CONSTANT KEYS + + null + cancel + help + backspace + tab + clear + return + enter + shift + control + alt + pause + escape + space + page_up + page_down + end + home + left_arrow + up_arrow + right_arrow + down_arrow + insert + delete + semicolon + equals + numpad_0 + numpad_1 + numpad_2 + numpad_3 + numpad_4 + numpad_5 + numpad_6 + numpad_7 + numpad_8 + numpad_9 + multiply + add + separator + subtract + decimal + divide + f1 + f2 + f3 + f4 + f5 + f6 + f7 + f8 + f9 + f10 + f11 + f12 + command_meta + ZenkakuHankaku + +=head1 FUNCTIONS + +Functions of Selenium::Remote::WDKeys. + +=head2 KEYS + + my $keys = KEYS(); + +A hash reference that contains constant keys. This function is exported by default. + =cut use strict; From a1af51e00c96cc59958b0d5212c554e88fc08016 Mon Sep 17 00:00:00 2001 From: "George S. Baugh" Date: Sat, 4 Dec 2021 08:50:20 -0600 Subject: [PATCH 09/13] prep for 1.46 release --- Changes | 3 +++ dist.ini | 2 +- lib/Selenium/Remote/WDKeys.pm | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Changes b/Changes index de637271..ae6b1b2a 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,8 @@ Revision history for Selenium-Remote-Driver +1.46 2021-12-04 TEODESIAN + - Document the keys of WDKEYS hash in POD. Contribution by Yuki Kimoto. + 1.45 2021-10-21 TEODESIAN - Remove ill-advised test reaching out to saucelabs at install-time, vendors are the users' problem diff --git a/dist.ini b/dist.ini index fdad9b0c..9a04a15a 100644 --- a/dist.ini +++ b/dist.ini @@ -1,5 +1,5 @@ name = Selenium-Remote-Driver -version = 1.45 +version = 1.46 author = George S. Baugh author = Aditya Ivaturi author = Daniel Gempesaw diff --git a/lib/Selenium/Remote/WDKeys.pm b/lib/Selenium/Remote/WDKeys.pm index 72172398..db1c00fc 100644 --- a/lib/Selenium/Remote/WDKeys.pm +++ b/lib/Selenium/Remote/WDKeys.pm @@ -9,10 +9,10 @@ The constant KEYS is defined here. =head1 SYNOPSIS use Selenium::Remote::WDKeys; - + my $space_key = KEYS->{'space'}; my $enter_key = KEYS->{'enter'}; - + =head1 CONSTANT KEYS null From 70079958a4f9ef9d54deaaed8efce560b5121307 Mon Sep 17 00:00:00 2001 From: George Baugh Date: Sun, 17 Apr 2022 12:50:01 +0000 Subject: [PATCH 10/13] Fix #480 --- lib/Selenium/ActionChains.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/Selenium/ActionChains.pm b/lib/Selenium/ActionChains.pm index 11eed73d..a7b3cf3a 100644 --- a/lib/Selenium/ActionChains.pm +++ b/lib/Selenium/ActionChains.pm @@ -147,7 +147,7 @@ sub key_up { } foreach my $v (@$value) { push @{ $self->actions }, - sub { $self->driver->$self->driver->general_action( actions => [ { type => 'key', id => 'key', actions => [ { type => 'keyUp', value => $v } ] } ] ) }; + sub { $self->driver->general_action( actions => [ { type => 'key', id => 'key', actions => [ { type => 'keyUp', value => $v } ] } ] ) }; } return $self; } From 1bef5df31bf67005aa5e6069e91a0b80cbf84650 Mon Sep 17 00:00:00 2001 From: George Baugh Date: Tue, 3 May 2022 00:47:26 +0000 Subject: [PATCH 11/13] more DWIMmery and docu in Selenium::ActionChains --- lib/Selenium/ActionChains.pm | 82 ++++++++++++++++++++++++++---------- 1 file changed, 60 insertions(+), 22 deletions(-) diff --git a/lib/Selenium/ActionChains.pm b/lib/Selenium/ActionChains.pm index a7b3cf3a..64eec836 100644 --- a/lib/Selenium/ActionChains.pm +++ b/lib/Selenium/ActionChains.pm @@ -127,11 +127,12 @@ sub move_to_element_with_offset { } sub key_down { - my $self = shift; - my ( $value, $element ) = @_; - if ( defined($element) ) { - $self->click($element); - } + my ( $self, $value, $element ) = @_; + + #DWIM + $value = [$value] unless ref $value eq 'ARRAY'; + + $self->click($element) if defined $element; foreach my $v (@$value) { push @{ $self->actions }, sub { $self->driver->general_action( actions => [ { type => 'key', id => 'key', actions => [ { type => 'keyDown', value => $v } ] } ] ) }; @@ -140,11 +141,12 @@ sub key_down { } sub key_up { - my $self = shift; - my ( $value, $element ) = @_; - if ( defined($element) ) { - $self->click($element); - } + my ( $self, $value, $element ) = @_; + + #DWIM + $value = [$value] unless ref $value eq 'ARRAY'; + + $self->click($element) if defined $element; foreach my $v (@$value) { push @{ $self->actions }, sub { $self->driver->general_action( actions => [ { type => 'key', id => 'key', actions => [ { type => 'keyUp', value => $v } ] } ] ) }; @@ -153,17 +155,40 @@ sub key_up { } sub send_keys { - my $self = shift; - my $keys = shift; + my ($self,$keys) =@_; + + # Do nothing if there are no keys to send + return unless $keys; + + # DWIM + $keys = [split('',$keys)] unless ref $keys eq 'ARRAY'; + push @{ $self->actions }, - sub { $self->driver->get_active_element->send_keys($keys) }; + sub { + foreach my $key (@$keys) { + $self->key_down($key, $self->driver->get_active_element); + $self->key_up($key, $self->driver->get_active_element); + } + }; $self; } sub send_keys_to_element { - my $self = shift; - my ( $element, $keys ) = @_; - push @{ $self->actions }, sub { $element->send_keys($keys) }; + my ($self, $element, $keys) =@_; + + # Do nothing if there are no keys to send + return unless $keys; + + # DWIM + $keys = [split('',$keys)] unless ref $keys eq 'ARRAY'; + + push @{ $self->actions }, + sub { + foreach my $key (@$keys) { + $self->key_down($key,$element); + $self->key_up($key,$element); + } + }; $self; } @@ -311,7 +336,9 @@ LIMITATIONS. =head2 key_down Sends key presses only, without releasing them. -Should be used only with modifier keys (Control, Alt, Shift) +Useful when modifier keys are requried + +Will DWIM your input and accept either a string or ARRAYREF of keys. Args: An array ref to keys to send. Use the KEY constant from Selenium::Remote::WDKeys @@ -319,12 +346,16 @@ Should be used only with modifier keys (Control, Alt, Shift) Usage: use Selenium::Remote::WDKeys 'KEYS'; - $action_chains->key_down( [ KEYS->{'alt'} ] ); + # DEFINITELY cut and paste this in without looking + $action_chains->key_down( [ KEYS->{'alt'}, KEYS->{'F4'} ] ); =head2 key_up -Releases a mofifier key. +Releases prior key presses. +Useful when modifier keys are requried + +Will DWIM your input and accept either a string or ARRAYREF of keys. Args: An array ref to keys to send. Use the KEY constant from Selenium::Remote::WDKeys @@ -332,8 +363,10 @@ Releases a mofifier key. Usage: use Selenium::Remote::WDKeys 'KEYS'; + # Fullscreen the foo element my $element = $driver->find_element('foo','id'); - $action_chains->key_up( [ KEYS->{'alt'} ],$element); + $action_chains->key_down( [ KEYS->{'alt'}, KEYS->{'enter'} ], $element ); + $action_chains->key_up( [ KEYS->{'alt'}, KEYS->{'enter'} ], $element); =head2 move_by_offset @@ -388,7 +421,10 @@ Releases a held mouse_button =head2 send_keys -Sends keys to the currently focused element +Sends keys to the currently focused element. +Essentially an alias around key_down then key_up. + +Will DWIM your input and accept either a string or ARRAYREF of keys. Args: The keys to send @@ -398,7 +434,9 @@ Sends keys to the currently focused element =head2 send_keys_to_element -Sends keys to an element +Sends keys to an element in much the same fashion as send_keys. + +Will DWIM your input and accept either a string or ARRAYREF of keys. Args: A Selenium::Remote::WebElement From 301f6e94e2649bfdccbd8a34fb725e34e1c67ba7 Mon Sep 17 00:00:00 2001 From: George Baugh Date: Tue, 3 May 2022 00:49:34 +0000 Subject: [PATCH 12/13] bump for 1.47 --- Changes | 3 +++ dist.ini | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Changes b/Changes index ae6b1b2a..8b1fb62b 100644 --- a/Changes +++ b/Changes @@ -1,5 +1,8 @@ Revision history for Selenium-Remote-Driver +1.47 2022-05-02 TEODESIAN + - Add DWIM to inputs accepted by ActionChains send_keys, key_up & key_down, and add some docu + 1.46 2021-12-04 TEODESIAN - Document the keys of WDKEYS hash in POD. Contribution by Yuki Kimoto. diff --git a/dist.ini b/dist.ini index 9a04a15a..31f192bc 100644 --- a/dist.ini +++ b/dist.ini @@ -1,5 +1,5 @@ name = Selenium-Remote-Driver -version = 1.46 +version = 1.47 author = George S. Baugh author = Aditya Ivaturi author = Daniel Gempesaw From 5433518b87839d70dece8ff8a289b5de424dff66 Mon Sep 17 00:00:00 2001 From: George Baugh Date: Thu, 5 May 2022 12:27:05 +0000 Subject: [PATCH 13/13] dont carp always in test --- t/Test-Selenium-Remote-Driver-google.t | 1 - 1 file changed, 1 deletion(-) diff --git a/t/Test-Selenium-Remote-Driver-google.t b/t/Test-Selenium-Remote-Driver-google.t index 04ab1115..99663cbc 100644 --- a/t/Test-Selenium-Remote-Driver-google.t +++ b/t/Test-Selenium-Remote-Driver-google.t @@ -18,7 +18,6 @@ my $harness = TestHarness->new( ); my %selenium_args = %{ $harness->base_caps }; -use Carp::Always; my $selfmock = Test::MockModule->new('Selenium::Remote::Driver'); $selfmock->mock('new_session', sub { my $self = shift; $self->{session_id} = "58aff7be-e46c-42c0-ae5e-571ea1c1f466" });