40721a2b6b
This hopefully fixes this flakyness in test_successful_webpage_authentification: tests/integration/features/test_prompts.py:129: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [...] tests/integration/features/conftest.py:381: in check_contents_json actual = json.loads(content) /usr/lib/python3.4/json/__init__.py:318: in loads return _default_decoder.decode(s) /usr/lib/python3.4/json/decoder.py:343: in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ [...] > raise ValueError(errmsg("Expecting value", s, err.value)) from None E ValueError: Expecting value: line 1 column 1 (char 0)
196 lines
7.4 KiB
Gherkin
196 lines
7.4 KiB
Gherkin
Feature: Prompts
|
|
Various prompts (javascript, SSL errors, authentification, etc.)
|
|
|
|
Background:
|
|
Given I set general -> log-javascript-console to debug
|
|
|
|
# Javascript
|
|
|
|
Scenario: Javascript alert
|
|
When I open data/prompt/jsalert.html
|
|
And I click the button
|
|
And I wait for a prompt
|
|
And I run :prompt-accept
|
|
Then the javascript message "Alert done" should be logged
|
|
|
|
Scenario: Using content -> ignore-javascript-alert
|
|
When I set content -> ignore-javascript-alert to true
|
|
And I open data/prompt/jsalert.html
|
|
And I click the button
|
|
Then the javascript message "Alert done" should be logged
|
|
|
|
Scenario: Javascript confirm - yes
|
|
When I open data/prompt/jsconfirm.html
|
|
And I click the button
|
|
And I wait for a prompt
|
|
And I run :prompt-yes
|
|
Then the javascript message "confirm reply: true" should be logged
|
|
|
|
Scenario: Javascript confirm - no
|
|
When I open data/prompt/jsconfirm.html
|
|
And I click the button
|
|
And I wait for a prompt
|
|
And I run :prompt-no
|
|
Then the javascript message "confirm reply: false" should be logged
|
|
|
|
Scenario: Javascript confirm - aborted
|
|
When I open data/prompt/jsconfirm.html
|
|
And I click the button
|
|
And I wait for a prompt
|
|
And I run :leave-mode
|
|
Then the javascript message "confirm reply: false" should be logged
|
|
|
|
@pyqt531_or_newer
|
|
Scenario: Javascript prompt
|
|
When I open data/prompt/jsprompt.html
|
|
And I click the button
|
|
And I wait for a prompt
|
|
And I press the keys "prompt test"
|
|
And I run :prompt-accept
|
|
Then the javascript message "Prompt reply: prompt test" should be logged
|
|
|
|
@pyqt531_or_newer
|
|
Scenario: Rejected javascript prompt
|
|
When I open data/prompt/jsprompt.html
|
|
And I click the button
|
|
And I wait for a prompt
|
|
And I press the keys "prompt test"
|
|
And I run :leave-mode
|
|
Then the javascript message "Prompt reply: null" should be logged
|
|
|
|
@pyqt531_or_newer
|
|
Scenario: Using content -> ignore-javascript-prompt
|
|
When I set content -> ignore-javascript-prompt to true
|
|
And I open data/prompt/jsprompt.html
|
|
And I click the button
|
|
Then the javascript message "Prompt reply: null" should be logged
|
|
|
|
# SSL
|
|
|
|
Scenario: SSL error with ssl-strict = false
|
|
When I run :debug-clear-ssl-errors
|
|
And I set network -> ssl-strict to false
|
|
And I load a SSL page
|
|
And I wait until the SSL page finished loading
|
|
Then the error "SSL error: *" should be shown
|
|
And the page should contain the plaintext "Hello World via SSL!"
|
|
|
|
Scenario: SSL error with ssl-strict = true
|
|
When I run :debug-clear-ssl-errors
|
|
And I set network -> ssl-strict to true
|
|
And I load a SSL page
|
|
Then "Error while loading *: SSL handshake failed" should be logged
|
|
And the page should contain the plaintext "Unable to load page"
|
|
|
|
Scenario: SSL error with ssl-strict = ask -> yes
|
|
When I run :debug-clear-ssl-errors
|
|
And I set network -> ssl-strict to ask
|
|
And I load a SSL page
|
|
And I wait for a prompt
|
|
And I run :prompt-yes
|
|
And I wait until the SSL page finished loading
|
|
Then the page should contain the plaintext "Hello World via SSL!"
|
|
|
|
Scenario: SSL error with ssl-strict = ask -> no
|
|
When I run :debug-clear-ssl-errors
|
|
And I set network -> ssl-strict to ask
|
|
And I load a SSL page
|
|
And I wait for a prompt
|
|
And I run :prompt-no
|
|
Then "Error while loading *: SSL handshake failed" should be logged
|
|
And the page should contain the plaintext "Unable to load page"
|
|
|
|
# Geolocation
|
|
|
|
Scenario: Always rejecting geolocation
|
|
When I set content -> geolocation to false
|
|
And I open data/prompt/geolocation.html in a new tab
|
|
And I click the button
|
|
Then the javascript message "geolocation permission denied" should be logged
|
|
|
|
Scenario: Always accepting geolocation
|
|
When I set content -> geolocation to true
|
|
And I open data/prompt/geolocation.html in a new tab
|
|
And I click the button
|
|
Then the javascript message "geolocation permission denied" should not be logged
|
|
|
|
Scenario: geolocation with ask -> true
|
|
When I set content -> geolocation to ask
|
|
And I open data/prompt/geolocation.html in a new tab
|
|
And I click the button
|
|
And I wait for a prompt
|
|
And I run :prompt-yes
|
|
Then the javascript message "geolocation permission denied" should not be logged
|
|
|
|
Scenario: geolocation with ask -> false
|
|
When I set content -> geolocation to ask
|
|
And I open data/prompt/geolocation.html in a new tab
|
|
And I click the button
|
|
And I wait for a prompt
|
|
And I run :prompt-no
|
|
Then the javascript message "geolocation permission denied" should be logged
|
|
|
|
Scenario: geolocation with ask -> abort
|
|
When I set content -> geolocation to ask
|
|
And I open data/prompt/geolocation.html in a new tab
|
|
And I click the button
|
|
And I wait for a prompt
|
|
And I run :leave-mode
|
|
Then the javascript message "geolocation permission denied" should be logged
|
|
|
|
# Notifications
|
|
|
|
Scenario: Always rejecting notifications
|
|
When I set content -> notifications to false
|
|
And I open data/prompt/notifications.html in a new tab
|
|
And I click the button
|
|
Then the javascript message "notification permission denied" should be logged
|
|
|
|
Scenario: Always accepting notifications
|
|
When I set content -> notifications to true
|
|
And I open data/prompt/notifications.html in a new tab
|
|
And I click the button
|
|
Then the javascript message "notification permission granted" should be logged
|
|
|
|
Scenario: notifications with ask -> false
|
|
When I set content -> notifications to ask
|
|
And I open data/prompt/notifications.html in a new tab
|
|
And I click the button
|
|
And I wait for a prompt
|
|
And I run :prompt-no
|
|
Then the javascript message "notification permission denied" should be logged
|
|
|
|
Scenario: notifications with ask -> true
|
|
When I set content -> notifications to ask
|
|
And I open data/prompt/notifications.html in a new tab
|
|
And I click the button
|
|
And I wait for a prompt
|
|
And I run :prompt-yes
|
|
Then the javascript message "notification permission granted" should be logged
|
|
|
|
# This actually gives us a denied rather than an aborted
|
|
@xfail_norun
|
|
Scenario: notifications with ask -> abort
|
|
When I set content -> notifications to ask
|
|
And I open data/prompt/notifications.html in a new tab
|
|
And I click the button
|
|
And I wait for a prompt
|
|
And I run :leave-mode
|
|
Then the javascript message "notification permission aborted" should be logged
|
|
|
|
# Page authentication
|
|
|
|
Scenario: Successful webpage authentification
|
|
When I open basic-auth/user/password without waiting
|
|
And I wait for a prompt
|
|
And I press the keys "user"
|
|
And I run :prompt-accept
|
|
And I press the keys "password"
|
|
And I run :prompt-accept
|
|
And I wait until basic-auth/user/password is loaded
|
|
Then the json on the page should be:
|
|
{
|
|
"authenticated": true,
|
|
"user": "user"
|
|
}
|