diff --git a/app/main/views/send.py b/app/main/views/send.py
index 418446f52..61e0c0083 100644
--- a/app/main/views/send.py
+++ b/app/main/views/send.py
@@ -561,24 +561,47 @@ def _check_messages(service_id, template_id, upload_id, preview_row, **kwargs):
)
if request.args.get("from_test"):
- # TODO: may not be required after letters code removed
- back_link = url_for(
- "main.send_one_off", service_id=service_id, template_id=template.id
- )
- back_link_from_preview = url_for(
- "main.send_one_off", service_id=service_id, template_id=template.id
- )
+ back_link = {
+ "href": {
+ "url": url_for(
+ "main.send_one_off", service_id=service_id, template_id=template.id
+ ),
+ "text": "Back to message personalization"
+ },
+ "html": "Back to message personalization"
+ }
+ back_link_from_preview = {
+ "href": {
+ "url": url_for(
+ "main.send_one_off", service_id=service_id, template_id=template.id
+ ),
+ "text": "Back to message personalization"
+ },
+ "html": "Back to message personalization"
+ }
choose_time_form = None
else:
- back_link = url_for(
- "main.send_messages", service_id=service_id, template_id=template.id
- )
- back_link_from_preview = url_for(
- "main.check_messages",
- service_id=service_id,
- template_id=template.id,
- upload_id=upload_id,
- )
+ back_link = {
+ "href": {
+ "url": url_for(
+ "main.send_messages", service_id=service_id, template_id=template.id
+ ),
+ "text": "Back to upload a file"
+ },
+ "html": "Back to upload a file"
+ }
+ back_link_from_preview = {
+ "href": {
+ "url": url_for(
+ "main.check_messages",
+ service_id=service_id,
+ template_id=template.id,
+ upload_id=upload_id,
+ ),
+ "text": "Back to check messages"
+ },
+ "html": "Back to check messages"
+ }
choose_time_form = ChooseTimeForm()
if preview_row < 2:
@@ -756,31 +779,60 @@ def get_back_link(
preview=False,
):
if preview:
- return url_for(
- "main.check_notification",
- service_id=service_id,
- template_id=template.id,
- )
+ return {
+ "href": {
+ "url": url_for(
+ "main.check_notification",
+ service_id=service_id,
+ template_id=template.id,
+ ),
+ "text": "Back to select delivery time"
+ },
+ "html": "Back to select delivery time"
+ }
if step_index == 0:
if should_skip_template_page(template._template):
- return url_for(
- ".choose_template",
- service_id=service_id,
- )
+ return {
+ "href": {
+ "url": url_for(
+ ".choose_template",
+ service_id=service_id,
+ ),
+ "text": "Back to all templates"
+ },
+ "html": "Back to all templates"
+ }
else:
- return url_for(
- ".view_template",
+ return {
+ "href": {
+ "url": url_for(
+ ".view_template",
+ service_id=service_id,
+ template_id=template.id,
+ ),
+ "text": "Back to confirm your template"
+ },
+ "html": "Back to confirm your template"
+ }
+
+ # fallback for other steps
+ back_to_text = (
+ "Back to select recipients" if step_index == 1 else "Back to message personalization"
+ )
+
+ return {
+ "href": {
+ "url": url_for(
+ "main.send_one_off_step",
service_id=service_id,
template_id=template.id,
- )
-
- return url_for(
- "main.send_one_off_step",
- service_id=service_id,
- template_id=template.id,
- step_index=step_index - 1,
- )
+ step_index=step_index - 1,
+ ),
+ "text": back_to_text
+ },
+ "html": back_to_text
+ }
def get_skip_link(step_index, template):
@@ -880,7 +932,7 @@ def _check_notification(service_id, template_id, exception=None, **kwargs):
if (not session.get("recipient")) or not all_placeholders_in_session(
template.placeholders
):
- raise PermanentRedirect(back_link)
+ raise PermanentRedirect(back_link["href"]["url"])
template.values = get_recipient_and_placeholders_from_session(
template.template_type
diff --git a/app/main/views/tour.py b/app/main/views/tour.py
index 0e4b5f344..e253167c8 100644
--- a/app/main/views/tour.py
+++ b/app/main/views/tour.py
@@ -139,14 +139,30 @@ def tour_step(service_id, template_id, step_index):
def _get_tour_step_back_link(service_id, template_id, step_index):
if step_index == 1:
- return url_for(".begin_tour", service_id=service_id, template_id=template_id)
-
- return url_for(
- ".tour_step",
- service_id=service_id,
- template_id=template_id,
- step_index=step_index - 1,
- )
+ return {
+ "href": {
+ "url": url_for(
+ 'main.begin_tour',
+ service_id=service_id,
+ template_id=template_id
+ ),
+ "text": "Back to tour start"
+ },
+ "html": "Back to tour start"
+ }
+ else:
+ return {
+ "href": {
+ "url": url_for(
+ "main.tour_step",
+ service_id=service_id,
+ template_id=template_id,
+ step_index=step_index - 1,
+ ),
+ "text": "Back to previous step",
+ },
+ "html": "Back to previous step",
+ }
@main.route(
@@ -183,12 +199,18 @@ def check_tour_notification(service_id, template_id):
)
)
- back_link = url_for(
- ".tour_step",
- service_id=current_service.id,
- template_id=template_id,
- step_index=len(placeholders),
- )
+ back_link = {
+ "href": {
+ "url": url_for(
+ "main.tour_step",
+ service_id=current_service.id,
+ template_id=template_id,
+ step_index=len(placeholders),
+ ),
+ "text": "Back to previous step"
+ },
+ "html": "Back to previous step"
+ }
template.values = get_recipient_and_placeholders_from_session(
template.template_type
diff --git a/app/templates/components/components/back-link/macro.njk b/app/templates/components/components/back-link/macro.njk
index d232c1b2b..e52d92fff 100644
--- a/app/templates/components/components/back-link/macro.njk
+++ b/app/templates/components/components/back-link/macro.njk
@@ -1,3 +1,3 @@
{% macro usaBackLink(params) %}
- {%- include "./template.njk" -%}
+ {%- include "./template.njk" with context %}
{% endmacro %}
diff --git a/app/templates/components/components/back-link/template.njk b/app/templates/components/components/back-link/template.njk
index 340b3ca22..84344ab35 100644
--- a/app/templates/components/components/back-link/template.njk
+++ b/app/templates/components/components/back-link/template.njk
@@ -1,4 +1,6 @@
diff --git a/app/templates/views/check/ok.html b/app/templates/views/check/ok.html
index 58e31a06a..6da7546e2 100644
--- a/app/templates/views/check/ok.html
+++ b/app/templates/views/check/ok.html
@@ -12,7 +12,7 @@
{% block backLink %}
- {{ usaBackLink({ "href": back_link }) }}
+ {{ usaBackLink(back_link) }}
{% endblock %}
{% block maincolumn_content %}
diff --git a/app/templates/views/check/preview.html b/app/templates/views/check/preview.html
index 091ba345f..8a1e6189d 100644
--- a/app/templates/views/check/preview.html
+++ b/app/templates/views/check/preview.html
@@ -13,7 +13,7 @@
{% block backLink %}
- {{ usaBackLink({ "href": back_link_from_preview }) }}
+ {{ usaBackLink(back_link_from_preview) }}
{% endblock %}
{% block maincolumn_content %}
diff --git a/app/templates/views/edit-sms-template.html b/app/templates/views/edit-sms-template.html
index 87dba61e4..8dc8448a1 100644
--- a/app/templates/views/edit-sms-template.html
+++ b/app/templates/views/edit-sms-template.html
@@ -11,7 +11,8 @@
{% block backLink %}
{{ usaBackLink({
- "href": url_for('main.choose_template', service_id=current_service.id, template_folder_id=template_folder_id) if template_folder_id else url_for('main.choose_template', service_id=current_service.id)
+ "href": url_for('main.choose_template', service_id=current_service.id, template_folder_id=template_folder_id) if template_folder_id else url_for('main.choose_template', service_id=current_service.id),
+ "html": "Back to all templates"
}) }}
{% endblock %}
diff --git a/app/templates/views/notifications/check.html b/app/templates/views/notifications/check.html
index 8646d1b7f..6566c395c 100644
--- a/app/templates/views/notifications/check.html
+++ b/app/templates/views/notifications/check.html
@@ -9,7 +9,7 @@
{% endblock %}
{% block backLink %}
- {{ usaBackLink({ "href": back_link }) }}
+ {{ usaBackLink(back_link) }}
{% endblock %}
{% block maincolumn_content %}
diff --git a/app/templates/views/notifications/preview.html b/app/templates/views/notifications/preview.html
index 536288d9a..c870ba539 100644
--- a/app/templates/views/notifications/preview.html
+++ b/app/templates/views/notifications/preview.html
@@ -16,9 +16,9 @@
{% block backLink %}
{% if help %}
- {{ usaBackLink({ "href": back_link }) }}
+ {{ usaBackLink(back_link) }}
{% else %}
- {{ usaBackLink({ "href": back_link_from_preview }) }}
+ {{ usaBackLink(back_link_from_preview) }}
{% endif %}
{% endblock %}
diff --git a/app/templates/views/send-test.html b/app/templates/views/send-test.html
index d17a5484d..cba10ac7c 100644
--- a/app/templates/views/send-test.html
+++ b/app/templates/views/send-test.html
@@ -10,7 +10,7 @@
{% endblock %}
{% block backLink %}
- {{ usaBackLink({ "href": back_link }) }}
+ {{ usaBackLink(back_link) }}
{% endblock %}
diff --git a/app/templates/views/send.html b/app/templates/views/send.html
index f7fcbd0cb..765c06d4d 100644
--- a/app/templates/views/send.html
+++ b/app/templates/views/send.html
@@ -13,7 +13,8 @@
{% block backLink %}
{{ usaBackLink({
- "href": url_for('main.send_one_off_step', service_id=current_service.id, template_id=template.id, step_index=0)
+ "href": url_for('main.send_one_off_step', service_id=current_service.id, template_id=template.id, step_index=0),
+ "html": "Back to select recipients"
}) }}
{% endblock %}
diff --git a/tests/app/main/views/test_send.py b/tests/app/main/views/test_send.py
index ac81050ad..a18909070 100644
--- a/tests/app/main/views/test_send.py
+++ b/tests/app/main/views/test_send.py
@@ -1449,7 +1449,10 @@ def test_send_one_off_offers_link_to_upload(
back_link = page.select_one(".usa-back-link")
link = page.select_one("form a")
- assert back_link.text.strip() == "Back"
+ assert back_link.text.strip() in {
+ "Back to all templates",
+ "Back to confirm your template"
+ }
assert link.text.strip() == "Upload a list of phone numbers"
assert link["href"] == url_for(
@@ -1519,8 +1522,6 @@ def test_link_to_upload_not_offered_when_entering_personalisation(
step_index=1,
)
- # print(page.prettify()) # Print the full HTML response
-
# We’re entering personalization
assert page.select_one("input[type=text]")["name"] == "placeholder_value"
assert page.select_one("label").text.strip() == "name"
@@ -2284,9 +2285,11 @@ def test_check_messages_back_link(
**extra_args,
)
- assert (page.find_all("a", {"class": "usa-back-link"})[0]["href"]) == expected_url(
- service_id=SERVICE_ONE_ID, template_id=fake_uuid
- )
+ actual_href = page.find_all("a", {"class": "usa-back-link"})[0]["href"]
+ expected_href = expected_url(service_id=SERVICE_ONE_ID, template_id=fake_uuid)
+
+ assert actual_href != "#", "Back link href fell back to '#' — missing correct back_link in view"
+ assert actual_href == expected_href
@pytest.mark.parametrize(
@@ -2714,8 +2717,15 @@ def test_preview_notification_shows_preview(
template_id=fake_uuid,
_expected_status=200,
)
+
assert page.h1.text.strip() == "Preview for sending"
- assert (page.find_all("a", {"class": "usa-back-link"})[0]["href"]) == url_for(
+ back_link = page.find_all("a", {"class": "usa-back-link"})[0]
+ assert back_link is not None
+
+ # The real rendered attribute
+ href = back_link["href"]
+
+ assert href == url_for(
"main.check_notification",
service_id=service_one["id"],
template_id=fake_uuid,