@@ -23,69 +23,83 @@ module Selenium
2323 module  WebDriver 
2424
2525 describe  Firefox  do 
26-  compliant_on  :browser  =>  :marionette  do 
27-  context  "when designated firefox binary includes Marionette"  do 
28-  before ( :each )  do 
29-  Selenium ::WebDriver ::Firefox ::Binary . path  =  ENV [ 'MARIONETTE_PATH' ] 
30-  end 
31- 
32-  it  "Uses Wires when initialized with W3C desired_capabilities"  do 
33-  caps  =  Selenium ::WebDriver ::Remote ::W3CCapabilities . firefox 
34-  expect  do 
35-  @driver  =  Selenium ::WebDriver . for  :firefox ,  :desired_capabilities  =>  caps 
36-  end . to_not  raise_exception 
37-  @driver . quit 
38-  end 
26+  before ( :each )  do 
27+  @opt  =  GlobalTestEnv . remote_server?  ? { :url  =>  GlobalTestEnv . remote_server . webdriver_url }  : { } 
28+  end 
3929
40-  it  "Uses Wires when initialized with non W3C desired_capabilities using marionette option"  do 
41-  caps  =  Selenium ::WebDriver ::Remote ::Capabilities . firefox ( :marionette  =>  true ) 
42-  expect  do 
43-  @driver  =  Selenium ::WebDriver . for  :firefox ,  :desired_capabilities  =>  caps 
44-  end . to_not  raise_exception 
45-  @driver . quit 
30+  context  "when designated firefox binary includes Marionette"  do 
31+  before ( :each )  do 
32+  unless  ENV [ 'MARIONETTE_PATH' ] 
33+  pending  "Set ENV['MARIONETTE_PATH'] to test Marionette enabled Firefox installations" 
4634 end 
35+  end 
4736
48-  it  "Uses Wires when initialized with marionette option"  do 
49-  @driver  =  Selenium ::WebDriver . for  :firefox ,  { marionette : true } 
50-  expect ( @driver . instance_variable_get ( '@bridge' ) . instance_variable_get ( '@launcher' ) ) . to  be_nil 
51-  @driver . quit 
37+  compliant_on  :browser  =>  :marionette  do 
38+  # This passes in isolation, but can not run in suite due to combination of 
39+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1228107 & https://github.com/SeleniumHQ/selenium/issues/1150 
40+  not_compliant_on  :driver  =>  :remote  do 
41+  it  "Uses Wires when setting marionette option in capabilities"  do 
42+  cap_opts  =  { :marionette  =>  true } 
43+  cap_opts . merge! ( :firefox_binary  =>  ENV [ 'MARIONETTE_PATH' ] )  unless  GlobalTestEnv . driver  == :remote 
44+  caps  =  Selenium ::WebDriver ::Remote ::Capabilities . firefox  cap_opts 
45+  @opt . merge! ( :desired_capabilities  =>  caps ) 
46+  expect  { @driver  =  Selenium ::WebDriver . for  GlobalTestEnv . driver ,  @opt } . to_not  raise_exception 
47+  @driver . quit 
48+  end 
5249 end 
50+  end 
5351
54-  not_compliant_on  :browser  =>  :marionette  do 
55-  it  "Does not use wires by default"  do 
56-  unless  ENV [ 'MARIONETTE_PATH' ] 
57-  pending  "Set ENV['MARIONETTE_PATH'] to test Marionette enabled Firefox installations" 
58-  end 
52+  compliant_on  :browser  =>  :marionette  do 
53+  # This passes in isolation, but can not run in suite due to combination of 
54+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1228107 & https://github.com/SeleniumHQ/selenium/issues/1150 
55+  not_compliant_on  :driver  =>  :remote  do 
56+  it  "Uses Wires when setting marionette option in driver initialization"  do 
57+  cap_opts  =  GlobalTestEnv . driver  == :remote  ? { }  : { :firefox_binary  =>  ENV [ 'MARIONETTE_PATH' ] } 
58+  caps  =  Selenium ::WebDriver ::Remote ::Capabilities . firefox  cap_opts 
59+  @opt . merge! ( :marionette  =>  true ,  :desired_capabilities  =>  caps ) 
60+  @driver  =  Selenium ::WebDriver . for  GlobalTestEnv . driver ,  @opt 
5961
60-  Selenium ::WebDriver ::Firefox ::Binary . path  =  ENV [ 'MARIONETTE_PATH' ] 
61-  @driver  =  Selenium ::WebDriver . for  :firefox 
62-  expect ( @driver . instance_variable_get ( '@bridge' ) . instance_variable_get ( '@launcher' ) ) . to_not  be_nil 
62+  expect ( @driver . capabilities [ :takes_element_screenshot ] ) . to_not  be_nil 
6363 @driver . quit 
6464 end 
6565 end 
66+  end 
67+ 
68+  # test with firefox due to https://bugzilla.mozilla.org/show_bug.cgi?id=1228121 
69+  compliant_on  :browser  =>  :firefox  do 
70+  it  "Does not use wires when marionette option is not set"  do 
71+  @driver  =  Selenium ::WebDriver . for  GlobalTestEnv . driver ,  @opt 
72+ 
73+  expect ( @driver . capabilities [ :takes_element_screenshot ] ) . to  be_nil 
74+  @driver . quit 
75+  end 
76+  end 
6677
78+  compliant_on  :browser  =>  :marionette  do 
79+  # https://bugzilla.mozilla.org/show_bug.cgi?id=1228107 
6780 not_compliant_on  :browser  =>  :marionette  do 
6881 it_behaves_like  "driver that can be started concurrently" ,  :marionette 
6982 end 
7083 end 
7184 end 
7285
7386 compliant_on  :browser  =>  :firefox  do 
74-  context  "when designated firefox binary does not include Marionette"  do 
75-  let ( :message )  {  /Firefox Version \d \d  does not support Marionette/  } 
87+  # TODO - Adjust specs when default Firefox version includes Marionette 
88+  # TODO - File bug for Unhandled error for remote / firefox 
89+  not_compliant_on  :driver  =>  :remote  do 
90+  context  "when designated firefox binary does not include Marionette"  do 
91+  let ( :message )  {  /does not support Marionette/  } 
7692
77-  it  "Raises Wires Exception when initialized with :desired_capabilities"  do 
78-  caps  =  Selenium ::WebDriver ::Remote ::W3CCapabilities . firefox 
79-  opt  =  { :desired_capabilities  =>  caps } 
80-  expect  {  Selenium ::WebDriver . for  :firefox ,  opt  } . to  raise_exception  ArgumentError ,  message 
81-  end 
82- 
83-  it  "Raises Wires Exception when initialized with marionette option"  do 
84-  expect { Selenium ::WebDriver . for  :firefox ,  { marionette : true } } . to  raise_exception  ArgumentError ,  message 
85-  end 
93+  it  "Raises Wires Exception when setting marionette option in capabilities"  do 
94+  caps  =  Selenium ::WebDriver ::Remote ::Capabilities . firefox ( :marionette  =>  true ) 
95+  @opt . merge! ( :desired_capabilities  =>  caps ) 
96+  expect  {  Selenium ::WebDriver . for  GlobalTestEnv . driver ,  @opt  } . to  raise_exception  ArgumentError ,  message 
97+  end 
8698
87-  it  "Raises Wires Exception when initialized with marionette option"  do 
88-  expect { Selenium ::WebDriver . for  :firefox ,  { marionette : true } } . to  raise_exception  ArgumentError ,  message 
99+  it  "Raises Wires Exception when setting marionette option in driver initialization"  do 
100+  @opt . merge! ( :marionette  =>  true ) 
101+  expect {  Selenium ::WebDriver . for  GlobalTestEnv . driver ,  @opt } . to  raise_exception  ArgumentError ,  message 
102+  end 
89103 end 
90104 end 
91105 end 
0 commit comments