├── config ├── dev.exs ├── docs.exs ├── prod.exs ├── test.exs └── config.exs ├── .tool-versions ├── .release-please-manifest.json ├── test ├── wallaby │ ├── metadata_test.exs │ ├── query │ │ └── xpath_test.exs │ ├── driver │ │ ├── utils_test.exs │ │ └── temporary_path_test.exs │ ├── helpers │ │ └── key_codes_test.exs │ ├── chrome │ │ └── logger_test.exs │ ├── selenium_test.exs │ ├── selenium │ │ └── start_session_config_test.exs │ ├── http_client_test.exs │ ├── session_store_test.exs │ └── browser_test.exs ├── test_helper.exs └── support │ ├── json_wire_protocol_responses.ex │ ├── settings_test_helpers.ex │ ├── utils.ex │ ├── application_control.ex │ ├── http_client_case.ex │ ├── test_workspace.ex │ ├── test_script_utils.ex │ └── chrome │ └── chrome_test_script.ex ├── coveralls.json ├── integration_test ├── support │ ├── fixtures │ │ └── file.txt │ ├── pages │ │ ├── page_3.html │ │ ├── page_1.ex │ │ ├── frames.html │ │ ├── windows.html │ │ ├── index_page.ex │ │ ├── stale_nodes.html │ │ ├── errors.html │ │ ├── index.html │ │ ├── logs.html │ │ ├── nesting.html │ │ ├── wait.html │ │ ├── move_mouse.html │ │ ├── page_2.html │ │ ├── dialogs.html │ │ ├── click.html │ │ ├── select_boxes.html │ │ ├── mouse_down_and_up.html │ │ ├── page_1.html │ │ └── touch.html │ ├── test_server.ex │ ├── session_case.ex │ └── helpers.ex ├── cases │ ├── browser │ │ ├── title_test.exs │ │ ├── attr_test.exs │ │ ├── all_test.exs │ │ ├── hover_test.exs │ │ ├── navigation_test.exs │ │ ├── window_position_test.exs │ │ ├── has_css_test.exs │ │ ├── double_click_test.exs │ │ ├── move_mouse_by_test.exs │ │ ├── tap_test.exs │ │ ├── touch_scroll_test.exs │ │ ├── page_source_test.exs │ │ ├── send_keys_to_active_element_test.exs │ │ ├── current_path_test.exs │ │ ├── touch_move_test.exs │ │ ├── has_value_test.exs │ │ ├── stale_nodes_test.exs │ │ ├── window_size_test.exs │ │ ├── touch_up_test.exs │ │ ├── send_keys_test.exs │ │ ├── clear_test.exs │ │ ├── invalid_selectors_test.exs │ │ ├── js_errors_test.exs │ │ ├── text_test.exs │ │ ├── frames_test.exs │ │ ├── has_text_test.exs │ │ ├── visible_test.exs │ │ ├── click_mouse_button_test.exs │ │ ├── button_down_test.exs │ │ ├── select_test.exs │ │ ├── assert_text_test.exs │ │ ├── local_storage_test.exs │ │ ├── touch_down_test.exs │ │ ├── assert_css_test.exs │ │ ├── file_test.exs │ │ ├── set_value_test.exs │ │ ├── button_up_test.exs │ │ ├── cookies_test.exs │ │ ├── window_handles_test.exs │ │ ├── assert_refute_has_test.exs │ │ ├── fill_in_test.exs │ │ ├── dialog_test.exs │ │ ├── click_test.exs │ │ ├── execute_script_test.exs │ │ └── find_test.exs │ ├── feature │ │ ├── import_feature_test.exs │ │ ├── use_feature_test.exs │ │ └── automatic_screenshot_test.exs │ ├── element │ │ ├── size_test.exs │ │ ├── location_test.exs │ │ ├── hover_test.exs │ │ ├── tap_test.exs │ │ ├── touch_scroll_test.exs │ │ ├── send_keys_test.exs │ │ └── touch_down_test.exs │ ├── wallaby_test.exs │ ├── browser_test.exs │ └── inspect_test.exs ├── chrome │ ├── test_helper.exs │ └── all_test.exs ├── selenium │ ├── test_helper.exs │ ├── all_test.exs │ └── selenium_capabilities_test.exs └── tests.exs ├── guides └── images │ ├── icon.png │ └── logo.png ├── .formatter.exs ├── .gitignore ├── .dialyzer_ignore.exs ├── lib ├── wallaby │ ├── driver │ │ ├── external_command.ex │ │ ├── utils.ex │ │ ├── temporary_path.ex │ │ ├── log_checker.ex │ │ └── log_store.ex │ ├── session.ex │ ├── chrome │ │ ├── chromedriver.ex │ │ ├── logger.ex │ │ └── chromedriver │ │ │ └── readiness_checker.ex │ ├── dsl.ex │ ├── metadata.ex │ ├── exceptions.ex │ ├── session_store.ex │ ├── helpers │ │ └── key_codes.ex │ ├── query │ │ └── xpath.ex │ └── httpclient.ex ├── event_emitter.ex └── wallaby.ex ├── .github ├── dependabot.yml ├── workflows │ ├── lint-commit.yaml │ └── release.yaml ├── FUNDING.yml └── ISSUE_TEMPLATE │ └── issue.yaml ├── release-please-config.json ├── bin └── docker-run ├── priv └── run_command.sh ├── LICENSE.md ├── flake.nix ├── NOTICE.md ├── flake.lock ├── mix.exs └── .credo.exs /config/dev.exs: -------------------------------------------------------------------------------- 1 | import Config 2 | -------------------------------------------------------------------------------- /config/docs.exs: -------------------------------------------------------------------------------- 1 | import Config 2 | -------------------------------------------------------------------------------- /config/prod.exs: -------------------------------------------------------------------------------- 1 | import Config 2 | -------------------------------------------------------------------------------- /.tool-versions: -------------------------------------------------------------------------------- 1 | elixir 1.19.1-otp-28 2 | erlang 28.1.1 -------------------------------------------------------------------------------- /.release-please-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | ".": "0.30.11" 3 | } 4 | -------------------------------------------------------------------------------- /test/wallaby/metadata_test.exs: -------------------------------------------------------------------------------- 1 | defmodule Wallaby.MetadataTest do 2 | end 3 | -------------------------------------------------------------------------------- /coveralls.json: -------------------------------------------------------------------------------- 1 | { 2 | "skip_files": [ 3 | "test/support" 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /integration_test/support/fixtures/file.txt: -------------------------------------------------------------------------------- 1 | @stevegraham was here. Wallaby FTW. 2 | -------------------------------------------------------------------------------- /test/wallaby/query/xpath_test.exs: -------------------------------------------------------------------------------- 1 | defmodule Wallaby.XPathTest do 2 | use ExUnit.Case 3 | end 4 | -------------------------------------------------------------------------------- /guides/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elixir-wallaby/wallaby/HEAD/guides/images/icon.png -------------------------------------------------------------------------------- /guides/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elixir-wallaby/wallaby/HEAD/guides/images/logo.png -------------------------------------------------------------------------------- /test/test_helper.exs: -------------------------------------------------------------------------------- 1 | ExUnit.configure(exclude: [pending: true]) 2 | EventEmitter.start_link([]) 3 | 4 | ExUnit.start() 5 | -------------------------------------------------------------------------------- /.formatter.exs: -------------------------------------------------------------------------------- 1 | # Used by "mix format" 2 | [ 3 | inputs: ["{mix,.formatter}.exs", "{config,lib,integration_test,test}/**/*.{ex,exs}"] 4 | ] 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /_build 2 | /cover 3 | /deps 4 | erl_crash.dump 5 | *.ez 6 | /.tool-versions-e 7 | 8 | /screenshots 9 | /doc 10 | /benchmarks/html 11 | /docs 12 | -------------------------------------------------------------------------------- /config/test.exs: -------------------------------------------------------------------------------- 1 | import Config 2 | 3 | # Prevents timeouts in ExUnit 4 | config :wallaby, 5 | hackney_options: [timeout: 10_000, recv_timeout: 10_000], 6 | tmp_dir_prefix: "wallaby_test" 7 | -------------------------------------------------------------------------------- /integration_test/support/pages/page_3.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |