class Capybara::Playwright::Driver

Public Class Methods

new(app, **options) click to toggle source
# File lib/capybara/playwright/driver.rb, line 9
def initialize(app, **options)
  @browser_runner = BrowserRunner.new(options)
  @page_options = PageOptions.new(options)
end

Public Instance Methods

invalid_element_errors() click to toggle source
# File lib/capybara/playwright/driver.rb, line 73
def invalid_element_errors
  @invalid_element_errors ||= [
    Node::NotActionableError,
    Node::StaleReferenceError,
  ].freeze
end
needs_server?() click to toggle source
# File lib/capybara/playwright/driver.rb, line 15
def needs_server?; true; end
no_such_window_error() click to toggle source
# File lib/capybara/playwright/driver.rb, line 80
def no_such_window_error
  Browser::NoSuchWindowError
end
reset!() click to toggle source
# File lib/capybara/playwright/driver.rb, line 49
def reset!
  # screenshot is available only before closing page.
  if callback_on_save_screenshot?
    raw_screenshot = @browser&.raw_screenshot
    if raw_screenshot
      callback_on_save_screenshot(raw_screenshot)
    end
  end

  # video path can be aquired only before closing context.
  # video is completedly saved only after closing context.
  video_path = @browser&.video_path

  # [NOTE] @playwright_browser should keep alive for better performance.
  # Only `Browser` is disposed.
  @browser&.clear_browser_contexts

  if video_path
    callback_on_save_screenrecord(video_path)
  end

  @browser = nil
end
wait?() click to toggle source
# File lib/capybara/playwright/driver.rb, line 14
def wait?; true; end

Private Instance Methods

browser() click to toggle source
# File lib/capybara/playwright/driver.rb, line 17
        def browser
  @browser ||= ::Capybara::Playwright::Browser.new(
    driver: self,
    playwright_browser: playwright_browser,
    page_options: @page_options.value,
    record_video: callback_on_save_screenrecord?,
  )
end
create_playwright_browser() click to toggle source
# File lib/capybara/playwright/driver.rb, line 30
        def create_playwright_browser
  # clean up @playwright_browser and @playwright_execution on exit.
  main = Process.pid
  at_exit do
    # Store the exit status of the test run since it goes away after calling the at_exit proc...
    @exit_status = $ERROR_INFO.status if $ERROR_INFO.is_a?(SystemExit)
    quit if Process.pid == main
    exit @exit_status if @exit_status # Force exit with stored status
  end

  @browser_runner.start
end
playwright_browser() click to toggle source
# File lib/capybara/playwright/driver.rb, line 26
        def playwright_browser
  @playwright_browser ||= create_playwright_browser
end
quit() click to toggle source
# File lib/capybara/playwright/driver.rb, line 43
        def quit
  @playwright_browser&.close
  @playwright_browser = nil
  @browser_runner.stop
end