Skip to content

Instantly share code, notes, and snippets.

@twalpole
Created May 30, 2020 21:28
Show Gist options
  • Save twalpole/6a886efd78fe0e6fcc3e3d6cd7c4ca4d to your computer and use it in GitHub Desktop.
Save twalpole/6a886efd78fe0e6fcc3e3d6cd7c4ca4d to your computer and use it in GitHub Desktop.
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'capybara'
gem 'puma'
gem 'selenium-webdriver'
gem 'webdrivers'
gem 'byebug'
end
require 'selenium-webdriver'
require "capybara/dsl"
html = DATA.read
app = proc { |env| [200, { "Content-Type" => "text/html" }, [html] ] }
%i[selenium_chrome selenium_chrome_headless].each do |driver|
puts "Using #{driver}"
sess = Capybara::Session.new(driver, app)
sess.visit('/')
sleep 3 # just to make sure page is loaded
frame0 = sess.all('.panel#marketing iframe')[0]
sess.within_frame(frame0) do
sess.find('.content_editable').send_keys('foo_bio')
end
frame1 = sess.all('.panel#marketing iframe')[1]
sess.within_frame(frame1) do
sess.find('.content_editable').send_keys('foo_short_bio')
end
sess.within_frame(frame0) do
sess.assert_text sess.find('.content_editable'), 'foo_bio', exact: true
end
sess.within_frame(frame1) do
sess.assert_text sess.find('.content_editable'), 'foo_short_bio', exact: true
end
end
__END__
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hello!</title>
<meta charset="utf-8">
</head>
<body>
<div id="marketing" class="panel">
<iframe srcdoc='
<html>
<body>
<div class="content_editable" contenteditable=true style="height: 100px">
</div>
</body>
</html>'></iframe>
<iframe srcdoc='
<html>
<body>
<div class="content_editable" contenteditable=true style="height: 100px">
</div>
</body>
</html>'></iframe>
</div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment