Condition Coverage

blib/lib/WWW/Mechanize/Chrome.pm
Criterion Covered Total %
condition 22 560 3.9


and 3 conditions

line !l l&&!r l&&r condition
492 0 0 0 exists $options->{'enable_first_run'} and $options->{'enable_first_run'}
519 0 0 0 exists $options->{'default_browser_check'} and $options->{'default_browser_check'}
556 0 0 0 $^O =~ /mswin/i && $program =~ /[\s|<>&]/
813 0 0 0 $lines-- and not defined $devtools_url
0 0 0 $lines-- and not defined $devtools_url and not eof $fh
914 1 0 0 $options{'tab'} and $options{'tab'} eq "current"
942 1 0 0 $options{'driver'} and $options{'driver_transport'}
1117 0 0 0 $self->{'kill_pid'} and my $pid = delete $self->{'pid'}
1271 1 0 0 &blessed($self) and $self->target
1440 0 0 0 $targetInfo->{'params'}{'targetInfo'}{'type'} eq "page" and not $known_targets{$id}
1973 0 1 0 $_[0]{'autoclose'} and $_[0]->target
1 0 0 $_[0]{'autoclose'} and $_[0]->target and $_[0]->tab
1995 0 1 0 $_[0]{'autoclose'} and $_[0]{'kill_pid'}
2001 0 0 0 $pid and kill 0, $pid
2017 0 0 0 $res != -1 and $res != $pid
2246 0 0 0 $ev->{'method'} eq 'Page.navigatedWithinDocument' && $requestId && (!exists $ev->{'params'}{'requestId'} || $ev->{'params'}{'requestId'} eq $requestId)
2248 0 0 0 $ev->{'method'} eq 'Page.frameClearedScheduledNavigation' && $ev->{'params'}{'frameId'} eq $frameId
2261 0 0 0 $ev->{'method'} eq 'Network.loadingFailed' && $requestId && $ev->{'params'}{'requestId'} eq $requestId
2266 0 0 0 $ev->{'method'} eq 'Network.responseReceived' && $requestId && $ev->{'params'}{'requestId'} eq $requestId && exists $ev->{'params'}{'response'}{'headers'}{'Content-Disposition'} && $ev->{'params'}{'response'}{'headers'}{'Content-Disposition'} =~ /^attachment\b/
2298 0 0 0 $ev->{'method'} eq "Page.frameResized" and 0 + keys(%{$$ev{"params"};}) == 0
2371 0 0 0 not $options{'intrapage'} and $navigated
2608 0 0 0 defined $frameId and $_->{'method'} eq "Network.requestWillBeSent"
0 0 0 defined $frameId and $_->{'method'} eq "Network.requestWillBeSent" and $_->{'params'}{'frameId'} eq $frameId
2611 0 0 0 $url and $_->{'params'}{'request'}{'url'} eq $url
2631 0 0 0 exists $_->{'params'}{'requestId'} and $_->{'params'}{'requestId'} eq $requestId
0 0 0 not exists $_->{'params'}{'requestId'} and $this_frame eq $frameId
2647 0 0 0 $_->{'method'} eq "Network.requestWillBeSent" and $rfi eq $fi
2666 0 0 0 $events{'Page.frameNavigated'} && $events{'Page.frameNavigated'}{'params'}{'frame'}{'url'} eq 'about:blank'
2667 0 0 0 $res = $events{'Page.frameNavigated'} and $res->{'params'}{'frame'}{'unreachableUrl'}
0 0 0 $res = $events{'Page.frameNavigated'} and $res->{'params'}{'frame'}{'url'} =~ m[^file://]
0 0 0 $res = $events{'Page.frameClearedScheduledNavigation'} and $res->{'params'}{'frameId'} eq $frameId
0 0 0 $res = $events{'Page.frameStoppedLoading'} and $res->{'params'}{'frameId'} eq $frameId
3033 0 0 0 $self->status and not $self->status =~ /^2/
0 0 0 $self->status and not $self->status =~ /^2/ and $self->status != 0
3492 0 0 0 not $ct and my $r = $self->response
3517 0 0 0 defined $self->ct && $self->ct eq 'text/html'
3729 0 0 0 defined $p->{'url'} and not $link->url eq $p->{'url'}
3730 0 0 0 defined $p->{'url_regex'} and not $link->url =~ /$p->{'url_regex'}/
3731 0 0 0 defined $p->{'url_abs'} and not $link->url_abs eq $p->{'url_abs'}
3732 0 0 0 defined $p->{'url_abs_regex'} and not $link->url_abs =~ /$p->{'url_abs_regex'}/
3733 0 0 0 defined $link->text && $link->text eq $p->{'text'}
0 0 0 defined $p->{'text'} and not defined $link->text && $link->text eq $p->{'text'}
3734 0 0 0 defined $link->text && $link->text =~ /$p->{'text_regex'}/
0 0 0 defined $p->{'text_regex'} and not defined $link->text && $link->text =~ /$p->{'text_regex'}/
3735 0 0 0 defined $link->name && $link->name eq $p->{'name'}
0 0 0 defined $p->{'name'} and not defined $link->name && $link->name eq $p->{'name'}
3736 0 0 0 defined $link->name && $link->name =~ /$p->{'name_regex'}/
0 0 0 defined $p->{'name_regex'} and not defined $link->name && $link->name =~ /$p->{'name_regex'}/
3737 0 0 0 $link->tag && $link->tag eq $p->{'tag'}
0 0 0 defined $p->{'tag'} and not $link->tag && $link->tag eq $p->{'tag'}
3738 0 0 0 $link->tag && $link->tag =~ /$p->{'tag_regex'}/
0 0 0 defined $p->{'tag_regex'} and not $link->tag && $link->tag =~ /$p->{'tag_regex'}/
3740 0 0 0 $link->attrs->{'id'} && $link->attrs->{'id'} eq $p->{'id'}
0 0 0 defined $p->{'id'} and not $link->attrs->{'id'} && $link->attrs->{'id'} eq $p->{'id'}
3741 0 0 0 $link->attrs->{'id'} && $link->attrs->{'id'} =~ /$p->{'id_regex'}/
0 0 0 defined $p->{'id_regex'} and not $link->attrs->{'id'} && $link->attrs->{'id'} =~ /$p->{'id_regex'}/
3742 0 0 0 $link->attrs->{'class'} && $link->attrs->{'class'} eq $p->{'class'}
0 0 0 defined $p->{'class'} and not $link->attrs->{'class'} && $link->attrs->{'class'} eq $p->{'class'}
3743 0 0 0 $link->attrs->{'class'} && $link->attrs->{'class'} =~ /$p->{'class_regex'}/
0 0 0 defined $p->{'class_regex'} and not $link->attrs->{'class'} && $link->attrs->{'class'} =~ /$p->{'class_regex'}/
3765 0 0 0 $single and exists $opts{'n'}
3984 0 0 0 "html" ne $tag and "" ne $tag
4130 0 0 0 $nodeGeneration != $s->{'_currentNodeGeneration'} && $retries--
4322 0 0 0 $inSubTree and exists $foundNodes{$node->{'nodeId'}}
4374 0 0 0 defined wantarray and not wantarray
4421 0 0 0 not $zero_allowed and @res == 0
4424 0 0 0 not $two_allowed and @res > 1
4530 0 0 0 ref $name and &blessed($name)
0 0 0 ref $name and &blessed($name) and $name->isa("WWW::Mechanize::Chrome::Node")
5047 0 0 0 defined $index and not $index =~ /^\d+$/
5118 0 0 0 defined $pre and not ref $pre
5121 0 0 0 defined $post and not ref $post
5135 0 0 0 lc $tag eq "input" and $obj->get_attribute("type", "live", 1) eq "radio"
5234 0 0 0 defined $pre and not ref $pre
5237 0 0 0 defined $post and not ref $post
5426 0 0 0 ref $name and &blessed($name)
5831 0 0 0 $v and !$timeout || time < $timeout_after
5844 0 0 0 $v and $timeout
0 0 0 $v and $timeout and time >= $timeout_after
6463 0 0 0 @{$_->{'trace'};} && $_->{'trace'}[-1]{'function'}

or 2 conditions

line l !l condition
438 0 0 $options->{'launch_arg'} ||= []
451 0 0 $options->{'port'} //= 9222
454 0 0 $options->{'port'} ||= 0
841 0 0 $self->_generation || 0
870 1 0 $t->new->type || 'websocket'
892 0 1 $options{'startup_timeout'} //= 20
894 0 1 $options{'js_events'} ||= []
902 0 1 $options{'host'} || '127.0.0.1'
905 0 1 $options{'extra_headers'} ||= {}
908 0 0 $options{'tab'} ||= undef
910 0 1 $options{'tab'} ||= 0
944 0 0 $options{'port'} //= 9222
1506 0 0 $options{'latency'} //= -1
0 0 $options{'downloadThroughput'} //= -1
0 0 $options{'uploadThroughput'} //= -1
1745 0 0 $_->{'type'} || ''
2170 0 0 $frameId || '-'
2185 0 0 $frameId || '-'
2216 0 0 $frameId || '-'
2544 0 0 $res->{'params'}{'response'}{'status'} || 200
2566 0 0 $ct ||= "text/plain"
2589 0 0 $res->{'params'}{'response'}{'status'} || 599
2645 0 0 $frameId || ''
2646 0 0 $_->{'params'}{'frameId'} || ''
2738 0 0 $res->{'params'}{'response'}{'status'} || 200
3176 0 0 shift() || 20
3261 0 0 $self->ct || 'text/html'
3318 0 0 $options{'format'} ||= "html"
3627 0 0 ref $query || ''
3768 0 0 delete $opts{'n'} || 1
3868 0 0 $opts{'n'} || ''
4110 0 0 $s->{'_currentNodeGeneration'} //= 0
4349 0 0 ref $query || ''
4360 0 0 $options{'index'} || 0
4426 0 0 $_->get_text || '<no text>'
4452 0 0 ref $query || ''
4545 0 0 $options{'name'} || ''
4747 0 0 shift() || \*STDOUT
4750 0 0 $form->get_attribute('name', 'live', 1) || '<no name>'
4756 0 0 $f->get_attribute('type', 'live', 1) || ''
4760 0 0 $f->get_attribute('name') || '<no name>'
4953 0 0 $options{'keys'} ||= [map({"type", "char", "text", $_}, split(//, $options{'string'}, 0))]
5123 0 0 $pre ||= ["focus"]
5124 0 0 $post ||= ["change"]
5239 0 0 $pre ||= ["focus"]
5240 0 0 $post ||= ["change"]
5363 0 0 "HASH" eq ref $value or ""
0 0 "ARRAY" eq ref $value or ""
5475 0 0 $target->get_attribute('checked', 'live', 1) || ''
5594 0 0 delete $options{'fields'} || {}
5609 0 0 $options{'x'} || 0
0 0 $options{'y'} || 0
5818 0 0 delete $options{'sleep'} || 0.3
5819 0 0 delete $options{'timeout'} || 0
5820 0 0 delete $options{'max_wait'} || 0
5887 0 0 delete $options{'sleep'} || 0.3
5888 0 0 delete $options{'timeout'} || 0
6072 0 0 $options{'save'} ||= undef
6073 0 0 $options{'seen'} ||= {}
6074 0 0 $options{'names'} ||= {}
6075 0 0 $options{'target_dir'} ||= "."
6076 0 0 $options{'wanted'} ||= sub ($res) {
6341 0 0 $options{'format'} ||= "png"
6507 0 0 $options{'format'} ||= "png"
6508 0 0 $options{'everyNthFrame'} ||= 1

or 3 conditions

line l !l&&r !l&&!r condition
436 0 0 0 'File::Spec'->rel2abs($program) || $program
459 0 0 0 $options->{'listen_host'} or $options->{'host'}
460 0 0 0 $options->{'listen_host'} || $options->{'host'}
488 0 0 0 not exists $options->{'enable_automation'} or $options->{'enable_automation'}
496 0 0 0 not exists $options->{'mute_audio'} or $options->{'mute_audio'}
500 0 0 0 $options->{'no_sandbox'} || !exists $options->{'no_zygote'}
859 0 1 3 ref $options->{'transport'} or $options->{'transport'}
1 0 3 ref $options->{'transport'} or $options->{'transport'} or $ENV{'WWW_MECHANIZE_CHROME_TRANSPORT'}
912 0 1 0 $options{'existing_tab'} ||= defined $options{'tab'}
921 0 1 0 $options{'connection_style'} || $ENV{'WWW_MECHANIZE_CHROME_CONNECTION_STYLE'} || $class->connection_style(\%options)
922 0 0 1 $options{'port'} or $options{'pid'}
934 0 1 0 $options{'cleanup_signal'} ||= $^O =~ /mswin32/i ? "SIGKILL" : ($^O =~ /darwin/i ? "SIGKILL" : "SIGTERM")
938 0 1 0 ref $class || $class
940 0 1 0 $self->{'log'} ||= $self->_build_log
1000 0 0 0 $options{'driver_transport'} ||= "Chrome::DevToolsProtocol"->new(@connection, "transport", $options{'transport'}, "log", $options{'log'}, &maybe("json_log_fh", scalar delete $options{'json_log_fh'}))
1016 0 0 0 $options{'target'} ||= "Chrome::DevToolsProtocol::Target"->new("auto_close", 0, "transport", delete $options{'driver_transport'}, "error_handler", sub {
1103 0 0 0 !$options{'existing_tab'} || $options{'new_tab'}
1298 0 0 0 $self->{'chrome_version'} ||= do {
1506 0 0 0 $options{'offline'} //= JSON::false()
2180 0 0 0 $ev->{'method'} eq "Page.frameStartedLoading" or $ev->{'method'} eq "Page.frameScheduledNavigation"
0 0 0 $ev->{'method'} eq "Page.frameStartedLoading" or $ev->{'method'} eq "Page.frameScheduledNavigation" or $ev->{'method'} eq "Network.requestWillBeSent"
2191 0 0 0 $ev->{'method'} eq "Page.frameStartedLoading" or $ev->{'method'} eq "Page.frameScheduledNavigation"
0 0 0 $ev->{'method'} eq "Page.frameStartedLoading" or $ev->{'method'} eq "Page.frameScheduledNavigation" or $ev->{'method'} eq "Network.requestWillBeSent"
2211 0 0 0 $options{'frameId'} || $self->frameId
2212 0 0 0 $options{'requestId'} || $self->requestId
2232 0 0 0 $frameId ||= $s->_fetchFrameId($ev)
2233 0 0 0 $requestId ||= $s->_fetchRequestId($ev)
2240 0 0 0 $ev->{'method'} eq 'Page.frameStoppedLoading' && $ev->{'params'}{'frameId'} eq $frameId || $ev->{'method'} eq 'Network.loadingFinished' && (!$ev->{'params'}{'frameId'} || $ev->{'params'}{'frameId'} eq ($frameId || '')) && (!$ev->{'params'}{'requestId'} || $ev->{'params'}{'requestId'} eq ($requestId || ''))
2248 0 0 0 $internal_navigation ||= $ev->{'method'} eq 'Page.frameClearedScheduledNavigation' && $ev->{'params'}{'frameId'} eq $frameId
2268 0 0 0 $stopped || $internal_navigation || $failed || $download
2329 0 0 0 $frameId ||= $s->_fetchFrameId($ev)
2345 0 0 0 $frameId ||= $s->_fetchFrameId($ev)
2346 0 0 0 $requestId ||= $s->_fetchRequestId($ev)
2381 0 0 0 $self->{'frameId'} ||= $nav->{'frameId'}
2614 0 0 0 $requestId ||= $_->{'params'}{'requestId'}
2630 0 0 0 exists $_->{'params'}{'frameId'} && $_->{'params'}{'frameId'} || exists $_->{'params'}{'frame'}{'id'} && $_->{'params'}{'frame'}{'id'}
2648 0 0 0 $requestId ||= $_->{'params'}{'requestId'}
2649 0 0 0 $loaderId ||= $_->{'params'}{'loaderId'}
2650 0 0 0 $requestId ||= $_->{'params'}{'requestId'}
2658 0 0 0 $events{$_->{'method'}} ||= $_
2911 0 0 0 $self->{'cookie_jar'} ||= do {
3035 0 0 0 $self->response->message || sprintf('Got status code %d', $self->status)
3471 0 0 0 $base ||= $self->uri
3626 0 0 0 $options{'user_info'} ||= "CSS selector '${query}'"
3764 0 0 0 delete $opts{'one'} || $single
3785 0 0 0 $lefthand{$lvalue} || '@' . $lvalue
4364 0 0 0 $single || $first || $maybe || $any
4365 0 0 0 $options{'user_info'} ||= join("|", @$query)
4368 0 0 0 $single || $first
4369 0 0 0 !($single || $maybe) || defined $options{'index'}
4373 0 0 0 exists $options{'all'} or $return_first_element
4456 0 0 0 $options{'user_info'} ||= "id " . join(" or ", map({"'${_}'";} @$query)) . " found"
4592 0 0 0 $rename{$meth} || $meth
4671 0 0 0 $node ||= $self->xpath($xpath, "node", $self->current_form, "single", 1, "user_message", $user_message)
5246 0 0 0 $index == 1 or $index =~ /[^1]1$/
0 0 0 $index == 2 or $index =~ /[^1]2$/
0 0 0 $index == 3 or $index =~ /[^1]3$/
5821 0 0 0 $timeout ||= $wait
5831 0 0 0 !$timeout || time < $timeout_after
5896 0 0 0 not $timeout_after or time < $timeout_after
5954 0 0 0 $target->{'scalex'} || $target->{'scaley'}
6133 0 0 0 $names{$resource->{'url'}} ||= "File::Spec"->catfile($target_dir, $names{$resource->{'url'}})

xor 4 conditions

line l&&r l&&!r !l&&r !l&&!r condition
5476 0 0 0 0 $set xor $is_set