mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-26 01:33:22 +00:00
Merge pull request #2468 from mkllnk/improve-testing-embedded-pages
Improve testing embedded pages
This commit is contained in:
20
public/embedded-shop-preview.html
Normal file
20
public/embedded-shop-preview.html
Normal file
@@ -0,0 +1,20 @@
|
||||
<html>
|
||||
<head><title>Embedded Shop</title></head>
|
||||
<body>
|
||||
|
||||
<p>
|
||||
This is a preview page for embedded shops.
|
||||
Choose a shop to display by copying its permalink id into the URL after the question mark.
|
||||
Example: <code>embedded-shop-preview.html?bawbawfoodhub</code>
|
||||
</p>
|
||||
|
||||
<iframe style="width:100%;min-height:35em"></iframe>
|
||||
<script>
|
||||
var unsafeName = window.location.search.substr(1);
|
||||
var shop = unsafeName.replace(/[^a-z0-9_-]/g, '');
|
||||
var iframe = document.querySelector("iframe");
|
||||
iframe.src = "/" + shop + "/shop?embedded_shopfront=true";
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,25 +1,22 @@
|
||||
require 'spec_helper'
|
||||
|
||||
feature "Using embedded shopfront functionality", js: true do
|
||||
|
||||
Capybara.server_port = 9999
|
||||
include OpenFoodNetwork::EmbeddedPagesHelper
|
||||
|
||||
describe 'embedded groups' do
|
||||
let(:enterprise) { create(:distributor_enterprise) }
|
||||
let!(:group) { create(:enterprise_group, enterprises: [enterprise], permalink: 'group1', on_front_page: true) }
|
||||
let(:group) { create(:enterprise_group, enterprises: [enterprise]) }
|
||||
|
||||
before do
|
||||
Spree::Config[:enable_embedded_shopfronts] = true
|
||||
Spree::Config[:embedded_shopfronts_whitelist] = 'test.com'
|
||||
page.driver.browser.js_errors = false
|
||||
allow_any_instance_of(ActionDispatch::Request).to receive(:referer).and_return('https://www.test.com')
|
||||
Capybara.current_session.driver.visit('spec/support/views/group_iframe_test.html')
|
||||
visit "/embedded-group-preview.html?#{group.permalink}"
|
||||
end
|
||||
|
||||
it "displays in an iframe" do
|
||||
expect(page).to have_selector 'iframe#group_test_iframe'
|
||||
|
||||
within_frame 'group_test_iframe' do
|
||||
on_embedded_page do
|
||||
within 'div#group-page' do
|
||||
expect(page).to have_content 'About Us'
|
||||
end
|
||||
@@ -27,9 +24,7 @@ feature "Using embedded shopfront functionality", js: true do
|
||||
end
|
||||
|
||||
it "displays powered by OFN text at bottom of page" do
|
||||
expect(page).to have_selector 'iframe#group_test_iframe'
|
||||
|
||||
within_frame 'group_test_iframe' do
|
||||
on_embedded_page do
|
||||
within 'div#group-page' do
|
||||
expect(page).to have_selector 'div.powered-by-embedded'
|
||||
expect(page).to have_css "img[src*='favicon.ico']"
|
||||
@@ -40,9 +35,7 @@ feature "Using embedded shopfront functionality", js: true do
|
||||
end
|
||||
|
||||
it "doesn't display contact details when embedded" do
|
||||
expect(page).to have_selector 'iframe#group_test_iframe'
|
||||
|
||||
within_frame 'group_test_iframe' do
|
||||
on_embedded_page do
|
||||
within 'div#group-page' do
|
||||
|
||||
expect(page).to have_no_selector 'div.contact-container'
|
||||
@@ -52,9 +45,7 @@ feature "Using embedded shopfront functionality", js: true do
|
||||
end
|
||||
|
||||
it "does not display the header when embedded" do
|
||||
expect(page).to have_selector 'iframe#group_test_iframe'
|
||||
|
||||
within_frame 'group_test_iframe' do
|
||||
on_embedded_page do
|
||||
within 'div#group-page' do
|
||||
expect(page).to have_no_selector 'header'
|
||||
expect(page).to have_no_selector 'img.group-logo'
|
||||
@@ -63,14 +54,17 @@ feature "Using embedded shopfront functionality", js: true do
|
||||
end
|
||||
end
|
||||
|
||||
it 'opens links to shops in a new window' do
|
||||
expect(page).to have_selector 'iframe#group_test_iframe'
|
||||
|
||||
within_frame 'group_test_iframe' do
|
||||
it "opens links to shops in a new window" do
|
||||
on_embedded_page do
|
||||
within 'div#group-page' do
|
||||
enterprise_links = page.all(:xpath, "//*[contains(@href, 'enterprise-5/shop')]", :visible => :false).count
|
||||
enterprise_links_with_target_blank = page.all(:xpath, "//*[contains(@href, 'enterprise-5/shop') and @target = '_blank']", :visible => :false).count
|
||||
expect(enterprise_links).to equal(enterprise_links_with_target_blank)
|
||||
shop_links_xpath = "//*[contains(@href, '#{enterprise.permalink}/shop')]"
|
||||
|
||||
expect(page).to have_xpath shop_links_xpath, visible: false
|
||||
|
||||
shop_links = page.all(:xpath, shop_links_xpath, visible: false)
|
||||
shop_links.each do |link|
|
||||
expect(link[:target]).to eq "_blank"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
require 'spec_helper'
|
||||
|
||||
feature "Using embedded shopfront functionality", js: true do
|
||||
include OpenFoodNetwork::EmbeddedPagesHelper
|
||||
include AuthenticationWorkflow
|
||||
include WebHelper
|
||||
include ShopWorkflow
|
||||
include CheckoutWorkflow
|
||||
include UIComponentHelper
|
||||
|
||||
Capybara.server_port = 9999
|
||||
|
||||
describe "using iframes" do
|
||||
let(:distributor) { create(:distributor_enterprise, name: 'My Embedded Hub', permalink: 'test_enterprise', with_payment_and_shipping: true) }
|
||||
let(:supplier) { create(:supplier_enterprise) }
|
||||
@@ -24,9 +23,8 @@ feature "Using embedded shopfront functionality", js: true do
|
||||
Spree::Config[:enable_embedded_shopfronts] = true
|
||||
Spree::Config[:embedded_shopfronts_whitelist] = 'test.com'
|
||||
|
||||
page.driver.browser.js_errors = false
|
||||
allow_any_instance_of(ActionDispatch::Request).to receive(:referer).and_return('https://www.test.com')
|
||||
Capybara.current_session.driver.visit('spec/support/views/iframe_test.html')
|
||||
visit "/embedded-shop-preview.html?#{distributor.permalink}"
|
||||
end
|
||||
|
||||
after do
|
||||
@@ -34,9 +32,7 @@ feature "Using embedded shopfront functionality", js: true do
|
||||
end
|
||||
|
||||
it "displays modified shopfront layout" do
|
||||
expect(page).to have_selector 'iframe#test_iframe'
|
||||
|
||||
within_frame 'test_iframe' do
|
||||
on_embedded_page do
|
||||
within 'nav.top-bar' do
|
||||
expect(page).to have_selector 'ul.left', visible: false
|
||||
expect(page).to have_selector 'ul.center', visible: false
|
||||
@@ -48,7 +44,7 @@ feature "Using embedded shopfront functionality", js: true do
|
||||
end
|
||||
|
||||
xit "allows shopping and checkout" do
|
||||
within_frame 'test_iframe' do
|
||||
on_embedded_page do
|
||||
fill_in "variants[#{variant.id}]", with: 1
|
||||
wait_until_enabled 'input.add_to_cart'
|
||||
|
||||
@@ -97,7 +93,7 @@ feature "Using embedded shopfront functionality", js: true do
|
||||
end
|
||||
|
||||
it "redirects to embedded hub on logout when embedded" do
|
||||
within_frame 'test_iframe' do
|
||||
on_embedded_page do
|
||||
|
||||
find('ul.right li#login-link a').click
|
||||
login_with_modal
|
||||
@@ -110,6 +106,8 @@ feature "Using embedded shopfront functionality", js: true do
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def login_with_modal
|
||||
expect(page).to have_selector 'div.login-modal', visible: true
|
||||
|
||||
|
||||
9
spec/support/embedded_pages_helper.rb
Normal file
9
spec/support/embedded_pages_helper.rb
Normal file
@@ -0,0 +1,9 @@
|
||||
module OpenFoodNetwork
|
||||
module EmbeddedPagesHelper
|
||||
def on_embedded_page
|
||||
within_frame :frame do
|
||||
yield
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,8 +0,0 @@
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
|
||||
<iframe src="http://localhost:9999/groups/group1?embedded_shopfront=true" class="group_test_iframe" id="group_test_iframe" style="width:100%;min-height:35em"></iframe>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,8 +0,0 @@
|
||||
<html>
|
||||
<head></head>
|
||||
<body>
|
||||
|
||||
<iframe src="http://localhost:9999/test_enterprise/shop?embedded_shopfront=true" name="test_iframe" class="test_iframe" id="test_iframe" style="width:100%;min-height:35em"></iframe>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user