1 # frozen_string_literal: true 2 3 # Licensed to the Software Freedom Conservancy (SFC) under one 4 # or more contributor license agreements. See the NOTICE file 5 # distributed with this work for additional information 6 # regarding copyright ownership. The SFC licenses this file 7 # to you under the Apache License, Version 2.0 (the 8 # "License"); you may not use this file except in compliance 9 # with the License. You may obtain a copy of the License at 10 # 11 # http://www.apache.org/licenses/LICENSE-2.0 12 # 13 # Unless required by applicable law or agreed to in writing, 14 # software distributed under the License is distributed on an 15 # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 # KIND, either express or implied. See the License for the 17 # specific language governing permissions and limitations 18 # under the License. 19 20 module Selenium 21 module WebDriver 22 module Firefox 23 class Service < WebDriver::Service 24 DEFAULT_PORT = 4444 25 EXECUTABLE = 'geckodriver' 26 MISSING_TEXT = <<~ERROR 27 Unable to find Mozilla geckodriver. Please download the server from 28 https://github.com/mozilla/geckodriver/releases and place it somewhere on your PATH. 29 More info at https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver. 30 ERROR 31 SHUTDOWN_SUPPORTED = false 32 33 private 34 35 def extract_service_args(driver_opts) 36 driver_args = super 37 driver_opts = driver_opts.dup 38 driver_args << "--binary=#{driver_opts[:binary]}" if driver_opts.key?(:binary) 39 driver_args << "--log=#{driver_opts[:log]}" if driver_opts.key?(:log) 40 driver_args << "--marionette-port=#{driver_opts[:marionette_port]}" if driver_opts.key?(:marionette_port) 41 driver_args << "--host=#{driver_opts[:host]}" if driver_opts.key?(:host) 42 driver_args 43 end 44 end # Service 45 end # Firefox 46 end # WebDriver 47 end # Selenium