Packages
wallaby
0.30.5
0.31.0
0.30.12
0.30.11
0.30.10
0.30.9
0.30.8
0.30.7
0.30.6
0.30.5
0.30.4
0.30.3
0.30.2
0.30.1
0.30.0
0.29.1
0.29.0
0.28.1
0.28.0
0.27.0
0.26.2
0.26.1
0.26.0
0.25.1
0.25.0
0.24.1
0.24.0
0.23.0
0.22.0
0.21.0
0.20.0
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.17.0
0.16.1
0.16.0
0.15.0
0.14.0
0.13.0
0.12.0
0.11.1
0.11.0
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.1
0.3.0
0.2.0
0.1.0
0.0.1
Concurrent feature tests for elixir
Current section
Files
Jump to
Current section
Files
lib/wallaby/chrome/chromedriver/readiness_checker.ex
defmodule Wallaby.Chrome.Chromedriver.ReadinessChecker do
@moduledoc false
alias WebDriverClient.Config
alias WebDriverClient.ServerStatus
@type url :: String.t()
@spec wait_until_ready(url, non_neg_integer()) :: :ok
def wait_until_ready(base_url, delay \\ 200)
when is_binary(base_url) and is_integer(delay) and delay >= 0 do
if ready?(base_url) do
:ok
else
Process.sleep(delay)
wait_until_ready(base_url, delay)
end
end
@spec ready?(url) :: boolean
defp ready?(base_url) do
base_url
|> build_config()
|> WebDriverClient.fetch_server_status()
|> case do
{:ok, %ServerStatus{ready?: true}} -> true
_ -> false
end
end
# @spec build_config(url) :: Config.t()
def build_config(base_url) do
# Chromedriver responds to the status endpoint check in w3c
# protocol.
Config.build(base_url,
protocol: :w3c,
http_client_options: hackney_options()
)
end
@default_httpoison_options [hackney: [pool: :wallaby_pool]]
# The :hackney_options key in the environment is misnamed. These
# are actually the options as they're passed to HTTPoison.
@spec hackney_options() :: list
defp hackney_options do
:wallaby
|> Application.get_env(:hackney_options, @default_httpoison_options)
|> Keyword.get(:hackney, [])
end
end