mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-09-11 18:37:33 -04:00
Convert EmailFields to GovukEmailFields
Changes those fields (and sometimes also regular text input fields) in the following forms: - LoginForm - RegisterUserForm - ChangeEmailForm - FeedbackOrProblem - AcceptAgreementForm - ChangeNameForm (only name field here, but used in the same template field as ChangeEmailForm here: app/templates/views/user-profile/change.html) Also includes changes to templates that use this form and associated tests.
This commit is contained in:
+11
-9
@@ -147,7 +147,7 @@ def email_address(label='Email address', gov_user=True, required=True):
|
||||
if required:
|
||||
validators.append(DataRequired(message='Cannot be empty'))
|
||||
|
||||
return EmailField(label, validators, render_kw={'spellcheck': 'false'})
|
||||
return GovukEmailField(label, validators, render_kw={'spellcheck': 'false'})
|
||||
|
||||
|
||||
class UKMobileNumber(TelField):
|
||||
@@ -557,7 +557,7 @@ class OnOffField(RadioField):
|
||||
|
||||
|
||||
class LoginForm(StripWhitespaceForm):
|
||||
email_address = EmailField('Email address', validators=[
|
||||
email_address = GovukEmailField('Email address', validators=[
|
||||
Length(min=5, max=255),
|
||||
DataRequired(message='Cannot be empty'),
|
||||
ValidEmail()
|
||||
@@ -568,8 +568,10 @@ class LoginForm(StripWhitespaceForm):
|
||||
|
||||
|
||||
class RegisterUserForm(StripWhitespaceForm):
|
||||
name = StringField('Full name',
|
||||
validators=[DataRequired(message='Cannot be empty')])
|
||||
name = GovukTextInputField(
|
||||
'Full name',
|
||||
validators=[DataRequired(message='Cannot be empty')]
|
||||
)
|
||||
email_address = email_address()
|
||||
mobile_number = international_phone_number()
|
||||
password = password()
|
||||
@@ -1299,7 +1301,7 @@ class CsvUploadForm(StripWhitespaceForm):
|
||||
|
||||
|
||||
class ChangeNameForm(StripWhitespaceForm):
|
||||
new_name = StringField(u'Your name')
|
||||
new_name = GovukTextInputField(u'Your name')
|
||||
|
||||
|
||||
class ChangeEmailForm(StripWhitespaceForm):
|
||||
@@ -1401,7 +1403,7 @@ class SupportRedirect(StripWhitespaceForm):
|
||||
|
||||
|
||||
class FeedbackOrProblem(StripWhitespaceForm):
|
||||
name = StringField('Name (optional)')
|
||||
name = GovukTextInputField('Name (optional)')
|
||||
email_address = email_address(label='Email address', gov_user=False, required=True)
|
||||
feedback = TextAreaField('Your message', validators=[DataRequired(message="Cannot be empty")])
|
||||
|
||||
@@ -1850,7 +1852,7 @@ def get_placeholder_form_instance(
|
||||
else:
|
||||
field = uk_mobile_number(label=placeholder_name)
|
||||
else:
|
||||
field = StringField(placeholder_name, validators=[
|
||||
field = GovukTextInputField(placeholder_name, validators=[
|
||||
DataRequired(message='Cannot be empty')
|
||||
])
|
||||
|
||||
@@ -2191,7 +2193,7 @@ class AcceptAgreementForm(StripWhitespaceForm):
|
||||
on_behalf_of_email=org.agreement_signed_on_behalf_of_email_address,
|
||||
)
|
||||
|
||||
version = StringField(
|
||||
version = GovukTextInputField(
|
||||
'Which version of the agreement do you want to accept?'
|
||||
)
|
||||
|
||||
@@ -2209,7 +2211,7 @@ class AcceptAgreementForm(StripWhitespaceForm):
|
||||
),
|
||||
)
|
||||
|
||||
on_behalf_of_name = StringField(
|
||||
on_behalf_of_name = GovukTextInputField(
|
||||
'What’s their name?'
|
||||
)
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{% extends "withnav_template.html" %}
|
||||
{% from "components/textbox.html" import textbox %}
|
||||
{% from "components/radios.html" import radio, conditional_radio_panel %}
|
||||
{% from "components/select-input.html" import select_wrapper %}
|
||||
{% from "components/form.html" import form_wrapper %}
|
||||
@@ -28,10 +27,14 @@
|
||||
{% endfor %}
|
||||
{% endcall %}
|
||||
{% call conditional_radio_panel('on-behalf-of') %}
|
||||
{{ textbox(form.on_behalf_of_name, width='1-1') }}
|
||||
{{ textbox(form.on_behalf_of_email, width='1-1') }}
|
||||
{{ form.on_behalf_of_name(param_extensions={"classes": "govuk-!-width-full"}) }}
|
||||
{{ form.on_behalf_of_email(param_extensions={"classes": "govuk-!-width-full"}) }}
|
||||
{% endcall %}
|
||||
{{ textbox(form.version, width='1-3', hint='The version number is on the front page, for example ‘3.6’') }}
|
||||
{{ form.version(
|
||||
param_extensions={
|
||||
"hint": {"text": "The version number is on the front page, for example ‘3.6’"},
|
||||
"classes": "govuk-!-width-one-third"}
|
||||
) }}
|
||||
|
||||
{{ page_footer('Continue') }}
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{% extends "withoutnav_template.html" %}
|
||||
{% from "components/textbox.html" import textbox %}
|
||||
{% from "components/page-footer.html" import page_footer %}
|
||||
{% from "components/form.html" import form_wrapper %}
|
||||
|
||||
@@ -16,7 +15,7 @@ Create a new password
|
||||
<p class="govuk-body">We’ll send you an email to create a new password.</p>
|
||||
|
||||
{% call form_wrapper() %}
|
||||
{{ textbox(form.email_address, safe_error_message=True) }}
|
||||
{{ form.email_address(error_message_with_html=True) }}
|
||||
{{ page_footer("Send email") }}
|
||||
{% endcall %}
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{% extends "withnav_template.html" %}
|
||||
{% from "components/textbox.html" import textbox %}
|
||||
{% from "components/page-header.html" import page_header %}
|
||||
{% from "components/page-footer.html" import page_footer %}
|
||||
{% from "components/form.html" import form_wrapper %}
|
||||
@@ -17,7 +16,12 @@
|
||||
|
||||
{% call form_wrapper() %}
|
||||
|
||||
{{ textbox(form.email_address, width='1-1', safe_error_message=True) }}
|
||||
{{ form.email_address(
|
||||
param_extensions={
|
||||
"classes": "govuk-!-width-full"
|
||||
},
|
||||
error_message_with_html=True
|
||||
) }}
|
||||
|
||||
{% include 'views/manage-users/permissions.html' %}
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{% extends "withnav_template.html" %}
|
||||
{% from "components/textbox.html" import textbox %}
|
||||
{% from "components/page-header.html" import page_header %}
|
||||
{% from "components/page-footer.html" import page_footer %}
|
||||
{% from "components/form.html" import form_wrapper %}
|
||||
@@ -17,7 +16,7 @@
|
||||
|
||||
<p class="govuk-body" id="user_name">This will change the email address for {{ user.name }}.</p>
|
||||
{% call form_wrapper() %}
|
||||
{{ textbox(form.email_address, width='1-1', safe_error_message=True) }}
|
||||
{{ form.email_address(param_extensions={"classes": "govuk-!-width-full"}, error_message_with_html=True) }}
|
||||
{{ page_footer('Save') }}
|
||||
{% endcall %}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
{% extends "org_template.html" %}
|
||||
|
||||
{% from "components/textbox.html" import textbox %}
|
||||
{% from "components/page-footer.html" import page_footer %}
|
||||
{% from "components/page-header.html" import page_header %}
|
||||
{% from "components/form.html" import form_wrapper %}
|
||||
@@ -16,7 +15,12 @@
|
||||
back_link=url_for('.manage_org_users', org_id=current_org.id)
|
||||
) }}
|
||||
{% call form_wrapper() %}
|
||||
{{ textbox(form.email_address, width='1-1', safe_error_message=True) }}
|
||||
{{ form.email_address(
|
||||
param_extensions={
|
||||
"classes": "govuk-!-width-full"
|
||||
},
|
||||
error_message_with_html=True
|
||||
) }}
|
||||
|
||||
<div class="bottom-gutter">
|
||||
<p class="form-label">
|
||||
|
||||
@@ -13,8 +13,15 @@ Create an account
|
||||
<div class="govuk-grid-column-two-thirds">
|
||||
<h1 class="heading-large">Create an account</h1>
|
||||
{% call form_wrapper(autocomplete=True) %}
|
||||
{{ textbox(form.name, width='3-4') }}
|
||||
{{ textbox(form.email_address, hint="Must be from a public sector organisation", width='3-4', safe_error_message=True, autocomplete='email') }}
|
||||
{{ form.name(param_extensions={"classes": "govuk-!-width-three-quarters"}) }}
|
||||
{{ form.email_address(
|
||||
param_extensions={
|
||||
"hint": {"text": "Must be from a public sector organisation"},
|
||||
"classes": "govuk-!-width-three-quarters",
|
||||
"autocomplete": "email"
|
||||
},
|
||||
error_message_with_html=True
|
||||
) }}
|
||||
<div class="extra-tracking">
|
||||
{{ textbox(form.mobile_number, width='3-4', hint='We’ll send you a security code by text message') }}
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{% from "components/banner.html" import banner, banner_wrapper %}
|
||||
{% from "components/textbox.html" import textbox %}
|
||||
{% from "components/page-footer.html" import page_footer %}
|
||||
{% from "components/form.html" import form_wrapper %}
|
||||
{% from "components/button/macro.njk" import govukButton %}
|
||||
@@ -47,11 +46,12 @@
|
||||
{% call form_wrapper(
|
||||
action = form_url
|
||||
) %}
|
||||
{{ textbox(
|
||||
form.email_address,
|
||||
width='1-1',
|
||||
safe_error_message=True,
|
||||
hint='This should be a shared inbox managed by your team, not your own email address'
|
||||
{{ form.email_address(
|
||||
param_extensions={
|
||||
"hint": {"text": "This should be a shared inbox managed by your team, not your own email address"},
|
||||
"classes": "govuk-!-width-full"
|
||||
},
|
||||
error_message_with_html=True
|
||||
) }}
|
||||
{% if not first_email_address and not existing_is_default %}
|
||||
{{ form.is_default }}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{% extends "withnav_template.html" %}
|
||||
{% from "components/textbox.html" import textbox %}
|
||||
{% from "components/page-header.html" import page_header %}
|
||||
{% from "components/page-footer.html" import page_footer %}
|
||||
{% from "components/form.html" import form_wrapper %}
|
||||
@@ -16,11 +15,12 @@
|
||||
) }}
|
||||
|
||||
{% call form_wrapper() %}
|
||||
{{ textbox(
|
||||
form.email_address,
|
||||
width='1-1',
|
||||
hint='This should be a shared inbox managed by your team, not your own email address',
|
||||
safe_error_message=True
|
||||
{{ form.email_address(
|
||||
param_extensions={
|
||||
"hint": {"text": "This should be a shared inbox managed by your team, not your own email address"},
|
||||
"classes": "govuk-!-width-full"
|
||||
},
|
||||
error_message_with_html=True
|
||||
) }}
|
||||
{% if not first_email_address %}
|
||||
{{ form.is_default }}
|
||||
|
||||
@@ -16,11 +16,12 @@
|
||||
back_link=url_for('main.service_email_reply_to', service_id=current_service.id)
|
||||
) }}
|
||||
{% call form_wrapper() %}
|
||||
{{ textbox(
|
||||
form.email_address,
|
||||
width='1-1',
|
||||
safe_error_message=True,
|
||||
hint='This should be a shared inbox managed by your team, not your own email address.'
|
||||
{{ form.email_address(
|
||||
param_extensions={
|
||||
"hint": {"text": "This should be a shared inbox managed by your team, not your own email address"},
|
||||
"classes": "govuk-!-width-full"
|
||||
},
|
||||
error_message_with_html=True
|
||||
) }}
|
||||
{% if form.is_default.data %}
|
||||
<p class="form-group">
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{% extends "withoutnav_template.html" %}
|
||||
{% from "components/textbox.html" import textbox %}
|
||||
{% from "components/page-footer.html" import page_footer %}
|
||||
{% from "components/form.html" import form_wrapper %}
|
||||
|
||||
@@ -32,7 +31,7 @@
|
||||
{% endif %}
|
||||
|
||||
{% call form_wrapper(autocomplete=True) %}
|
||||
{{ textbox(form.email_address, autocomplete='email') }}
|
||||
{{ form.email_address(param_extensions={"autocomplete": "email"}) }}
|
||||
{{ form.password(param_extensions={"autocomplete": "current-password"}) }}
|
||||
{{ page_footer("Continue", secondary_link=url_for('.forgot_password'), secondary_link_text="Forgotten your password?") }}
|
||||
{% endcall %}
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
{% call form_wrapper() %}
|
||||
{{ textbox(form.feedback, width='1-1', hint='', rows=10, autosize=True) }}
|
||||
{% if not current_user.is_authenticated %}
|
||||
{{ textbox(form.name, width='1-1') }}
|
||||
{{ textbox(form.email_address, width='1-1') }}
|
||||
{{ form.name(param_extensions={"classes": "govuk-!-width-full"}) }}
|
||||
{{ form.email_address(param_extensions={"classes": "govuk-!-width-full"}) }}
|
||||
{% else %}
|
||||
<p class="govuk-body">We’ll reply to {{ current_user.email_address }}</p>
|
||||
{% endif %}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
{% extends "withoutnav_template.html" %}
|
||||
{% from "components/textbox.html" import textbox %}
|
||||
{% from "components/page-header.html" import page_header %}
|
||||
{% from "components/page-footer.html" import page_footer %}
|
||||
{% from "components/form.html" import form_wrapper %}
|
||||
@@ -18,7 +17,7 @@
|
||||
<div class="govuk-grid-row">
|
||||
<div class="govuk-grid-column-three-quarters">
|
||||
{% call form_wrapper() %}
|
||||
{{ textbox(form_field, safe_error_message=True) }}
|
||||
{{ form_field(error_message_with_html=True) }}
|
||||
{{ page_footer('Save') }}
|
||||
{% endcall %}
|
||||
</div>
|
||||
|
||||
@@ -80,7 +80,7 @@ def test_invite_org_user_errors_when_same_email_as_inviter(
|
||||
)
|
||||
|
||||
assert mock_invite_org_user.called is False
|
||||
assert normalize_spaces(page.select_one('.error-message').text) == 'You cannot send an invitation to yourself'
|
||||
assert 'You cannot send an invitation to yourself' in normalize_spaces(page.select_one('.govuk-error-message').text)
|
||||
|
||||
|
||||
def test_accepted_invite_when_other_user_already_logged_in(
|
||||
|
||||
@@ -205,10 +205,13 @@ def test_show_accept_agreement_page(
|
||||
]
|
||||
|
||||
assert normalize_spaces(page.select_one('label[for=version]').text) == (
|
||||
'Which version of the agreement do you want to accept? '
|
||||
'Which version of the agreement do you want to accept?'
|
||||
)
|
||||
|
||||
assert normalize_spaces(page.select_one('#version-hint').text) == (
|
||||
'The version number is on the front page, for example ‘3.6’'
|
||||
)
|
||||
assert page.select_one('input[name=version]')['value'] == ''
|
||||
assert page.select_one('input[name=version]').get('value') is None
|
||||
|
||||
assert normalize_spaces(page.select_one('#who legend').text) == (
|
||||
'Who are you accepting the agreement for?'
|
||||
@@ -235,12 +238,12 @@ def test_show_accept_agreement_page(
|
||||
assert normalize_spaces(page.select_one('label[for=on_behalf_of_name]').text) == (
|
||||
'What’s their name?'
|
||||
)
|
||||
assert page.select_one('input[name=on_behalf_of_name]')['value'] == ''
|
||||
assert page.select_one('input[name=on_behalf_of_name]').get('value') is None
|
||||
|
||||
assert normalize_spaces(page.select_one('label[for=on_behalf_of_email]').text) == (
|
||||
'What’s their email address?'
|
||||
)
|
||||
assert page.select_one('input[name=on_behalf_of_email]')['value'] == ''
|
||||
assert page.select_one('input[name=on_behalf_of_email]').get('value') is None
|
||||
|
||||
|
||||
def test_accept_agreement_page_populates(
|
||||
@@ -278,8 +281,7 @@ def test_accept_agreement_page_populates(
|
||||
'on_behalf_of_email': '',
|
||||
},
|
||||
[
|
||||
'Select an option',
|
||||
'Must be a number',
|
||||
'Error: Must be a number',
|
||||
],
|
||||
),
|
||||
(
|
||||
@@ -290,7 +292,7 @@ def test_accept_agreement_page_populates(
|
||||
'on_behalf_of_email': '',
|
||||
},
|
||||
[
|
||||
'Must be a number',
|
||||
'Error: Must be a number',
|
||||
],
|
||||
),
|
||||
(
|
||||
@@ -301,8 +303,8 @@ def test_accept_agreement_page_populates(
|
||||
'on_behalf_of_email': '',
|
||||
},
|
||||
[
|
||||
'Cannot be empty',
|
||||
'Cannot be empty',
|
||||
'Error: Cannot be empty',
|
||||
'Error: Cannot be empty',
|
||||
],
|
||||
),
|
||||
(
|
||||
@@ -313,7 +315,7 @@ def test_accept_agreement_page_populates(
|
||||
'on_behalf_of_email': '',
|
||||
},
|
||||
[
|
||||
'Cannot be empty',
|
||||
'Error: Cannot be empty',
|
||||
],
|
||||
),
|
||||
(
|
||||
@@ -324,7 +326,7 @@ def test_accept_agreement_page_populates(
|
||||
'on_behalf_of_email': 'test@example.com',
|
||||
},
|
||||
[
|
||||
'Cannot be empty',
|
||||
'Error: Cannot be empty',
|
||||
],
|
||||
),
|
||||
|
||||
@@ -343,7 +345,7 @@ def test_accept_agreement_page_validates(
|
||||
_expected_status=200,
|
||||
)
|
||||
assert [
|
||||
error.text.strip() for error in page.select('.error-message')
|
||||
error.text.strip() for error in page.select('.govuk-error-message')
|
||||
] == expected_errors
|
||||
|
||||
|
||||
|
||||
@@ -233,7 +233,7 @@ def test_email_address_required_for_problems_and_questions(
|
||||
_data=data,
|
||||
_expected_status=200
|
||||
)
|
||||
assert isinstance(page.find('span', {'class': 'error-message'}), element.Tag)
|
||||
assert isinstance(page.find('span', {'class': 'govuk-error-message'}), element.Tag)
|
||||
|
||||
|
||||
@freeze_time('2016-12-12 12:00:00.000000')
|
||||
@@ -255,8 +255,8 @@ def test_email_address_must_be_valid_if_provided_to_support_form(
|
||||
assert response.status_code == 200
|
||||
page = BeautifulSoup(response.data.decode('utf-8'), 'html.parser')
|
||||
|
||||
assert normalize_spaces(page.select_one('span.error-message').text) == (
|
||||
'Enter a valid email address'
|
||||
assert normalize_spaces(page.select_one('span.govuk-error-message').text) == (
|
||||
'Error: Enter a valid email address'
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -1116,8 +1116,8 @@ def test_user_cant_invite_themselves(
|
||||
_expected_status=200,
|
||||
)
|
||||
assert page.h1.string.strip() == 'Invite a team member'
|
||||
form_error = page.find('span', class_='error-message').string.strip()
|
||||
assert form_error == "You cannot send an invitation to yourself"
|
||||
form_error = page.find('span', class_='govuk-error-message').text.strip()
|
||||
assert form_error == "Error: You cannot send an invitation to yourself"
|
||||
assert not mock_create_invite.called
|
||||
|
||||
|
||||
@@ -1404,7 +1404,7 @@ def test_edit_user_email_cannot_change_a_gov_email_address_to_a_non_gov_email_ad
|
||||
},
|
||||
_expected_status=200,
|
||||
)
|
||||
assert 'Enter a public sector email address' in page.select_one('.error-message').text
|
||||
assert 'Enter a public sector email address' in page.select_one('.govuk-error-message').text
|
||||
with client_request.session_transaction() as session:
|
||||
assert 'team_member_email_change-'.format(active_user_with_permissions['id']) not in session
|
||||
|
||||
|
||||
@@ -113,10 +113,10 @@ def test_should_return_200_when_email_is_not_gov_uk(
|
||||
_expected_status=200,
|
||||
)
|
||||
|
||||
assert normalize_spaces(page.select_one('.error-message').text) == (
|
||||
'Enter a public sector email address or find out who can use Notify'
|
||||
assert 'Enter a public sector email address or find out who can use Notify' in normalize_spaces(
|
||||
page.select_one('.govuk-error-message').text
|
||||
)
|
||||
assert page.select_one('.error-message a')['href'] == url_for(
|
||||
assert page.select_one('.govuk-error-message a')['href'] == url_for(
|
||||
'main.who_can_use_notify'
|
||||
)
|
||||
|
||||
@@ -199,9 +199,9 @@ def test_register_with_existing_email_sends_emails(
|
||||
("first.1.2.3.last@example.com", "First Last"),
|
||||
("first.last.1.2.3@example.com", "First Last"),
|
||||
# Instances where we can’t make a good-enough guess:
|
||||
("example123@example.com", ""),
|
||||
("f.last@example.com", ""),
|
||||
("f.m.last@example.com", ""),
|
||||
("example123@example.com", None),
|
||||
("f.last@example.com", None),
|
||||
("f.m.last@example.com", None),
|
||||
])
|
||||
def test_shows_name_on_registration_page_from_invite(
|
||||
client_request,
|
||||
@@ -223,7 +223,7 @@ def test_shows_name_on_registration_page_from_invite(
|
||||
}
|
||||
|
||||
page = client_request.get('main.register_from_invite')
|
||||
assert page.select_one('input[name=name]')['value'] == expected_value
|
||||
assert page.select_one('input[name=name]').get('value') == expected_value
|
||||
|
||||
|
||||
def test_shows_hidden_email_address_on_registration_page_from_invite(
|
||||
@@ -247,7 +247,7 @@ def test_shows_hidden_email_address_on_registration_page_from_invite(
|
||||
assert normalize_spaces(page.select_one('main p').text) == (
|
||||
'Your account will be created with this email address: test@example.com'
|
||||
)
|
||||
hidden_input = page.select_one('form .visually-hidden input')
|
||||
hidden_input = page.select_one('form .govuk-visually-hidden input')
|
||||
for attr, value in (
|
||||
('type', 'email'),
|
||||
('name', 'username'),
|
||||
|
||||
@@ -2266,7 +2266,7 @@ def test_send_one_off_letter_copes_with_placeholder_from_address_block(
|
||||
|
||||
assert normalize_spaces(page.select_one('form label').text) == 'thing'
|
||||
assert page.select_one('form input[type=text]')['name'] == 'placeholder_value'
|
||||
assert page.select_one('form input[type=text]')['value'] == ''
|
||||
assert page.select_one('form input[type=text]').get('value') is None
|
||||
|
||||
with client_request.session_transaction() as session:
|
||||
assert session['placeholders'] == {
|
||||
|
||||
@@ -2240,7 +2240,7 @@ def test_incorrect_reply_to_email_address_input(
|
||||
_expected_status=200
|
||||
)
|
||||
|
||||
assert normalize_spaces(page.select_one('.error-message').text) == expected_error
|
||||
assert expected_error in normalize_spaces(page.select_one('.govuk-error-message').text)
|
||||
|
||||
|
||||
@pytest.mark.parametrize('contact_block_input, expected_error', [
|
||||
|
||||
@@ -15,7 +15,7 @@ def test_render_sign_in_template_for_new_user(
|
||||
page = client_request.get('main.sign_in')
|
||||
assert normalize_spaces(page.select_one('h1').text) == 'Sign in'
|
||||
assert normalize_spaces(page.select('label')[0].text) == 'Email address'
|
||||
assert page.select_one('#email_address')['value'] == ''
|
||||
assert page.select_one('#email_address').get('value') is None
|
||||
assert page.select_one('#email_address')['autocomplete'] == 'email'
|
||||
assert normalize_spaces(page.select('label')[1].text) == 'Password'
|
||||
assert page.select_one('#password').get('value') is None
|
||||
|
||||
Reference in New Issue
Block a user