qutebrowser/tests/end2end/features/downloads.feature

251 lines
11 KiB
Gherkin
Raw Normal View History

2015-11-09 07:49:11 +01:00
Feature: Downloading things from a website.
Background:
Given I set up a temporary download dir
And I clean old downloads
2015-11-09 07:49:11 +01:00
Scenario: Downloading which redirects with closed tab (issue 889)
When I set tabs -> last-close to blank
And I open data/downloads/issue889.html
And I run :hint links download
And I run :follow-hint a
And I run :tab-close
And I wait for "* Handling redirect" in the log
Then no crash should happen
Scenario: Downloading with error in closed tab (issue 889)
When I set tabs -> last-close to blank
And I open data/downloads/issue889.html
And I run :hint links download
And I run :follow-hint s
And I run :tab-close
And I wait for the error "Download error: * - server replied: NOT FOUND"
And I run :download-retry
And I wait for the error "Download error: * - server replied: NOT FOUND"
Then no crash should happen
Scenario: Downloading a link without path information (issue 1243)
When I set completion -> download-path-suggestion to filename
And I set storage -> prompt-download-directory to true
And I open data/downloads/issue1243.html
And I run :hint links download
And I run :follow-hint a
And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='qutebrowser-download' mode=<PromptMode.download: 5> text='Save file to:'>, *" in the log
Then the error "Download error: No handler found for qute://!" should be shown
Scenario: Downloading a data: link (issue 1214)
When I set completion -> download-path-suggestion to filename
And I set storage -> prompt-download-directory to true
And I open data/downloads/issue1214.html
And I run :hint links download
And I run :follow-hint a
And I wait for "Asking question <qutebrowser.utils.usertypes.Question default='binary blob' mode=<PromptMode.download: 5> text='Save file to:'>, *" in the log
And I run :leave-mode
Then no crash should happen
2015-11-09 07:49:11 +01:00
Scenario: Downloading with SSL errors (issue 1413)
When I run :debug-clear-ssl-errors
And I set network -> ssl-strict to ask
And I download an SSL page
And I wait for "Entering mode KeyMode.* (reason: question asked)" in the log
And I run :prompt-accept
Then the error "Download error: SSL handshake failed" should be shown
2015-11-09 07:49:11 +01:00
Scenario: Retrying a failed download
When I run :download http://localhost:(port)/does-not-exist
And I wait for the error "Download error: * - server replied: NOT FOUND"
And I run :download-retry
And I wait for the error "Download error: * - server replied: NOT FOUND"
Then the requests should be:
does-not-exist
does-not-exist
Scenario: Retrying with no failed downloads
When I open data/downloads/download.bin
And I wait until the download is finished
And I run :download-retry
2015-11-26 17:50:39 +01:00
Then the error "No failed downloads!" should be shown
2015-11-09 07:49:11 +01:00
Scenario: Retrying with no downloads
When I run :download-retry
2015-11-26 17:50:39 +01:00
Then the error "No failed downloads!" should be shown
Scenario: :download with deprecated dest-old argument
When I run :download http://localhost:(port)/ deprecated-argument
2015-11-26 17:50:39 +01:00
Then the warning ":download [url] [dest] is deprecated - use download --dest [dest] [url]" should be shown
Scenario: Two destinations given
When I run :download --dest destination2 http://localhost:(port)/ destination1
2015-11-26 17:50:39 +01:00
Then the warning ":download [url] [dest] is deprecated - use download --dest [dest] [url]" should be shown
And the error "Can't give two destinations for the download." should be shown
Scenario: :download --mhtml with a URL given
When I run :download --mhtml http://foobar/
2015-11-26 17:50:39 +01:00
Then the error "Can only download the current page as mhtml." should be shown
Scenario: Downloading as mhtml is available
When I open html
And I run :download --mhtml
And I wait for "File successfully written." in the log
Then no crash should happen
Scenario: Downloading as mhtml with non-ASCII headers
When I open response-headers?Content-Type=text%2Fpl%C3%A4in
And I run :download --mhtml --dest mhtml-response-headers.mht
And I wait for "File successfully written." in the log
Then no crash should happen
2016-03-14 19:06:42 +01:00
## :download-cancel
Scenario: Cancelling a download
When I run :download http://localhost:(port)/drip?numbytes=128&duration=5
And I run :download-cancel
Then "cancelled" should be logged
Scenario: Cancelling a download which does not exist
When I run :download-cancel with count 42
Then the error "There's no download 42!" should be shown
Scenario: Cancelling a download which is already done
When I open data/downloads/download.bin
And I wait until the download is finished
And I run :download-cancel
Then the error "Download 1 is already done!" should be shown
Scenario: Cancelling a download which is already done (with count)
When I open data/downloads/download.bin
And I wait until the download is finished
And I run :download-cancel with count 1
Then the error "Download 1 is already done!" should be shown
Scenario: Cancelling all downloads
When I run :download http://localhost:(port)/drip?numbytes=128&duration=5
And I run :download http://localhost:(port)/drip?numbytes=128&duration=5
And I run :download-cancel --all
Then "cancelled" should be logged
And "cancelled" should be logged
# https://github.com/The-Compiler/qutebrowser/issues/1535
Scenario: Cancelling an MHTML download (issue 1535)
When I open data/downloads/issue1535.html
And I run :download --mhtml
2016-06-04 13:15:22 +02:00
And I wait for "fetch: PyQt5.QtCore.QUrl('http://localhost:*/drip?numbytes=128&duration=2') -> drip" in the log
And I run :download-cancel
Then no crash should happen
2016-03-14 19:06:42 +01:00
## :download-delete
Scenario: Deleting a download
When I open data/downloads/download.bin
And I wait until the download is finished
And I run :download-delete
2016-04-26 22:56:06 +02:00
And I wait for "deleted download *" in the log
2016-03-14 19:06:42 +01:00
Then the downloaded file download.bin should not exist
Scenario: Deleting a download which does not exist
When I run :download-delete with count 42
Then the error "There's no download 42!" should be shown
Scenario: Deleting a download which is not done yet
When I run :download http://localhost:(port)/drip?numbytes=128&duration=5
And I run :download-delete
Then the error "Download 1 is not done!" should be shown
Scenario: Deleting a download which is not done yet (with count)
When I run :download http://localhost:(port)/drip?numbytes=128&duration=5
And I run :download-delete with count 1
Then the error "Download 1 is not done!" should be shown
## :download-open
Scenario: Opening a download
When I open data/downloads/download.bin
And I wait until the download is finished
And I open the download
Then "Opening *download.bin* with [*python*]" should be logged
2016-03-14 19:06:42 +01:00
Scenario: Opening a download which does not exist
When I run :download-open with count 42
Then the error "There's no download 42!" should be shown
Scenario: Opening a download which is not done yet
When I run :download http://localhost:(port)/drip?numbytes=128&duration=5
And I run :download-open
Then the error "Download 1 is not done!" should be shown
Scenario: Opening a download which is not done yet (with count)
When I run :download http://localhost:(port)/drip?numbytes=128&duration=5
And I run :download-open with count 1
Then the error "Download 1 is not done!" should be shown
## opening a file directly (prompt-open-download)
Scenario: Opening a download directly
When I set storage -> prompt-download-directory to true
And I open data/downloads/download.bin
And I directly open the download
And I wait until the download is finished
Then "Opening *download.bin* with [*python*]" should be logged
## https://github.com/The-Compiler/qutebrowser/issues/1728
Scenario: Cancelling a download that should be opened
When I set storage -> prompt-download-directory to true
And I run :download http://localhost:(port)/drip?numbytes=128&duration=5
And I directly open the download
And I run :download-cancel
Then "* finished but not successful, not opening!" should be logged
## https://github.com/The-Compiler/qutebrowser/issues/1725
Scenario: Directly open a download with a very long filename
When I set storage -> prompt-download-directory to true
And I open data/downloads/issue1725.html
And I run :hint
And I run :follow-hint a
And I wait for "Asking question <qutebrowser.utils.usertypes.Question default=* mode=<PromptMode.download: 5> text='Save file to:'>, *" in the log
And I directly open the download
And I wait until the download is finished
Then "Opening * with [*python*]" should be logged
## completion -> download-path-suggestion
Scenario: completion -> download-path-suggestion = path
When I set storage -> prompt-download-directory to true
And I set completion -> download-path-suggestion to path
And I open data/downloads/download.bin
Then the download prompt should be shown with "{downloaddir}/"
Scenario: completion -> download-path-suggestion = filename
When I set storage -> prompt-download-directory to true
And I set completion -> download-path-suggestion to filename
And I open data/downloads/download.bin
Then the download prompt should be shown with "download.bin"
Scenario: completion -> download-path-suggestion = both
When I set storage -> prompt-download-directory to true
And I set completion -> download-path-suggestion to both
And I open data/downloads/download.bin
Then the download prompt should be shown with "{downloaddir}/download.bin"
## https://github.com/The-Compiler/qutebrowser/issues/1242
Scenario: Closing window with remove-finished-downloads timeout
When I set ui -> remove-finished-downloads to 500
And I open data/downloads/download.bin in a new window
And I wait until the download is finished
And I run :close
And I wait 0.5s
Then no crash should happen
2016-05-09 07:06:58 +02:00
## https://github.com/The-Compiler/qutebrowser/issues/846
Scenario: Quitting with finished downloads and confirm-quit=downloads
Given I have a fresh instance
When I set storage -> prompt-download-directory to false
And I set ui -> confirm-quit to downloads
And I open data/downloads/download.bin
And I wait until the download is finished
And I run :close
Then qutebrowser should quit