@@ -337,7 +337,10 @@ defmodule Wallaby.Chrome do
337337 base_url = Chromedriver . base_url ( )
338338 create_session_fn = Keyword . get ( opts , :create_session_fn , & WebdriverClient . create_session / 2 )
339339
340- capabilities = Keyword . get ( opts , :capabilities , capabilities_from_config ( opts ) )
340+ capabilities =
341+ opts
342+ |> Keyword . get_lazy ( :capabilities , fn -> capabilities_from_config ( opts ) end )
343+ |> put_beam_metadata ( opts )
341344
342345 with { :ok , response } <- create_session_fn . ( base_url , capabilities ) do
343346 id = response [ "sessionId" ]
@@ -361,7 +364,7 @@ defmodule Wallaby.Chrome do
361364 defp capabilities_from_config ( opts ) do
362365 :wallaby
363366 |> Application . get_env ( :chromedriver , [ ] )
364- |> Keyword . get ( :capabilities , default_capabilities ( opts ) )
367+ |> Keyword . get_lazy ( :capabilities , & default_capabilities / 0 )
365368 |> put_headless_config ( opts )
366369 |> put_binary_config ( opts )
367370 end
@@ -543,13 +546,7 @@ defmodule Wallaby.Chrome do
543546 defdelegate log ( session_or_element ) , to: WebdriverClient
544547
545548 @ doc false
546- def default_capabilities ( opts \\ [ ] ) do
547- user_agent =
548- Metadata . append (
549- "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36" ,
550- opts [ :metadata ]
551- )
552-
549+ def default_capabilities do
553550 chrome_options =
554551 maybe_put_chrome_executable ( % {
555552 args: [
@@ -558,7 +555,7 @@ defmodule Wallaby.Chrome do
558555 "--disable-gpu" ,
559556 "--headless" ,
560557 "--fullscreen" ,
561- "--user-agent=#{ user_agent } "
558+ "--user-agent=Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36 "
562559 ]
563560 } )
564561
@@ -609,6 +606,22 @@ defmodule Wallaby.Chrome do
609606 end )
610607 end
611608
609+ defp put_beam_metadata ( capabilities , opts ) do
610+ capabilities
611+ |> update_in ( [ :chromeOptions , :args ] , fn args ->
612+ for arg <- args do
613+ case String . split ( arg , "=" ) do
614+ [ "--user-agent" , user_agent ] ->
615+ new_user_agent = Metadata . append ( user_agent , opts [ :metadata ] )
616+ "--user-agent=#{ new_user_agent } "
617+
618+ _ ->
619+ arg
620+ end
621+ end
622+ end )
623+ end
624+
612625 defp resolve_opt ( opts , key ) do
613626 case Keyword . fetch ( opts , key ) do
614627 { :ok , value } -> value
0 commit comments