Packages
wallaby
0.11.0
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.ex
defmodule Wallaby do
@moduledoc """
A concurrent feature testing library.
## Configuration
Wallaby supports the following options:
* `:pool_size` - Maximum amount of phantoms to run. The default is `:erlang.system_info(:schedulers_online) * 2`.
* `:screenshot_dir` - The directory to store screenshots.
* `:screenshot_on_failure` - if Wallaby should take screenshots on test failures (defaults to `false`).
* `:max_wait_time` - The amount of time that Wallaby should wait to find an element on the page. (defaults to `3_000`)
* `:js_errors` - if Wallaby should re-throw javascript errors in elixir (defaults to true).
* `:phantomjs` - The path to the phantomjs executable (defaults to "phantomjs")
* `:phantomjs_args` - Any extra arguments that should be passed to phantomjs (defaults to "")
"""
use Application
@pool_name Wallaby.ServerPool
def start(_type, _args) do
import Supervisor.Spec, warn: false
children = [
:poolboy.child_spec(@pool_name, poolboy_config, []),
worker(Wallaby.LogStore, []),
]
opts = [strategy: :one_for_one, name: Wallaby.Supervisor]
Supervisor.start_link(children, opts)
end
def start_session(opts \\ []) do
server = :poolboy.checkout(@pool_name, true, :infinity)
Wallaby.Driver.create(server, opts)
end
def end_session(%Wallaby.Session{server: server}) do
:poolboy.checkin(Wallaby.ServerPool, server)
end
def screenshot_on_failure? do
Application.get_env(:wallaby, :screenshot_on_failure)
end
def pool_size do
Application.get_env(:wallaby, :pool_size) || default_pool_size
end
def js_errors? do
Application.get_env(:wallaby, :js_errors, true)
end
def phantomjs_path do
Application.get_env(:wallaby, :phantomjs, "phantomjs")
end
defp poolboy_config do
[name: {:local, @pool_name},
worker_module: Wallaby.Server,
size: pool_size,
max_overflow: 0]
end
defp default_pool_size do
:erlang.system_info(:schedulers_online)
end
end