Skip to content

Commit 6c1db7d

Browse files
committed
Fix automatic download of pdf content type. closes #14
1 parent 06d976f commit 6c1db7d

File tree

5 files changed

+35
-5
lines changed

5 files changed

+35
-5
lines changed

CHANGES.rst

+6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
Changelog
22
=========
33

4+
1.2.5
5+
-----
6+
7+
- Fix automatic download of pdf content type (bubenkoff)
8+
9+
410
1.2.4
511
-----
612

README.rst

+4
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@ Fixtures
9999
Firefox profile preferences, a dictionary which is passed to selenium
100100
webdriver's profile_preferences
101101

102+
* splinter_firefox_profile_directory
103+
Firefox profile directory to use as template for firefox profile created by selenium.
104+
By default, it's an empty directly inside pytest_splinter/profiles/firefox
105+
102106
* splinter_driver_kwargs
103107
Webdriver keyword arguments, a dictionary which is passed to selenium
104108
webdriver's constructor (after applying firefox preferences)

pytest_splinter/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '1.2.4'
1+
__version__ = '1.2.5'

pytest_splinter/plugin.py

+9
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,12 @@ def splinter_firefox_profile_preferences():
154154
}
155155

156156

157+
@pytest.fixture(scope='session')
158+
def splinter_firefox_profile_directory():
159+
"""Firefox profile directory."""
160+
return os.path.join(os.path.dirname(__file__), 'profiles', 'firefox')
161+
162+
157163
@pytest.fixture(scope='session')
158164
def splinter_driver_kwargs():
159165
"""Webdriver kwargs."""
@@ -219,6 +225,7 @@ def browser_instance_getter(
219225
splinter_driver_kwargs,
220226
splinter_file_download_dir,
221227
splinter_firefox_profile_preferences,
228+
splinter_firefox_profile_directory,
222229
splinter_make_screenshot_on_failure,
223230
splinter_remote_url,
224231
splinter_screenshot_dir,
@@ -243,7 +250,9 @@ def browser_instance_getter(
243250
'browser.download.dir': splinter_file_download_dir,
244251
'browser.helperApps.neverAsk.saveToDisk': splinter_download_file_types,
245252
'browser.helperApps.alwaysAsk.force': False,
253+
'pdfjs.disabled': True, # disable internal ff pdf viewer to allow auto pdf download
246254
}, **splinter_firefox_profile_preferences)
255+
kwargs['profile'] = splinter_firefox_profile_directory
247256
elif splinter_webdriver == 'remote':
248257
kwargs['url'] = splinter_remote_url
249258
if splinter_driver_kwargs:

tests/test_plugin.py

+15-4
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,26 @@ def test_browser(browser):
3030
assert isinstance(browser, plugin.Browser)
3131

3232

33-
def test_download_file(httpserver, browser, splinter_file_download_dir):
33+
@pytest.mark.parametrize(
34+
(
35+
'file_extension',
36+
'mime_type'
37+
),
38+
(
39+
['txt', 'text/plain'],
40+
['pdf', 'application/pdf'],
41+
)
42+
)
43+
def test_download_file(httpserver, browser, splinter_file_download_dir, file_extension, mime_type):
3444
"""Test file downloading and accessing it afterwise."""
45+
file_name = 'some.{0}'.format(file_extension)
3546
httpserver.serve_content(
3647
'Some text file', code=200, headers={
37-
'Content-Disposition': 'attachment; filename=some.txt',
38-
'Content-Type': 'text/plain'})
48+
'Content-Disposition': 'attachment; filename={0}'.format(file_name),
49+
'Content-Type': mime_type})
3950
browser.visit(httpserver.url)
4051
time.sleep(0.5)
41-
assert open(os.path.join(splinter_file_download_dir, 'some.txt')).read() == 'Some text file'
52+
assert open(os.path.join(splinter_file_download_dir, file_name)).read() == 'Some text file'
4253

4354

4455
@pytest.mark.parametrize('cookie_value', ['value1', 'value2'])

0 commit comments

Comments
 (0)