Bläddra i källkod

Use tiny role to set wd_context_prefix for fun

Daniel Gempesaw 10 år sedan
förälder
incheckning
cba8af2aae

+ 1 - 5
lib/Selenium/Remote/Driver.pm

@@ -392,11 +392,6 @@ has 'remote_conn' => (
     },
 );
 
-has 'wd_context_prefix' => (
-    is => 'lazy',
-    default => sub { '/wd/hub' }
-);
-
 has 'error_handler' => (
     is => 'rw',
     coerce => sub {
@@ -518,6 +513,7 @@ has 'inner_window_size' => (
 );
 
 with 'Selenium::Remote::Finders';
+with 'Selenium::Remote::Driver::CanSetWebdriverContext';
 
 sub BUILD {
     my $self = shift;

+ 11 - 0
lib/Selenium/Remote/Driver/CanSetWebdriverContext.pm

@@ -0,0 +1,11 @@
+package Selenium::Remote::Driver::CanSetWebdriverContext;
+
+# ABSTRACT: Customize the webdriver context prefix for various drivers
+use Moo::Role;
+
+has 'wd_context_prefix' => (
+    is => 'lazy',
+    default => sub { '/wd/hub' }
+);
+
+1;

+ 1 - 4
lib/Selenium/Remote/RemoteConnection.pm

@@ -36,10 +36,7 @@ has 'error_handler' => (
     builder => sub { return Selenium::Remote::ErrorHandler->new; }
 );
 
-has 'wd_context_prefix' => (
-    is => 'lazy',
-    default => sub { '/wd/hub' }
-);
+with 'Selenium::Remote::Driver::CanSetWebdriverContext';
 
 sub check_status {
     my $self = shift;

+ 16 - 0
t/CanSetWebdriverContext.t

@@ -0,0 +1,16 @@
+use strict;
+use warnings;
+use Test::More;
+
+{
+    package SetWebdriverContext;
+    use Moo;
+    with 'Selenium::Remote::Driver::CanSetWebdriverContext';
+
+}
+
+my $prefix = SetWebdriverContext->new;
+ok($prefix->can('wd_context_prefix'), 'role grants wd context prefix attr');
+is($prefix->wd_context_prefix, '/wd/hub', 'role has proper default webdriver context');
+
+done_testing;