diff --git a/app/templates/base.html b/app/templates/base.html index bc46d3171..1d2778a9e 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -50,7 +50,7 @@ {% block maincolumn_content %}
{% if navigation_links %} -
+
-
+
{% else %} -
+
{% endif %} {% block content_column_content %}{% endblock %}
diff --git a/backstop_data/bitmaps_reference/backstop_test_About_0_document_0_desktop.png b/backstop_data/bitmaps_reference/backstop_test_About_0_document_0_desktop.png new file mode 100644 index 000000000..6f2fbc850 Binary files /dev/null and b/backstop_data/bitmaps_reference/backstop_test_About_0_document_0_desktop.png differ diff --git a/backstop_data/bitmaps_reference/backstop_test_Contact_0_document_0_desktop.png b/backstop_data/bitmaps_reference/backstop_test_Contact_0_document_0_desktop.png new file mode 100644 index 000000000..87e6ffd48 Binary files /dev/null and b/backstop_data/bitmaps_reference/backstop_test_Contact_0_document_0_desktop.png differ diff --git a/backstop_data/bitmaps_reference/backstop_test_Establish_Trust_0_document_0_desktop.png b/backstop_data/bitmaps_reference/backstop_test_Establish_Trust_0_document_0_desktop.png index 25db02ceb..fb31fc2e8 100644 Binary files a/backstop_data/bitmaps_reference/backstop_test_Establish_Trust_0_document_0_desktop.png and b/backstop_data/bitmaps_reference/backstop_test_Establish_Trust_0_document_0_desktop.png differ diff --git a/backstop_data/bitmaps_reference/backstop_test_Guidance_0_document_0_desktop.png b/backstop_data/bitmaps_reference/backstop_test_Guidance_0_document_0_desktop.png index c65fcc0c9..d7a515b0e 100644 Binary files a/backstop_data/bitmaps_reference/backstop_test_Guidance_0_document_0_desktop.png and b/backstop_data/bitmaps_reference/backstop_test_Guidance_0_document_0_desktop.png differ diff --git a/backstop_data/bitmaps_reference/backstop_test_Homepage_0_document_0_desktop.png b/backstop_data/bitmaps_reference/backstop_test_Homepage_0_document_0_desktop.png index fd75611bb..686ce6fc5 100644 Binary files a/backstop_data/bitmaps_reference/backstop_test_Homepage_0_document_0_desktop.png and b/backstop_data/bitmaps_reference/backstop_test_Homepage_0_document_0_desktop.png differ diff --git a/backstop_data/bitmaps_reference/backstop_test_Join_Notify_0_document_0_desktop.png b/backstop_data/bitmaps_reference/backstop_test_Join_Notify_0_document_0_desktop.png new file mode 100644 index 000000000..360c49126 Binary files /dev/null and b/backstop_data/bitmaps_reference/backstop_test_Join_Notify_0_document_0_desktop.png differ diff --git a/backstop_data/bitmaps_reference/backstop_test_Pricing_0_document_0_desktop.png b/backstop_data/bitmaps_reference/backstop_test_Pricing_0_document_0_desktop.png index 30ad020ee..9b158bc0c 100644 Binary files a/backstop_data/bitmaps_reference/backstop_test_Pricing_0_document_0_desktop.png and b/backstop_data/bitmaps_reference/backstop_test_Pricing_0_document_0_desktop.png differ diff --git a/backstop_data/bitmaps_reference/backstop_test_Security_0_document_0_desktop.png b/backstop_data/bitmaps_reference/backstop_test_Security_0_document_0_desktop.png index 65382a710..6af3e40cf 100644 Binary files a/backstop_data/bitmaps_reference/backstop_test_Security_0_document_0_desktop.png and b/backstop_data/bitmaps_reference/backstop_test_Security_0_document_0_desktop.png differ diff --git a/backstop_data/bitmaps_reference/backstop_test_Trial_Mode_0_document_0_desktop.png b/backstop_data/bitmaps_reference/backstop_test_Trial_Mode_0_document_0_desktop.png index b457a1d4d..6e8d9e068 100644 Binary files a/backstop_data/bitmaps_reference/backstop_test_Trial_Mode_0_document_0_desktop.png and b/backstop_data/bitmaps_reference/backstop_test_Trial_Mode_0_document_0_desktop.png differ diff --git a/backstop_data/bitmaps_reference/backstop_test_Why_Text_Messaging_0_document_0_desktop.png b/backstop_data/bitmaps_reference/backstop_test_Why_Text_Messaging_0_document_0_desktop.png new file mode 100644 index 000000000..eb0e26295 Binary files /dev/null and b/backstop_data/bitmaps_reference/backstop_test_Why_Text_Messaging_0_document_0_desktop.png differ diff --git a/tests/app/main/views/test_index.py b/tests/app/main/views/test_index.py index 8c6c7b7a7..9f5bf51e4 100644 --- a/tests/app/main/views/test_index.py +++ b/tests/app/main/views/test_index.py @@ -108,52 +108,33 @@ def test_hiding_pages_from_search_engines( def test_static_pages(client_request, mock_get_organization_by_domain, view, mocker): mocker.patch("app.notify_client.user_api_client.UserApiClient.deactivate_user") - # Function to check if a view is feature-flagged and should return 404 when disabled - def is_feature_flagged(view): - feature_flagged_views = [ - "clear_goals", - "rules_and_regulations", - "establish_trust", - "write_for_action", - "multiple_languages", - "benchmark_performance", - "guidance_index", - ] - return ( - view in feature_flagged_views - ) - request = partial(client_request.get, "main.{}".format(view)) - # If the guidance feature is disabled, expect a 404 for feature-flagged views - if is_feature_flagged(view): - page = request(_expected_status=404) - else: - # Check the page loads when user is signed in - page = request() - assert page.select_one("meta[name=description]") + # Assert the page loads successfully + page = request(_expected_status=200) + assert page.select_one("meta[name=description]") - # Check it still works when they don’t have a recent service - with client_request.session_transaction() as session: - session["service_id"] = None - request() + # Check the behavior when no recent service is set + with client_request.session_transaction() as session: + session["service_id"] = None + request() - # Check it redirects to the login screen when they sign out - client_request.logout() - with client_request.session_transaction() as session: - session["service_id"] = None - session["user_id"] = None - request( - _expected_status=302, - _expected_redirect="/sign-in?next={}".format( - url_for("main.{}".format(view)) - ), - ) + # Check redirection to login screen when signed out + client_request.logout() + with client_request.session_transaction() as session: + session["service_id"] = None + session["user_id"] = None + request( + _expected_status=302, + _expected_redirect="/sign-in?next={}".format( + url_for("main.{}".format(view)) + ), + ) def test_guidance_pages_link_to_service_pages_when_signed_in(client_request, mocker): - mocker.patch("app.notify_client.user_api_client.UserApiClient.deactivate_user") + request = partial(client_request.get, "main.edit_and_format_messages") selector = ".list-number li a" @@ -175,8 +156,7 @@ def test_guidance_pages_link_to_service_pages_when_signed_in(client_request, moc with client_request.session_transaction() as session: session["service_id"] = None session["user_id"] = None - page = request(_expected_status=302) - assert not page.select_one(selector) + request(_expected_status=302) @pytest.mark.parametrize( diff --git a/tests/end_to_end/test_best_practices_content_pages.py b/tests/end_to_end/test_best_practices_content_pages.py index 9f805962e..ac5294dd7 100644 --- a/tests/end_to_end/test_best_practices_content_pages.py +++ b/tests/end_to_end/test_best_practices_content_pages.py @@ -11,15 +11,14 @@ E2E_TEST_URI = os.getenv("NOTIFY_E2E_TEST_URI") def test_best_practices_side_menu(authenticated_page): page = authenticated_page - page.goto(f"{E2E_TEST_URI}") - - page.wait_for_load_state("domcontentloaded") + page.goto(f"{E2E_TEST_URI}guides/best-practices") + page.wait_for_load_state("networkidle") check_axe_report(page) - # Test Best Practices navigation - page.get_by_role("link", name="Best Practices").click() - expect(page).to_have_title(re.compile("Best Practice")) + # Test navigation for "Best Practices" and its sub-links + expect(page.get_by_role("link", name="Best Practices")).to_be_visible(timeout=10000) + # Test the individual sublinks under Best Practices page.get_by_role("link", name="Clear goals", exact=True).click() expect(page).to_have_title(re.compile("Establish clear goals")) @@ -30,35 +29,25 @@ def test_best_practices_side_menu(authenticated_page): expect(page).to_have_title(re.compile("Establish trust")) page.get_by_role("link", name="Write for action").click() - expect(page).to_have_title(re.compile("Write texts that provoke")) + expect(page).to_have_title(re.compile("Write for action")) page.get_by_role("link", name="Multiple languages").click() - expect(page).to_have_title(re.compile("Text in multiple languages")) + expect(page).to_have_title(re.compile("Multiple languages")) page.get_by_role("link", name="Benchmark performance").click() - expect(page).to_have_title(re.compile("Measuring performance with")) - - parent_link = page.get_by_role("link", name="Establish trust") - parent_link.hover() - - submenu_item = page.get_by_role("link", name=re.compile("Get the word out")) - submenu_item.click() - - expect(page).to_have_url(re.compile(r"#get-the-word-out")) - - anchor_target = page.locator("#get-the-word-out") - expect(anchor_target).to_be_visible() - anchor_target.click() + expect(page).to_have_title(re.compile("Benchmark performance")) def test_breadcrumbs_best_practices(authenticated_page): page = authenticated_page - page.goto(f"{E2E_TEST_URI}") - - page.wait_for_load_state("domcontentloaded") + page.goto(f"{E2E_TEST_URI}/guides/best-practices") + page.wait_for_load_state("networkidle") check_axe_report(page) - # Test Best Practices breadcrumbs + # Test breadcrumb navigation from a subpage page.get_by_role("link", name="Clear goals", exact=True).click() - page.locator("ol").get_by_role("link", name="Best Practices").click() + breadcrumb_link = page.locator("ol").get_by_role("link", name="Best Practices") + expect(breadcrumb_link).to_be_visible(timeout=10000) + breadcrumb_link.click() + expect(page).to_have_title(re.compile("Best Practices"))