diff --git a/application/routers/guidance_.py b/application/routers/guidance_.py index 0fa02a91..9b4a27ec 100644 --- a/application/routers/guidance_.py +++ b/application/routers/guidance_.py @@ -1,6 +1,7 @@ import os import logging from fastapi import APIRouter, Request +from starlette.responses import RedirectResponse from application.core.templates import templates router = APIRouter() @@ -66,10 +67,34 @@ def get_breadcrumbs(path): return crumb_dict +def handleGuidanceRedirects(url_path, redirects): + for redirect in redirects: + url_path_copy = url_path + if len(url_path_copy) > 0 and url_path_copy[-1] == "/": + url_path_copy = url_path_copy[:-1] + if redirect["from"] == url_path_copy: + return RedirectResponse(url=redirect["to"], status_code=301) + return False + + @router.get("/{url_path:path}") async def catch_all(request: Request, url_path: str): index_file = "index" + # Some redirects from old guidance + + # introduction + shouldRedirect = handleGuidanceRedirects( + url_path, + [ + {"from": "introduction", "to": "/guidance"}, + {"from": "how-to-provide-data", "to": "/guidance"}, + ], + ) + + if shouldRedirect: + return shouldRedirect + # if URL path in this route is empty if url_path == "": url_path += index_file diff --git a/application/templates/layouts/layout--guidance.html b/application/templates/layouts/layout--guidance.html index e414d880..8a95e27c 100644 --- a/application/templates/layouts/layout--guidance.html +++ b/application/templates/layouts/layout--guidance.html @@ -25,8 +25,8 @@

{{ pageData.pageTitle }}

{% block content_secondary %} {% set themes = [ - 'Guidance for local planning authorities', - 'Data specification guidance', + 'Publish planning and housing data for England', + 'Prepare data to the specifications', 'Other guidance' ] %} @@ -46,19 +46,7 @@

{{ pageData.pageTitle }}

'current': true if pageData.name == 'home' else false, }, { - 'text': 'Introduction', - 'href': sectionPath + 'introduction', - 'theme': themes[0], - 'current': true if pageData.name == 'introduction' else false, - }, - { - 'text': 'How to provide data', - 'theme': themes[0], - 'href': sectionPath + 'how-to-provide-data', - 'current': true if pageData.name == 'how-to-provide-data' else false, - }, - { - 'text': 'Data specifications guidance', + 'text': 'Prepare data to the specifications', 'theme': themes[0], 'href': sectionPath + 'specifications/', 'current': true if pageData.name == 'specifications' else false, @@ -95,7 +83,25 @@

{{ pageData.pageTitle }}

'current': true if pageData.name == 'tree-preservation-order' else false, } ] - } + }, + { + 'text': 'Publish data on your website', + 'theme': themes[0], + 'href': sectionPath + 'publish-data-on-your-website', + 'current': true if pageData.name == 'publish-data-on-your-website' else false, + }, + { + 'text': 'Keep your data up to date', + 'theme': themes[0], + 'href': sectionPath + 'keep-your-data-up-to-date', + 'current': true if pageData.name == 'keep-your-data-up-to-date' else false, + }, + { + 'text': 'Try our new check and publish service', + 'theme': themes[0], + 'href': sectionPath + 'try-check-publish-service', + 'current': true if pageData.name == 'try-check-publish-service' else false, + }, ] }) }} diff --git a/application/templates/pages/guidance/how-to-provide-data.md b/application/templates/pages/guidance/how-to-provide-data.md deleted file mode 100644 index 6276557f..00000000 --- a/application/templates/pages/guidance/how-to-provide-data.md +++ /dev/null @@ -1,101 +0,0 @@ -The Planning Data platform gathers data from local planning authorities (LPAs) across England. We do this in order to make the data more open and accessible, so better planning decisions are made. - -This guidance will take you through the process of publishing data that meets the technical specifications required by the Planning Data platform. - ---- - -## Steps - -1. [Prepare your data](#{{ 'Step 1: Prepare your data' | slugify }}) - -2. [Provide your documentation](#{{ 'Step 2: Provide your documentation' | slugify }}) - -3. [Create or update the webpage hosting your data](#{{ 'Step 3: Create or update the webpage hosting your data' | slugify }}) - -4. [Tell Planning Data where the webpage is](#{{ 'Step 4: Tell Planning Data where the webpage is' | slugify }}) - ---- - -Step 1: Prepare your data -------------------------------------- - -The data needed for the Digital Planning Services such as [PlanX](https://opendigitalplanning.org/services) are: - -- [Article 4 direction data](specifications/article-4-direction) -- [Conservation area data](specifications/conservation-area) -- [Listed building data](specifications/listed-building) -- [Tree preservation order data](specifications/tree-preservation-order) - -You may need to create more than one set of data for each subject. You'll find what to include in the [data specifications guidance](specifications/). - -We will accept data supplied as either: - -- CSV -- GeoJSON -- GML -- Geopackage - -These may be uploaded to a single URL, or served via an OGC WFS or ArcGIS API. - -It’s important that the data used in Digital Planning Services is as up to date as possible - whatever data you provide us with must be maintained and updated to reflect changes in your planning constraints. - ---- - -Step 2: Provide your documentation ----------------------------------- - -For most data subjects, you must also publish links to supporting documentation that gives evidence that the data is correct. - -See the [data specifications guidance](specifications/) for how to provide this for each different subject. - -We have preferred formats for each field. We automatically change the formats of some fields, for example the dates. - ---- - -Step 3: Create or update the webpage hosting your data ------------------------------------------------------- - -To complete step 3, you must be able to edit a webpage on your LPA's official website. This will probably have a URL ending in .gov.uk or .org. - -If you aren't able or authorised to do this, please speak to a person who updates your organisation's website. - -### Create a webpage - -Create a separate webpage for each dataset. This webpage must have a URL that does not change, so the Planning Data platform can keep collecting the data. - -If the URL does change, please email . - -You may want to use an alias to create a short URL that is easy to remember. For example: https://www.yourLPA.gov.uk/conservation-area-data - -### Describe the data - -Add a short description of the data on the page. We recommend including these descriptors as a minimum: - -**Summary** - -Briefly explain what the data is about. For example: - -This dataset shows the locations of conservation areas. Conservation areas are designated to safeguard areas of special architectural and historic interest, the character and appearance of which it is desirable to preserve or enhance. Within these areas special planning controls operate which need to be considered when undertaking development. - -**Licensing** - -State that the data is provided under the [Open Government Licence](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/). - -**Last updated** - -The date you are creating or updating the webpage. - -**Link to your data** - -Publish the links to your data on this page. Depending on what format you supply the data in, this could be the uploaded CSV, GeoJSON or GML files, or the link to the OGC WFS service. - ---- - -Step 4: Tell Planning Data where the webpage is ------------------------------------------------ - -If you are creating a new webpage, you must tell us the URL. Email the URL of the webpage containing your files to . - -If you have already told us, you can skip this step. The Planning Data platform will regularly collect data from the URL you have given us. - -If the URL ever changes, please tell us. diff --git a/application/templates/pages/guidance/index.html b/application/templates/pages/guidance/index.html index 10e99c7e..5aa11072 100644 --- a/application/templates/pages/guidance/index.html +++ b/application/templates/pages/guidance/index.html @@ -2,7 +2,7 @@ {%- from "components/back-button/macro.jinja" import dlBackButton %} {% set templateName = 'dl-info/guidance/index.html' %} {%- do pageData.update({ - 'pageTitle': 'Guidance for local planning authorities' + 'pageTitle': 'Publish planning and housing data for England' }) %} {% block breadcrumbs%} {{ dlBackButton({ @@ -11,24 +11,9 @@ {% endblock %} {% block content_primary %} -

- Introduction -

-

A brief overview of the process of providing data and the services this will contribute to.

+

+ Guidance for planning authorities adding data to the platform. +

-

- How to provide data -

-

Step-by-step instructions on how to publish your data.

- -

- Data specifications guidance -

-

What to include in each dataset.

- -

- Technical specifications -

-

Technical guidance on what to include in each dataset.

{#
#} {% endblock %} diff --git a/application/templates/pages/guidance/introduction.html b/application/templates/pages/guidance/introduction.html deleted file mode 100644 index 3a22fae7..00000000 --- a/application/templates/pages/guidance/introduction.html +++ /dev/null @@ -1,24 +0,0 @@ -{%- do pageData.update({ - 'pageTitle': 'Introduction for local planning authorities' -}) %} -{% set templateName = 'dl-info/guidance/introduction.html' %} -{% extends "layouts/layout--guidance.html" %} - -{%- from "components/back-button/macro.jinja" import dlBackButton %} -{% block breadcrumbs%} - {{ dlBackButton({ - "parentHref": '/guidance/' - })}} -{% endblock %} - -{% block content_primary %} - -

The Planning Data platform gathers data from local planning authorities (LPAs) across England. We do this in order to make the data more open and accessible, so better planning decisions are made.

- - {% set markdown_content %} - {%- include pageData.root_url + "introduction.md" with context -%} - {% endset %} - - {{ markdown_content | render_markdown }} - -{% endblock %} diff --git a/application/templates/pages/guidance/introduction.md b/application/templates/pages/guidance/introduction.md deleted file mode 100644 index 8f44adf4..00000000 --- a/application/templates/pages/guidance/introduction.md +++ /dev/null @@ -1,53 +0,0 @@ -How to provide data -------------------- - -This is a brief overview of our process for LPAs that are considering getting involved. We are currently only collecting data from select LPAs, but if you are interested in providing your data in future, please let us know at . - -The data we collect is likely to be held by your LPA already. However, it may need some work to get ready for publishing. This will likely mean: - -- digitising any data that is currently held in a paper format -- formatting your data so it meets our specifications - -Your data then needs to be published on a trustworthy website that is open to the public. Normally, it will be on your organisational website. - -The Planning Data platform will access that data and routinely collect anything that is new or has changed. - -Benefits to LPAs ----------------- - -Sharing data in this way will help planners and developers gain a better understanding of the potential for development in each participating authority. - -The data will be used in the [PlanX](https://opendigitalplanning.org/services) service. - -By publishing your data, you will be helping to create a national resource of open planning data. Other services are likely to be built using this resource in future. - -What data we collect --------------------- - -Planning Data collects [data about a range of subjects](https://www.digital-land.info/dataset). - -There are 4 main data subjects that are needed for the PlanX service: - -- [Article 4 direction data](specifications/article-4-direction) -- [Conservation area data](specifications/conservation-area) -- [Listed building data](specifications/listed-building) -- [Tree preservation order data](specifications/tree-preservation-order) - -We recommend publishing at least this data to benefit from PlanX and to allow developers to use it in your area. - -### Data formats - -Planning Data can take data in different formats, although some are preferred. Preferred formats will give the most accurate results. - -The [specifications guidance](specifications/) will tell you which formats to use for each dataset. - -### Updating your data - -If you think our version of your data is out of date or needs changing, you can email us at . - -Data accuracy -------------- - -The data collected is used to help make planning decisions, but it does not replace LPAs as a decision maker, or claim complete accuracy. People using these services will be made aware of this. - -With this in mind, incomplete or out of date data may still be worth publishing. We encourage you to provide as much data as you have, even if it is not perfect. This will enrich the service. diff --git a/application/templates/pages/guidance/how-to-provide-data.html b/application/templates/pages/guidance/keep-your-data-up-to-date.html similarity index 66% rename from application/templates/pages/guidance/how-to-provide-data.html rename to application/templates/pages/guidance/keep-your-data-up-to-date.html index 7950d91c..aa01217e 100644 --- a/application/templates/pages/guidance/how-to-provide-data.html +++ b/application/templates/pages/guidance/keep-your-data-up-to-date.html @@ -1,7 +1,7 @@ {%- do pageData.update({ - 'pageTitle': 'How to provide data' + 'pageTitle': 'Keep your data up to date' }) %} -{% set templateName = 'dl-info/guidance/how-to-provide-data.html' %} +{% set templateName = 'dl-info/guidance/keep-your-data-up-to-date.html' %} {% extends "layouts/layout--guidance.html" %} {%- from "components/back-button/macro.jinja" import dlBackButton %} @@ -14,7 +14,7 @@ {% block content_primary %} {% set markdown_content %} - {%- include pageData.root_url + "how-to-provide-data.md" with context -%} + {%- include pageData.root_url + "keep-your-data-up-to-date.md" with context -%} {% endset %} {{ markdown_content | render_markdown(govAttributes=True) }} diff --git a/application/templates/pages/guidance/keep-your-data-up-to-date.md b/application/templates/pages/guidance/keep-your-data-up-to-date.md new file mode 100644 index 00000000..bb61b62c --- /dev/null +++ b/application/templates/pages/guidance/keep-your-data-up-to-date.md @@ -0,0 +1,3 @@ +Whenever the data changes, update it in the data URL. + +Every day we collect the data from the URL you have shared. diff --git a/application/templates/pages/guidance/publish-data-on-your-website.html b/application/templates/pages/guidance/publish-data-on-your-website.html new file mode 100644 index 00000000..31c26e44 --- /dev/null +++ b/application/templates/pages/guidance/publish-data-on-your-website.html @@ -0,0 +1,22 @@ +{%- do pageData.update({ + 'pageTitle': 'Publish data on your website' +}) %} +{% set templateName = 'dl-info/guidance/publish-data-on-your-website.html' %} +{% extends "layouts/layout--guidance.html" %} +{%- from "components/back-button/macro.jinja" import dlBackButton %} + +{% block breadcrumbs%} + {{ dlBackButton({ + "parentHref": '/guidance/' + })}} +{% endblock %} + +{% block content_primary %} + + {% set markdown_content %} + {%- include pageData.root_url + "publish-data-on-your-website.md" with context -%} + {% endset %} + + {{ markdown_content | render_markdown(govAttributes=True) }} + +{% endblock %} diff --git a/application/templates/pages/guidance/publish-data-on-your-website.md b/application/templates/pages/guidance/publish-data-on-your-website.md new file mode 100644 index 00000000..3f4ea7fc --- /dev/null +++ b/application/templates/pages/guidance/publish-data-on-your-website.md @@ -0,0 +1,44 @@ +Your data must be on a URL the public can access. We collect the latest data from there every day. + +You must link to that URL from a webpage about the data. This needs to be on your official planning authority website, usually ending in gov.uk. + +Why publish on your website +---------------- + +Your planning authority will always be the source of truth about your data. + +Create your webpage +-------------------- + +The webpage must include, for each dataset: + +- the link to the data URL +- a summary of what the data is about +- a statement that the data is provided under the [Open Government Licence](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/) + + +### Example webpage + +#### About the data + +This dataset shows the locations of conservation areas. Conservation areas are designated to safeguard areas of special architectural and historic interest, the character and appearance of which it is desirable to preserve and enhance. + +#### Data + +[Conservation areas (CSV, 188KB)](https://publish.planning.data.gov.uk/public/downloadable/conservationArea.csv) + +#### Licensing + +The data is provided under the [Open Government Licence](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/). + +Tell us about the webpage +------------- + +Send an email to [digitalland@levellingup.gov.uk](mailto:digitalland@levellingup.gov.uk). + +The email must include: + +- your full name +- the name of your planning authority +- a link to the webpage on your official planning authority website +- a link to the data URL diff --git a/application/templates/pages/guidance/specifications/article-4-direction.md b/application/templates/pages/guidance/specifications/article-4-direction.md index 67e2616c..e53aee57 100644 --- a/application/templates/pages/guidance/specifications/article-4-direction.md +++ b/application/templates/pages/guidance/specifications/article-4-direction.md @@ -1,6 +1,7 @@ -Version: 1.2.2 +**Version:** 1.2.2
+**Published:** 11 September 2023 -Published: 11 September 2023 +This is guidance on how to meet the [article 4 direction technical specification](https://digital-land.github.io/specification/specification/article-4-direction/). --- @@ -19,7 +20,7 @@ You can provide data in one of these formats: - GML - Geopackage -For more information, see [how to provide your data](../how-to-provide-data). +These may be uploaded to a single URL, or served via an OGC WFS or ArcGIS API. --- @@ -184,7 +185,3 @@ If the entity has never been updated, enter the same date as start-date. Write in `YYYY-MM-DD` format. Example: `2022-12-20` - ---- - -Go to [how to provide your data](../how-to-provide-data). diff --git a/application/templates/pages/guidance/specifications/conservation-area.md b/application/templates/pages/guidance/specifications/conservation-area.md index b34bf314..67a7baae 100644 --- a/application/templates/pages/guidance/specifications/conservation-area.md +++ b/application/templates/pages/guidance/specifications/conservation-area.md @@ -1,6 +1,7 @@ -Version: 1.2.2 +**Version:** 1.2.2
+**Published:** 8 September 2023 -Published: 8 September 2023 +This is guidance on how to meet the [conservation area technical specification](https://digital-land.github.io/specification/specification/conservation-area/). --- @@ -19,7 +20,7 @@ You can provide data in one of these formats: - GML - Geopackage -For more information, see [how to provide your data](../how-to-provide-data). +These may be uploaded to a single URL, or served via an OGC WFS or ArcGIS API. Conservation area dataset ------------------------- @@ -166,7 +167,3 @@ If the entity has never been updated, enter the same date as start-date. Write in `YYYY-MM-DD` format. Example: `1984-03-28` - ---- - -Go to [how to provide your data](../how-to-provide-data). diff --git a/application/templates/pages/guidance/specifications/design-code.md b/application/templates/pages/guidance/specifications/design-code.md index 93fb0dbc..99ad67aa 100644 --- a/application/templates/pages/guidance/specifications/design-code.md +++ b/application/templates/pages/guidance/specifications/design-code.md @@ -15,7 +15,7 @@ You can provide data in one of these formats: - GML - Geopackage -For more information, see [how to provide your data](../how-to-provide-data). +These may be uploaded to a single URL, or served via an OGC WFS or ArcGIS API. Design code dataset ------------------- @@ -149,7 +149,3 @@ Example: `1999-01-20` The date this dataset was created or last updated, written in `YYYY-MM-DD` format. Example: `2022-12-20` - ---- - -Go to [how to provide your data](../how-to-provide-data). diff --git a/application/templates/pages/guidance/specifications/index.html b/application/templates/pages/guidance/specifications/index.html index 4812533a..d6aecca6 100644 --- a/application/templates/pages/guidance/specifications/index.html +++ b/application/templates/pages/guidance/specifications/index.html @@ -1,5 +1,5 @@ -{%- do pageData.update({ - 'pageTitle': 'Data specifications for local planning authorities' + {%- do pageData.update({ + 'pageTitle': 'Prepare data to the specifications' }) %} {% set templateName = 'dl-info/guidance/specification/index.html' %} {% extends "layouts/layout--guidance.html" %} @@ -13,15 +13,37 @@ {% block content_primary %} -

Guidance about how to collate each dataset including examples of data for each of the fields (rows).

+

Before you publish data on your website, you need to make sure it complies with our specifications.

-
    -
  • Article 4 direction data
  • -
  • Brownfield land data
  • -
  • Conservation area data
  • -
  • Developer contributions data
  • -
  • Listed building data
  • -
  • Tree preservation order data
  • +

    We understand you might not have all the fields available. You can start with what you have now. You’ll need to fill in the gaps later.

    + +

    + Expected now +

    + +

    We expect you to prepare and publish data for:

    + + +

    + Expected soon +

    + +

    We’ll soon expect you to prepare and publish data for:

    + +

    Or you can provide this data now if you have published it.

    + + +
    + If you're funded through the Planning Software Improvement Fund, we expect you to follow all the specifications.

    What we expect from funded planning authorities +
    + {% endblock %} diff --git a/application/templates/pages/guidance/specifications/listed-building.md b/application/templates/pages/guidance/specifications/listed-building.md index 4704fba3..a1d5beea 100644 --- a/application/templates/pages/guidance/specifications/listed-building.md +++ b/application/templates/pages/guidance/specifications/listed-building.md @@ -1,6 +1,7 @@ -Version: 1.1.1 +**Version:** 1.1.1
    +**Published:** 9 June 2023 -Published: 9 June 2023 +This is guidance on how to meet the [listed building outline technical specification](https://digital-land.github.io/specification/specification/listed-building/). --- @@ -16,7 +17,7 @@ You can provide data in one of these formats: - GML - Geopackage -For more information, see [how to provide your data](../how-to-provide-data). +These may be uploaded to a single URL, or served via an OGC WFS or ArcGIS API. Listed buildings outline dataset ------------------------ @@ -93,7 +94,3 @@ If the entity has never been updated, enter the same date as start-date. Write in `YYYY-MM-DD` format. Example: `2022-12-20` - ---- - -Go to [how to provide your data](../how-to-provide-data). diff --git a/application/templates/pages/guidance/specifications/tree-preservation-order.md b/application/templates/pages/guidance/specifications/tree-preservation-order.md index 586b8ebf..20383e6f 100644 --- a/application/templates/pages/guidance/specifications/tree-preservation-order.md +++ b/application/templates/pages/guidance/specifications/tree-preservation-order.md @@ -1,6 +1,7 @@ -Version: 1.2.2 +**Version:** 1.2.2
    +**Published:** 8 September 2023 -Published: 8 September 2023 +This is guidance on how to meet the [tree preservation order technical specification](https://digital-land.github.io/specification/specification/tree-preservation-order/) --- @@ -21,7 +22,7 @@ You can provide the zone and individual tree data in one of these formats: - GML - Geopackage -For more information, see [how to provide your data](../how-to-provide-data). +These may be uploaded to a single URL, or served via an OGC WFS or ArcGIS API. Tree preservation order dataset ------------------------------- @@ -286,7 +287,3 @@ If the entity has never been updated, enter the same date as start-date. Write in `YYYY-MM-DD` format. Example: `2022-12-20` - ---- - -Go to [how to provide your data](../how-to-provide-data). diff --git a/application/templates/pages/guidance/try-check-publish-service.html b/application/templates/pages/guidance/try-check-publish-service.html new file mode 100644 index 00000000..023e1a79 --- /dev/null +++ b/application/templates/pages/guidance/try-check-publish-service.html @@ -0,0 +1,22 @@ +{%- do pageData.update({ + 'pageTitle': 'Try our new check and publish service' +}) %} +{% set templateName = 'dl-info/guidance/try-check-publish-service.html' %} +{% extends "layouts/layout--guidance.html" %} +{%- from "components/back-button/macro.jinja" import dlBackButton %} + +{% block breadcrumbs%} + {{ dlBackButton({ + "parentHref": '/guidance/' + })}} +{% endblock %} + +{% block content_primary %} + + {% set markdown_content %} + {%- include pageData.root_url + "try-check-publish-service.md" with context -%} + {% endset %} + + {{ markdown_content | render_markdown(govAttributes=True) }} + +{% endblock %} diff --git a/application/templates/pages/guidance/try-check-publish-service.md b/application/templates/pages/guidance/try-check-publish-service.md new file mode 100644 index 00000000..62f9cfb7 --- /dev/null +++ b/application/templates/pages/guidance/try-check-publish-service.md @@ -0,0 +1,10 @@ +We have an online service that checks if some of your data meets the standard and helps you publish it. + +For now the service supports: + +- [article 4 direction area dataset](https://www.planning.data.gov.uk/guidance/specifications/article-4-direction#article-4-direction-area) +- [conservation area dataset](https://www.planning.data.gov.uk/guidance/specifications/conservation-area#conservation-area-dataset) +- [listed building outline dataset](https://www.planning.data.gov.uk/guidance/specifications/listed-building#listed-buildings-outline-dataset) +- [tree preservation zone dataset](https://www.planning.data.gov.uk/guidance/specifications/tree-preservation-order#tree-preservation-zone-dataset) + +[Try the publish planning and housing data service](https://publish.planning.data.gov.uk/) diff --git a/tests/acceptance/test_guidance.py b/tests/acceptance/test_guidance.py index 39874843..6ef8a678 100644 --- a/tests/acceptance/test_guidance.py +++ b/tests/acceptance/test_guidance.py @@ -3,36 +3,46 @@ def test_guidance_pages_load_ok(server_url, page): assert response.ok heading = page.get_by_role( "heading", - name="Guidance for local planning authorities", + name="Publish planning and housing data for England", ).last assert heading.is_visible() page.get_by_label("Guidance navigation").get_by_role( - "link", name="Introduction" + "link", name="Prepare data to the specifications" ).click() assert response.ok heading = page.get_by_role( "heading", - name="Introduction for local planning authorities", + name="Prepare data to the specifications", ) assert heading.is_visible() page.get_by_label("Guidance navigation").get_by_role( - "link", name="How to provide data" + "link", name="Publish data on your website" ).click() assert response.ok heading = page.get_by_role( "heading", - name="How to provide data", + name="Publish data on your website", ) assert heading.is_visible() page.get_by_label("Guidance navigation").get_by_role( - "link", name="Data specifications guidance" + "link", name="Keep your data up to date" ).click() assert response.ok heading = page.get_by_role( "heading", - name="Data specifications for local planning authorities", + name="Keep your data up to date", + ) + assert heading.is_visible() + + page.get_by_label("Guidance navigation").get_by_role( + "link", name="Try our new check and publish service" + ).click() + assert response.ok + heading = page.get_by_role( + "heading", + name="Try our new check and publish service", ) assert heading.is_visible()