Quoting usability experts Jakob Nielsen and Anna Kaley [1]: > [Opening PDF files in new tabs] is problematic, because it assumes > users will always do the exact same things with certain file formats, > which isn’t always the case. There are many examples of this situation. For example, some people (myself included) configure their browser so it downloads PDF files instead of opening them in the browser. In this situation, a new tab is opened, a blank page is displayed, the file is downloaded, and then either the tab is closed or the blank page needs to be manually closed. The end result is really annoying. Other situations include people who use a mobile phone browser, where navigating through tabs is generally much harder than doing so on a desktop browser. But IMHO the most important point is: every browser already provides a way to open "regular" links in a new tab, so people can choose what to do, but if we decide to open the link in a new tab, we take control away from them, and people who'd like to open the link in the same tab might feel frustrated. In these cases, the links either say "download" or include the word "PDF", so people know in advance that they're going to download/open a PDF file, and so we're giving them information and, by removing the `target` attribute, we're giving them control over their browser so they can choose what's convenient for them. [1] https://www.nngroup.com/articles/new-browser-windows-and-tabs
40 lines
943 B
Ruby
40 lines
943 B
Ruby
require "rails_helper"
|
|
|
|
describe "Poster" do
|
|
let!(:proposal) { create(:proposal, :draft) }
|
|
|
|
before do
|
|
login_as(proposal.author)
|
|
visit new_proposal_dashboard_poster_path(proposal)
|
|
end
|
|
|
|
scenario "Has a link to preview the poster" do
|
|
expect(page).to have_link("Preview")
|
|
end
|
|
|
|
scenario "Has a link to download the poster" do
|
|
expect(page).to have_link("Download")
|
|
end
|
|
|
|
scenario "Preview contains the proposal details" do
|
|
click_link "Preview"
|
|
|
|
expect(page).to have_content(proposal.title)
|
|
expect(page).to have_content(proposal.code)
|
|
end
|
|
|
|
scenario "Preview page can download the poster as well" do
|
|
click_link "Preview"
|
|
|
|
expect(page).not_to have_link("Preview")
|
|
expect(page).to have_link("Download")
|
|
end
|
|
|
|
scenario "PDF contains the proposal details" do
|
|
click_link "Download"
|
|
|
|
expect(page).to have_content(proposal.title)
|
|
expect(page).to have_content(proposal.code)
|
|
end
|
|
end
|