wallaby v0.21.0 Wallaby View Source
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 tofalse
).:max_wait_time
- The amount of time that Wallaby should wait to find an element on the page. (defaults to3_000
):js_errors
- if Wallaby should re-throw javascript errors in elixir (defaults to true).:js_logger
- IO device where javascript console logs are written to. Defaults to :stdio. This option can also be set to a file or any other io device. You can disable javascript console logging by setting this tonil
.:phantomjs
- The path to the phantomjs executable (defaults to “phantomjs”):phantomjs_args
- Any extra arguments that should be passed to phantomjs (defaults to “”)
Link to this section Summary
Link to this section Types
Link to this type
start_session_opts()
View Source
start_session_opts() :: {:driver, module()} | {atom(), any()}
Link to this section Functions
Link to this function
end_session(session)
View Source
end_session(Wallaby.Session.t()) :: :ok | {:error, reason()}
Ends a browser session.
Link to this function
start_session(opts \\ [])
View Source
start_session([start_session_opts()]) :: {:ok, Wallaby.Session.t()} | {:error, reason()}
Starts a browser session.
Multiple sessions
Each session runs in its own browser so that each test runs in isolation. Because of this isolation multiple sessions can be created for a test:
@message_field Query.text_field("Share Message")
@share_button Query.button("Share")
@message_list Query.css(".messages")
test "That multiple sessions work" do
{:ok, user1} = Wallaby.start_session
user1
|> visit("/page.html")
|> fill_in(@message_field, with: "Hello there!")
|> click(@share_button)
{:ok, user2} = Wallaby.start_session
user2
|> visit("/page.html")
|> fill_in(@message_field, with: "Hello yourself")
|> click(@share_button)
assert user1 |> find(@message_list) |> List.last |> text == "Hello yourself"
assert user2 |> find(@message_list) |> List.first |> text == "Hello there"
end