From 9e8aec4c5ddd19c5073c1315689b18bf9584c44e Mon Sep 17 00:00:00 2001 From: Jonathan Bobel Date: Wed, 12 Mar 2025 15:37:51 -0400 Subject: [PATCH 1/5] 2398 - broken TTS link Updating TTS link, maybe the link used to go to a page that was removed --- app/templates/base.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/templates/base.html b/app/templates/base.html index 3135e5cdb..1690e8ee3 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -94,10 +94,10 @@ {% block footer %} {% if current_service and current_service.research_mode %} - {% set meta_suffix = 'Built by the Technology Transformation Servicesresearch mode' %} + {% set meta_suffix = 'Built by the Technology Transformation Servicesresearch mode' %} {% else %} {% set commit_hash = ", Latest version: " + config['COMMIT_HASH'] %} - {% set long_link = 'Technology Transformation Services' %} + {% set long_link = 'Technology Transformation Services' %} {% set meta_suffix = "Built by the " + long_link + commit_hash %} {% endif %} From 558753037f94381445bea54e672b472cd0ae432f Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Thu, 13 Mar 2025 15:43:21 -0700 Subject: [PATCH 2/5] content updates --- .../uswds/_uswds-theme-custom-styles.scss | 4 ++ app/main/views/index.py | 14 +++-- app/main/views/sub_navigation_dictionaries.py | 4 -- app/templates/base.html | 24 ++++++++ app/templates/components/header.html | 4 +- app/templates/views/about/about.html | 1 - .../views/about/why-text-messaging.html | 3 +- app/templates/views/contact.html | 17 ++---- .../views/notify-service-ending.html | 28 +++++++++ app/templates/views/signedout.html | 60 +++++++------------ tests/app/test_navigation.py | 1 + urls.js | 8 +-- 12 files changed, 96 insertions(+), 72 deletions(-) create mode 100644 app/templates/views/notify-service-ending.html diff --git a/app/assets/sass/uswds/_uswds-theme-custom-styles.scss b/app/assets/sass/uswds/_uswds-theme-custom-styles.scss index 920c8641d..83ad4ece4 100644 --- a/app/assets/sass/uswds/_uswds-theme-custom-styles.scss +++ b/app/assets/sass/uswds/_uswds-theme-custom-styles.scss @@ -1047,3 +1047,7 @@ nav.nav { .form-control-error { border: 4px solid #b10e1e } + +.usa-site-alert .usa-alert .usa-alert__body { + max-width: 75rem; +} diff --git a/app/main/views/index.py b/app/main/views/index.py index 5c0312afc..475fd4e82 100644 --- a/app/main/views/index.py +++ b/app/main/views/index.py @@ -258,11 +258,17 @@ def why_text_messaging(): ) -@main.route("/join-notify") -def join_notify(): +@main.route("/notify-service-ending") +@user_is_logged_in +def notify_service_ending(): + user_is_authenticated = current_user.is_authenticated + user_is_platform_admin = getattr(current_user, "platform_admin", False) + + navigation_links = about_notify_nav() if not (user_is_authenticated or user_is_platform_admin) else None + return render_template( - "views/join-notify.html", - navigation_links=about_notify_nav(), + "views/notify-service-ending.html", + navigation_links = navigation_links ) diff --git a/app/main/views/sub_navigation_dictionaries.py b/app/main/views/sub_navigation_dictionaries.py index db086e511..dc5ddf469 100644 --- a/app/main/views/sub_navigation_dictionaries.py +++ b/app/main/views/sub_navigation_dictionaries.py @@ -56,10 +56,6 @@ def about_notify_nav(): }, ], }, - { - "name": "Join Notify", - "link": "main.join_notify", - }, { "name": "Contact us", "link": "main.contact", diff --git a/app/templates/base.html b/app/templates/base.html index 3135e5cdb..f039933bb 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -29,6 +29,30 @@ {% block header %} {% include 'components/usa_banner.html' %} + {% if current_user.is_authenticated or current_service or current_user.platform_admin %} +
+
+
+

Notify.gov Service Ending

+

+ GSA will no longer offer the Notify.gov service after June 8th, 2025. Visit + Notify.gov Service Ending for more information. +

+
+
+
+ {% else %} +
+
+
+

Notify.gov Service Ending

+

+ Notify.gov is no longer accepting new partners. +

+
+
+
+ {% endif %} {% include 'components/header.html' %} {% endblock %} diff --git a/app/templates/components/header.html b/app/templates/components/header.html index 8445cb3a1..760cc905d 100644 --- a/app/templates/components/header.html +++ b/app/templates/components/header.html @@ -1,7 +1,6 @@ {% set is_about_page = request.path.startswith('/about') %} -{% set is_join_notify_page = request.path.startswith('/join-notify') %} {% set is_contact_page = request.path.startswith('/contact') %} -{% set is_information_section = is_about_page or is_join_notify_page or is_contact_page %} +{% set is_information_section = is_about_page or is_contact_page %} {% if current_user.is_authenticated %} {% set navigation = [ @@ -34,7 +33,6 @@ {% else %} {% set navigation = [ {"href": url_for('main.about_notify'), "text": "About Notify", "active": is_about_page}, - {"href": url_for('main.join_notify'), "text": "Join Notify", "active": is_join_notify_page}, {"href": url_for('main.contact'), "text": "Contact us", "active": is_contact_page} ] %} {% endif %} diff --git a/app/templates/views/about/about.html b/app/templates/views/about/about.html index bc8fec04d..5b034d34f 100644 --- a/app/templates/views/about/about.html +++ b/app/templates/views/about/about.html @@ -66,7 +66,6 @@ {% endfor %} -

See if Notify is right for you

Notify.gov is a product of the Public Benefits Studio, a product accelerator inside the federal government.

diff --git a/app/templates/views/about/why-text-messaging.html b/app/templates/views/about/why-text-messaging.html index c0d6a29a1..d9ec2635a 100644 --- a/app/templates/views/about/why-text-messaging.html +++ b/app/templates/views/about/why-text-messaging.html @@ -40,8 +40,7 @@

Texting not only helps programs reach people using a nearly-universal communication method, it is a cost effective - way to do so. With Notify.gov you can get started for free, allowing you to try out - texting to complement your existing communications and outreach strategies. + way to do so.

What texting is best for

diff --git a/app/templates/views/contact.html b/app/templates/views/contact.html index 7eb8b0414..fa0b3a0f0 100644 --- a/app/templates/views/contact.html +++ b/app/templates/views/contact.html @@ -7,19 +7,10 @@ {% block content_column_content %}

{{page_title}}

-

Is your organization interested in using Notify.gov? Find more information at Join - Notify or contact us at For any questions, contact us at tts-notify@gsa.gov.

-

You can expect a response within one business day.

-
-
-
-

If you are a current Notify.gov partner and have technical issues or questions, we are available at notify-support@gsa.gov

-
-
-
+

If you are a current Notify.gov partner and have technical issues or questions, we are available + at notify-support@gsa.gov

{% endblock %} diff --git a/app/templates/views/notify-service-ending.html b/app/templates/views/notify-service-ending.html new file mode 100644 index 000000000..8f5b2206d --- /dev/null +++ b/app/templates/views/notify-service-ending.html @@ -0,0 +1,28 @@ +{% extends "base.html" %} + +{% set page_title = "Notify.gov Service Ending" %} + +{% block per_page_title %}{{page_title}}{% endblock %} + +{% block content_column_content %} + +
+

{{page_title}}

+

GSA will no longer offer the Notify.gov service after June 8th, 2025. Current partners will continue to have service access until it is fully suspended. After May 30, partners will no longer be able to send messages, and the full service will be suspended by June 8, 2025. +

+

Notify.gov Status Announcement

+

Notify.gov was in beta and will no longer be offered by GSA. Operations will be suspended on or before June 8. There is a chance that the service may need to stop sooner. GSA will keep partners informed to the extent possible.

+ +

All Notify.gov partners will be moved to trial mode no later than May 30, and will no longer be able to send messages. Partners will be able to access their templates and data through June 8.

+ +

We encourage government programs to explore ways to continue utilizing technology to meet people where they are. There are several commercial tools on the market that may work for Notify.gov use cases.

+ +

GSA is working to avoid potential disruptions to partners’ operations and ensure a smooth transition.

+ +

This decision is part of GSA’s renewed focus on its original mission: to be the backbone of the federal government’s administrative operations — streamlining processes, optimizing resources, and ensuring cost-effectiveness. GSA is driven to reducing federal spend, contributing to a more flexible and streamlined government, and delivering value for the American people.

+ +

We wish you all the best as you continue your work.

+ + +
+{% endblock %} diff --git a/app/templates/views/signedout.html b/app/templates/views/signedout.html index ac9d11798..27311f1f9 100644 --- a/app/templates/views/signedout.html +++ b/app/templates/views/signedout.html @@ -171,47 +171,29 @@ import usaButton %} {% block meta %}
-

- Who can use Notify.gov? -

-

- All federal agencies and programs are - eligible to use Notify.gov. -

-

- US - state, local, territorial, or tribal - governments that administer or deliver federally-funded programs or - services may qualify to use Notify.gov to communicate with applicants and - participants in these programs. -

-
diff --git a/tests/app/test_navigation.py b/tests/app/test_navigation.py index 6553e071b..3faad1d3c 100644 --- a/tests/app/test_navigation.py +++ b/tests/app/test_navigation.py @@ -134,6 +134,7 @@ EXCLUDED_ENDPOINTS = tuple( "multiple_languages", "new_password", "notifications_sent_by_service", + "notify_service_ending", "old_guest_list", "old_integration_testing", "old_service_dashboard", diff --git a/urls.js b/urls.js index a7221a5d9..23349f264 100644 --- a/urls.js +++ b/urls.js @@ -42,12 +42,8 @@ const sublinks = [ path: '/about/security', }, { - label: 'Join Notify', - path: '/join-notify', - }, - { - label: 'Contact', - path: '/contact', + label: 'Notify.gov Service Ending', + path: '/notify-service-ending', }, // Add more links here as needed From d64d84ff4ac299973417ea637855973e0945fbcb Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Thu, 13 Mar 2025 15:51:24 -0700 Subject: [PATCH 3/5] flake8 --- app/main/views/index.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/main/views/index.py b/app/main/views/index.py index 475fd4e82..854f2411a 100644 --- a/app/main/views/index.py +++ b/app/main/views/index.py @@ -268,7 +268,7 @@ def notify_service_ending(): return render_template( "views/notify-service-ending.html", - navigation_links = navigation_links + navigation_links=navigation_links ) From 41dcedd48fe54980048254c7161b58fde19a9f34 Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Thu, 13 Mar 2025 15:54:14 -0700 Subject: [PATCH 4/5] update to nav --- app/main/views/index.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/app/main/views/index.py b/app/main/views/index.py index 854f2411a..6341d1798 100644 --- a/app/main/views/index.py +++ b/app/main/views/index.py @@ -261,14 +261,8 @@ def why_text_messaging(): @main.route("/notify-service-ending") @user_is_logged_in def notify_service_ending(): - user_is_authenticated = current_user.is_authenticated - user_is_platform_admin = getattr(current_user, "platform_admin", False) - - navigation_links = about_notify_nav() if not (user_is_authenticated or user_is_platform_admin) else None - return render_template( "views/notify-service-ending.html", - navigation_links=navigation_links ) From 371fbb2cd45d1bcb7b9f8fcb1c38d34b4a21851b Mon Sep 17 00:00:00 2001 From: Beverly Nguyen Date: Thu, 13 Mar 2025 21:49:40 -0700 Subject: [PATCH 5/5] fixed test and e2e --- .../service_settings/test_service_settings.py | 4 +++- tests/app/main/views/test_activity.py | 15 ++++++++++++--- tests/app/test_navigation.py | 1 - .../end_to_end/test_landing_and_sign_in_pages.py | 1 - 4 files changed, 15 insertions(+), 6 deletions(-) diff --git a/tests/app/main/views/service_settings/test_service_settings.py b/tests/app/main/views/service_settings/test_service_settings.py index d7155f709..6c4e42fac 100644 --- a/tests/app/main/views/service_settings/test_service_settings.py +++ b/tests/app/main/views/service_settings/test_service_settings.py @@ -488,7 +488,9 @@ def test_show_switch_service_to_count_as_live_page( # Extract label text and see if it matches the expected label label_texts = [label.text.strip() for label in labels] - assert labelled in label_texts, f"Expected label '{labelled}' not found. Found labels: {label_texts}" + assert ( + labelled in label_texts + ), f"Expected label '{labelled}' not found. Found labels: {label_texts}" @pytest.mark.parametrize( diff --git a/tests/app/main/views/test_activity.py b/tests/app/main/views/test_activity.py index 02bed98fa..753931ce5 100644 --- a/tests/app/main/views/test_activity.py +++ b/tests/app/main/views/test_activity.py @@ -388,7 +388,10 @@ def test_search_recipient_form( query_dict = parse_qs(url.query) assert query_dict == {} - assert page.select_one("label:contains('Search by')").text.strip() == expected_search_box_label + assert ( + page.select_one("label:contains('Search by')").text.strip() + == expected_search_box_label + ) recipient_inputs = page.select("input[name=to]") assert len(recipient_inputs) == 2 @@ -421,7 +424,10 @@ def test_api_users_are_told_they_can_search_by_reference_when_service_has_api_ke service_id=SERVICE_ONE_ID, message_type=message_type, ) - assert page.select_one("label:contains('Search by')").text.strip() == expected_search_box_label + assert ( + page.select_one("label:contains('Search by')").text.strip() + == expected_search_box_label + ) @pytest.mark.parametrize( @@ -449,7 +455,10 @@ def test_api_users_are_not_told_they_can_search_by_reference_when_service_has_no message_type=message_type, ) - assert page.select_one("label:contains('Search by')").text.strip() == expected_search_box_label + assert ( + page.select_one("label:contains('Search by')").text.strip() + == expected_search_box_label + ) def test_should_show_notifications_for_a_service_with_next_previous( diff --git a/tests/app/test_navigation.py b/tests/app/test_navigation.py index 3faad1d3c..4e9ef54c0 100644 --- a/tests/app/test_navigation.py +++ b/tests/app/test_navigation.py @@ -122,7 +122,6 @@ EXCLUDED_ENDPOINTS = tuple( "integration_testing", "invite_org_user", "invite_user", - "join_notify", "link_service_to_organization", "live_services", "live_services_csv", diff --git a/tests/end_to_end/test_landing_and_sign_in_pages.py b/tests/end_to_end/test_landing_and_sign_in_pages.py index 3741a3a19..4686876d4 100644 --- a/tests/end_to_end/test_landing_and_sign_in_pages.py +++ b/tests/end_to_end/test_landing_and_sign_in_pages.py @@ -40,7 +40,6 @@ def test_landing_page(end_to_end_context): content_headers = [ "Government texting made easy", "Key features", - "Who can use Notify.gov", ] for content_header in content_headers: