From 870a604a7db1b4fa9597a574b76429757a0e808c Mon Sep 17 00:00:00 2001 From: davisagli Date: Wed, 22 Jan 2025 08:00:26 -0800 Subject: [PATCH] [fc] Repository: plone.volto Branch: refs/heads/main Date: 2025-01-20T22:33:35+01:00 Author: Maurits van Rees (mauritsvanrees) Commit: https://github.com/plone/plone.volto/commit/31a419d8f00a7604e2ae753d8dc588bd7f455686 Fix DeprecationWarnings. Files changed: A news/4090.bugfix M src/plone/volto/behaviors/preview_link.py M src/plone/volto/browser/breadcrumbs.py M src/plone/volto/browser/navigation.py M src/plone/volto/coresandbox/example.py M src/plone/volto/profiles/default/registry.xml M src/plone/volto/testing.py Repository: plone.volto Branch: refs/heads/main Date: 2025-01-22T10:41:22+01:00 Author: Maurits van Rees (mauritsvanrees) Commit: https://github.com/plone/plone.volto/commit/995899cddc04e4aac7dffc6c579866a9b91948df Merge branch 'main' into maurits-warnings Files changed: A news/181.bugfix M src/plone/volto/summary.py Repository: plone.volto Branch: refs/heads/main Date: 2025-01-22T08:00:26-08:00 Author: David Glick (davisagli) Commit: https://github.com/plone/plone.volto/commit/17e796045e3efaf4753f0043788474a8b2303dfd Merge pull request #179 from plone/maurits-warnings Fix DeprecationWarnings. Files changed: A news/4090.bugfix M src/plone/volto/behaviors/preview_link.py M src/plone/volto/browser/breadcrumbs.py M src/plone/volto/browser/navigation.py M src/plone/volto/coresandbox/example.py M src/plone/volto/profiles/default/registry.xml M src/plone/volto/testing.py --- last_commit.txt | 73 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 53 insertions(+), 20 deletions(-) diff --git a/last_commit.txt b/last_commit.txt index 0dd93b8e24..0a07a44f6e 100644 --- a/last_commit.txt +++ b/last_commit.txt @@ -1,27 +1,60 @@ -Repository: plone.restapi +Repository: plone.volto Branch: refs/heads/main -Date: 2025-01-21T19:14:39-08:00 -Author: Mauro Amico (mamico) -Commit: https://github.com/plone/plone.restapi/commit/5a120c416db8bbd6168fc8c10fdf1ef75e5eac62 - -fix: contextnavigation when a file has an unknown type (#1864) - -* fix: contextnavigation when a file has an unknown type - -* changelog - -* Update news/1864.bugfix - ---------- - -Co-authored-by: David Glick <david@glicksoftware.com> +Date: 2025-01-20T22:33:35+01:00 +Author: Maurits van Rees (mauritsvanrees) +Commit: https://github.com/plone/plone.volto/commit/31a419d8f00a7604e2ae753d8dc588bd7f455686 + +Fix DeprecationWarnings. + +Files changed: +A news/4090.bugfix +M src/plone/volto/behaviors/preview_link.py +M src/plone/volto/browser/breadcrumbs.py +M src/plone/volto/browser/navigation.py +M src/plone/volto/coresandbox/example.py +M src/plone/volto/profiles/default/registry.xml +M src/plone/volto/testing.py + +b'diff --git a/news/4090.bugfix b/news/4090.bugfix\nnew file mode 100644\nindex 0000000..8528aef\n--- /dev/null\n+++ b/news/4090.bugfix\n@@ -0,0 +1 @@\n+Fix DeprecationWarnings. [maurits]\ndiff --git a/src/plone/volto/behaviors/preview_link.py b/src/plone/volto/behaviors/preview_link.py\nindex 060d03f..d207c13 100644\n--- a/src/plone/volto/behaviors/preview_link.py\n+++ b/src/plone/volto/behaviors/preview_link.py\n@@ -1,5 +1,5 @@\n from plone import api\n-from plone.app.z3cform.widget import RelatedItemsFieldWidget\n+from plone.app.z3cform.widgets.relateditems import RelatedItemsFieldWidget\n from plone.autoform import directives\n from plone.autoform.interfaces import IFormFieldProvider\n from plone.base.interfaces import IImageScalesFieldAdapter\ndiff --git a/src/plone/volto/browser/breadcrumbs.py b/src/plone/volto/browser/breadcrumbs.py\nindex 9799865..690b5a7 100644\n--- a/src/plone/volto/browser/breadcrumbs.py\n+++ b/src/plone/volto/browser/breadcrumbs.py\n@@ -1,10 +1,10 @@\n from Acquisition import aq_base\n from Acquisition import aq_inner\n from Acquisition import aq_parent\n-from plone.app.layout.navigation.interfaces import INavigationRoot\n-from plone.app.layout.navigation.root import getNavigationRoot\n from plone.base.defaultpage import check_default_page_via_view\n from plone.base.interfaces import IHideFromBreadcrumbs\n+from plone.base.interfaces import INavigationRoot\n+from plone.base.navigationroot import get_navigation_root\n from plone.base.utils import pretty_title_or_id\n from Products.CMFPlone.browser.interfaces import INavigationBreadcrumbs\n from Products.CMFPlone.browser.navigation import get_view_url\n@@ -42,7 +42,7 @@ def breadcrumbs(self):\n if IHideFromBreadcrumbs.providedBy(context):\n return base\n \n- rootPath = getNavigationRoot(context)\n+ rootPath = get_navigation_root(context)\n itemPath = "/".join(context.getPhysicalPath())\n \n # don\'t show default pages in breadcrumbs or pages above the navigation\ndiff --git a/src/plone/volto/browser/navigation.py b/src/plone/volto/browser/navigation.py\nindex 66941a8..a0c6bf8 100644\n--- a/src/plone/volto/browser/navigation.py\n+++ b/src/plone/volto/browser/navigation.py\n@@ -1,8 +1,8 @@\n from Acquisition import aq_inner\n from Missing import Missing\n-from plone.app.layout.navigation.root import getNavigationRoot\n from plone.base import utils\n from plone.base.interfaces import INavigationSchema\n+from plone.base.navigationroot import get_navigation_root\n from plone.registry.interfaces import IRegistry\n from Products.CMFCore.utils import getToolByName\n from Products.CMFPlone.browser.interfaces import INavigationTabs\n@@ -28,7 +28,7 @@ def _getNavQuery(self):\n else:\n query = {}\n \n- query["path"] = {"query": getNavigationRoot(self.context), "depth": 1}\n+ query["path"] = {"query": get_navigation_root(self.context), "depth": 1}\n query["portal_type"] = [t for t in navigation_settings.displayed_types]\n query["sort_on"] = navigation_settings.sort_tabs_on\n if navigation_settings.sort_tabs_reversed:\ndiff --git a/src/plone/volto/coresandbox/example.py b/src/plone/volto/coresandbox/example.py\nindex 535ac7e..675b00f 100644\n--- a/src/plone/volto/coresandbox/example.py\n+++ b/src/plone/volto/coresandbox/example.py\n@@ -1,9 +1,9 @@\n from plone.app.textfield import RichText\n from plone.app.vocabularies.catalog import CatalogSource\n from plone.app.vocabularies.catalog import StaticCatalogVocabulary\n-from plone.app.z3cform.widget import AjaxSelectFieldWidget\n-from plone.app.z3cform.widget import RelatedItemsFieldWidget\n-from plone.app.z3cform.widget import SelectFieldWidget\n+from plone.app.z3cform.widgets.relateditems import RelatedItemsFieldWidget\n+from plone.app.z3cform.widgets.select import AjaxSelectFieldWidget\n+from plone.app.z3cform.widgets.select import Select2FieldWidget\n from plone.autoform import directives\n from plone.dexterity.content import Container\n from plone.namedfile.field import NamedBlobFile\n@@ -183,7 +183,7 @@ class IExample(model.Schema):\n required=False,\n )\n \n- directives.widget(choice_field_select=SelectFieldWidget)\n+ directives.widget(choice_field_select=Select2FieldWidget)\n choice_field_select = schema.Choice(\n title="Choicefield with select2 widget",\n description="zope.schema.Choice",\n@@ -214,7 +214,7 @@ class IExample(model.Schema):\n default=[],\n )\n \n- directives.widget(list_field_select=SelectFieldWidget)\n+ directives.widget(list_field_select=Select2FieldWidget)\n list_field_select = schema.List(\n title="List field with select widget",\n description="zope.schema.List",\n@@ -437,7 +437,7 @@ class IExample(model.Schema):\n )\n directives.widget(\n "relationchoice_field_select",\n- SelectFieldWidget,\n+ Select2FieldWidget,\n )\n \n relationchoice_field_radio = RelationChoice(\n@@ -465,7 +465,7 @@ class IExample(model.Schema):\n )\n directives.widget(\n "relationlist_field_select",\n- SelectFieldWidget,\n+ Select2FieldWidget,\n pattern_options={\n "closeOnSelect": False, # Select2 option to leave dropdown open for multiple selection\n },\n@@ -620,7 +620,7 @@ class IExample(model.Schema):\n )\n directives.widget(\n "uuid_choice_field_select",\n- SelectFieldWidget,\n+ Select2FieldWidget,\n )\n \n uuid_choice_field_radio = schema.Choice(\n@@ -648,7 +648,7 @@ class IExample(model.Schema):\n )\n directives.widget(\n "uuid_list_field_select",\n- SelectFieldWidget,\n+ Select2FieldWidget,\n pattern_options={\n "closeOnSelect": False, # Select2 option to leave dropdown open for multiple selection\n },\ndiff --git a/src/plone/volto/profiles/default/registry.xml b/src/plone/volto/profiles/default/registry.xml\nindex aa8d206..1a97e36 100644\n--- a/src/plone/volto/profiles/default/registry.xml\n+++ b/src/plone/volto/profiles/default/registry.xml\n@@ -2,7 +2,7 @@\n \n \n \n False\n@@ -14,7 +14,7 @@\n \n \n \n@@ -23,7 +23,7 @@\n \n \n \ndiff --git a/src/plone/volto/testing.py b/src/plone/volto/testing.py\nindex d5f4304..2fb6677 100644\n--- a/src/plone/volto/testing.py\n+++ b/src/plone/volto/testing.py\n@@ -7,7 +7,7 @@\n from plone.app.testing import setRoles\n from plone.app.testing import TEST_USER_ID\n from plone.distribution.testing.layer import PloneDistributionFixture\n-from plone.testing import z2\n+from plone.testing import zope\n \n import plone.app.caching # noQA\n import plone.app.discussion # noQA\n@@ -62,13 +62,17 @@ class PloneVoltoCoreLayer(PloneSandboxLayer):\n \n \n PLONE_VOLTO_CORE_FUNCTIONAL_TESTING = FunctionalTesting(\n- bases=(PLONE_VOLTO_CORE_FIXTURE, z2.ZSERVER_FIXTURE),\n+ bases=(PLONE_VOLTO_CORE_FIXTURE, zope.WSGI_SERVER_FIXTURE),\n name="PloneVoltoCoreLayer:FunctionalTesting",\n )\n \n \n PLONE_VOLTO_CORE_ACCEPTANCE_TESTING = FunctionalTesting(\n- bases=(PLONE_VOLTO_CORE_FIXTURE, REMOTE_LIBRARY_BUNDLE_FIXTURE, z2.ZSERVER_FIXTURE),\n+ bases=(\n+ PLONE_VOLTO_CORE_FIXTURE,\n+ REMOTE_LIBRARY_BUNDLE_FIXTURE,\n+ zope.WSGI_SERVER_FIXTURE,\n+ ),\n name="PloneVoltoCoreLayer:AcceptanceTesting",\n )\n \n@@ -108,7 +112,7 @@ def setUpPloneSite(self, portal):\n \n \n PLONE_VOLTO_CORESANDBOX_FUNCTIONAL_TESTING = FunctionalTesting(\n- bases=(PLONE_VOLTO_CORESANDBOX_FIXTURE, z2.ZSERVER_FIXTURE),\n+ bases=(PLONE_VOLTO_CORESANDBOX_FIXTURE, zope.WSGI_SERVER_FIXTURE),\n name="PloneVoltoCoreSandboxLayer:FunctionalTesting",\n )\n \n@@ -117,7 +121,7 @@ def setUpPloneSite(self, portal):\n bases=(\n PLONE_VOLTO_CORESANDBOX_FIXTURE,\n REMOTE_LIBRARY_BUNDLE_FIXTURE,\n- z2.ZSERVER_FIXTURE,\n+ zope.WSGI_SERVER_FIXTURE,\n ),\n name="PloneVoltoCoreSandboxLayer:AcceptanceTesting",\n )\n@@ -144,6 +148,6 @@ def setUpPloneSite(self, portal):\n \n \n PLONE_VOLTO_MIGRATION_FUNCTIONAL_TESTING = FunctionalTesting(\n- bases=(PLONE_VOLTO_MIGRATION_FIXTURE, z2.ZSERVER_FIXTURE),\n+ bases=(PLONE_VOLTO_MIGRATION_FIXTURE, zope.WSGI_SERVER_FIXTURE),\n name="PloneVoltoMigrationLayer:FunctionalTesting",\n )\n' + +Repository: plone.volto + + +Branch: refs/heads/main +Date: 2025-01-22T10:41:22+01:00 +Author: Maurits van Rees (mauritsvanrees) +Commit: https://github.com/plone/plone.volto/commit/995899cddc04e4aac7dffc6c579866a9b91948df + +Merge branch 'main' into maurits-warnings + +Files changed: +A news/181.bugfix +M src/plone/volto/summary.py + +b'diff --git a/news/181.bugfix b/news/181.bugfix\nnew file mode 100644\nindex 0000000..70193a8\n--- /dev/null\n+++ b/news/181.bugfix\n@@ -0,0 +1 @@\n+Add nav_title and head_title to the default summary serializer metadata fields. @davisagli\ndiff --git a/src/plone/volto/summary.py b/src/plone/volto/summary.py\nindex b2e5dda..0a71a45 100644\n--- a/src/plone/volto/summary.py\n+++ b/src/plone/volto/summary.py\n@@ -6,6 +6,8 @@\n class JSONSummarySerializerMetadata:\n def default_metadata_fields(self):\n return {\n+ "head_title",\n "image_field",\n "image_scales",\n+ "nav_title",\n }\n' + +Repository: plone.volto + + +Branch: refs/heads/main +Date: 2025-01-22T08:00:26-08:00 +Author: David Glick (davisagli) +Commit: https://github.com/plone/plone.volto/commit/17e796045e3efaf4753f0043788474a8b2303dfd + +Merge pull request #179 from plone/maurits-warnings + +Fix DeprecationWarnings. Files changed: -A news/1864.bugfix -M src/plone/restapi/services/contextnavigation/get.py -M src/plone/restapi/tests/test_services_contextnavigation.py +A news/4090.bugfix +M src/plone/volto/behaviors/preview_link.py +M src/plone/volto/browser/breadcrumbs.py +M src/plone/volto/browser/navigation.py +M src/plone/volto/coresandbox/example.py +M src/plone/volto/profiles/default/registry.xml +M src/plone/volto/testing.py -b'diff --git a/news/1864.bugfix b/news/1864.bugfix\nnew file mode 100644\nindex 0000000000..9e63a64abd\n--- /dev/null\n+++ b/news/1864.bugfix\n@@ -0,0 +1 @@\n+In the `@contextnavigation` endpoint, return `"icon": null` for Files with a mimetype not found in the `content_type_registry`, instead of raising `TypeError`. @mamico\ndiff --git a/src/plone/restapi/services/contextnavigation/get.py b/src/plone/restapi/services/contextnavigation/get.py\nindex 0fe0d7a054..3f22602222 100644\n--- a/src/plone/restapi/services/contextnavigation/get.py\n+++ b/src/plone/restapi/services/contextnavigation/get.py\n@@ -357,7 +357,8 @@ def getMimeTypeIcon(self, node):\n mtt = getToolByName(self.context, "mimetypes_registry")\n if fileo.contentType:\n ctype = mtt.lookup(fileo.contentType)\n- return os.path.join(portal_url, guess_icon_path(ctype[0]))\n+ if ctype:\n+ return os.path.join(portal_url, guess_icon_path(ctype[0]))\n except AttributeError:\n pass\n \ndiff --git a/src/plone/restapi/tests/test_services_contextnavigation.py b/src/plone/restapi/tests/test_services_contextnavigation.py\nindex 9f8405e95a..05fe3c037e 100644\n--- a/src/plone/restapi/tests/test_services_contextnavigation.py\n+++ b/src/plone/restapi/tests/test_services_contextnavigation.py\n@@ -3,6 +3,7 @@\n from plone.app.testing import SITE_OWNER_NAME\n from plone.app.testing import SITE_OWNER_PASSWORD\n from plone.app.testing import TEST_USER_ID\n+from plone.namedfile.file import NamedBlobFile\n from plone.registry.interfaces import IRegistry\n from plone.restapi.services.contextnavigation.get import ContextNavigation\n from plone.restapi.testing import PLONE_RESTAPI_DX_FUNCTIONAL_TESTING\n@@ -99,6 +100,9 @@ def populateSite(self):\n folder2.invokeFactory("Document", "doc22")\n folder2.invokeFactory("Document", "doc23")\n folder2.invokeFactory("File", "file21")\n+ folder2.file21.file = NamedBlobFile(\n+ data="Hello World", contentType="text/plain", filename="file.txt"\n+ )\n folder2.invokeFactory("Folder", "folder21")\n folder21 = getattr(folder2, "folder21")\n folder21.invokeFactory("Document", "doc211")\n@@ -996,3 +1000,28 @@ def testContextNavigation(self):\n "/plone/folder1/doc11",\n )\n )\n+\n+ def testIcon(self):\n+ view = self.renderer(\n+ self.portal.folder2.file21,\n+ opts(root_path="/folder2", topLevel=0),\n+ )\n+ tree = view.getNavTree()\n+ self.assertTrue(tree)\n+ self.assertEqual(\n+ tree["items"][0]["icon"],\n+ "/plone/++resource++mimetype.icons/txt.png",\n+ )\n+\n+ def testIconNotRegisteredMimetype(self):\n+ self.portal.folder2.file21.file.contentType = "plain/x-text"\n+ view = self.renderer(\n+ self.portal.folder2.file21,\n+ opts(root_path="/folder2", topLevel=0),\n+ )\n+ tree = view.getNavTree()\n+ self.assertTrue(tree)\n+ self.assertEqual(\n+ tree["items"][0]["icon"],\n+ None,\n+ )\n' +b'diff --git a/news/4090.bugfix b/news/4090.bugfix\nnew file mode 100644\nindex 0000000..8528aef\n--- /dev/null\n+++ b/news/4090.bugfix\n@@ -0,0 +1 @@\n+Fix DeprecationWarnings. [maurits]\ndiff --git a/src/plone/volto/behaviors/preview_link.py b/src/plone/volto/behaviors/preview_link.py\nindex 060d03f..d207c13 100644\n--- a/src/plone/volto/behaviors/preview_link.py\n+++ b/src/plone/volto/behaviors/preview_link.py\n@@ -1,5 +1,5 @@\n from plone import api\n-from plone.app.z3cform.widget import RelatedItemsFieldWidget\n+from plone.app.z3cform.widgets.relateditems import RelatedItemsFieldWidget\n from plone.autoform import directives\n from plone.autoform.interfaces import IFormFieldProvider\n from plone.base.interfaces import IImageScalesFieldAdapter\ndiff --git a/src/plone/volto/browser/breadcrumbs.py b/src/plone/volto/browser/breadcrumbs.py\nindex 9799865..690b5a7 100644\n--- a/src/plone/volto/browser/breadcrumbs.py\n+++ b/src/plone/volto/browser/breadcrumbs.py\n@@ -1,10 +1,10 @@\n from Acquisition import aq_base\n from Acquisition import aq_inner\n from Acquisition import aq_parent\n-from plone.app.layout.navigation.interfaces import INavigationRoot\n-from plone.app.layout.navigation.root import getNavigationRoot\n from plone.base.defaultpage import check_default_page_via_view\n from plone.base.interfaces import IHideFromBreadcrumbs\n+from plone.base.interfaces import INavigationRoot\n+from plone.base.navigationroot import get_navigation_root\n from plone.base.utils import pretty_title_or_id\n from Products.CMFPlone.browser.interfaces import INavigationBreadcrumbs\n from Products.CMFPlone.browser.navigation import get_view_url\n@@ -42,7 +42,7 @@ def breadcrumbs(self):\n if IHideFromBreadcrumbs.providedBy(context):\n return base\n \n- rootPath = getNavigationRoot(context)\n+ rootPath = get_navigation_root(context)\n itemPath = "/".join(context.getPhysicalPath())\n \n # don\'t show default pages in breadcrumbs or pages above the navigation\ndiff --git a/src/plone/volto/browser/navigation.py b/src/plone/volto/browser/navigation.py\nindex 66941a8..a0c6bf8 100644\n--- a/src/plone/volto/browser/navigation.py\n+++ b/src/plone/volto/browser/navigation.py\n@@ -1,8 +1,8 @@\n from Acquisition import aq_inner\n from Missing import Missing\n-from plone.app.layout.navigation.root import getNavigationRoot\n from plone.base import utils\n from plone.base.interfaces import INavigationSchema\n+from plone.base.navigationroot import get_navigation_root\n from plone.registry.interfaces import IRegistry\n from Products.CMFCore.utils import getToolByName\n from Products.CMFPlone.browser.interfaces import INavigationTabs\n@@ -28,7 +28,7 @@ def _getNavQuery(self):\n else:\n query = {}\n \n- query["path"] = {"query": getNavigationRoot(self.context), "depth": 1}\n+ query["path"] = {"query": get_navigation_root(self.context), "depth": 1}\n query["portal_type"] = [t for t in navigation_settings.displayed_types]\n query["sort_on"] = navigation_settings.sort_tabs_on\n if navigation_settings.sort_tabs_reversed:\ndiff --git a/src/plone/volto/coresandbox/example.py b/src/plone/volto/coresandbox/example.py\nindex 535ac7e..675b00f 100644\n--- a/src/plone/volto/coresandbox/example.py\n+++ b/src/plone/volto/coresandbox/example.py\n@@ -1,9 +1,9 @@\n from plone.app.textfield import RichText\n from plone.app.vocabularies.catalog import CatalogSource\n from plone.app.vocabularies.catalog import StaticCatalogVocabulary\n-from plone.app.z3cform.widget import AjaxSelectFieldWidget\n-from plone.app.z3cform.widget import RelatedItemsFieldWidget\n-from plone.app.z3cform.widget import SelectFieldWidget\n+from plone.app.z3cform.widgets.relateditems import RelatedItemsFieldWidget\n+from plone.app.z3cform.widgets.select import AjaxSelectFieldWidget\n+from plone.app.z3cform.widgets.select import Select2FieldWidget\n from plone.autoform import directives\n from plone.dexterity.content import Container\n from plone.namedfile.field import NamedBlobFile\n@@ -183,7 +183,7 @@ class IExample(model.Schema):\n required=False,\n )\n \n- directives.widget(choice_field_select=SelectFieldWidget)\n+ directives.widget(choice_field_select=Select2FieldWidget)\n choice_field_select = schema.Choice(\n title="Choicefield with select2 widget",\n description="zope.schema.Choice",\n@@ -214,7 +214,7 @@ class IExample(model.Schema):\n default=[],\n )\n \n- directives.widget(list_field_select=SelectFieldWidget)\n+ directives.widget(list_field_select=Select2FieldWidget)\n list_field_select = schema.List(\n title="List field with select widget",\n description="zope.schema.List",\n@@ -437,7 +437,7 @@ class IExample(model.Schema):\n )\n directives.widget(\n "relationchoice_field_select",\n- SelectFieldWidget,\n+ Select2FieldWidget,\n )\n \n relationchoice_field_radio = RelationChoice(\n@@ -465,7 +465,7 @@ class IExample(model.Schema):\n )\n directives.widget(\n "relationlist_field_select",\n- SelectFieldWidget,\n+ Select2FieldWidget,\n pattern_options={\n "closeOnSelect": False, # Select2 option to leave dropdown open for multiple selection\n },\n@@ -620,7 +620,7 @@ class IExample(model.Schema):\n )\n directives.widget(\n "uuid_choice_field_select",\n- SelectFieldWidget,\n+ Select2FieldWidget,\n )\n \n uuid_choice_field_radio = schema.Choice(\n@@ -648,7 +648,7 @@ class IExample(model.Schema):\n )\n directives.widget(\n "uuid_list_field_select",\n- SelectFieldWidget,\n+ Select2FieldWidget,\n pattern_options={\n "closeOnSelect": False, # Select2 option to leave dropdown open for multiple selection\n },\ndiff --git a/src/plone/volto/profiles/default/registry.xml b/src/plone/volto/profiles/default/registry.xml\nindex aa8d206..1a97e36 100644\n--- a/src/plone/volto/profiles/default/registry.xml\n+++ b/src/plone/volto/profiles/default/registry.xml\n@@ -2,7 +2,7 @@\n \n \n \n False\n@@ -14,7 +14,7 @@\n \n \n \n@@ -23,7 +23,7 @@\n \n \n \ndiff --git a/src/plone/volto/testing.py b/src/plone/volto/testing.py\nindex d5f4304..2fb6677 100644\n--- a/src/plone/volto/testing.py\n+++ b/src/plone/volto/testing.py\n@@ -7,7 +7,7 @@\n from plone.app.testing import setRoles\n from plone.app.testing import TEST_USER_ID\n from plone.distribution.testing.layer import PloneDistributionFixture\n-from plone.testing import z2\n+from plone.testing import zope\n \n import plone.app.caching # noQA\n import plone.app.discussion # noQA\n@@ -62,13 +62,17 @@ class PloneVoltoCoreLayer(PloneSandboxLayer):\n \n \n PLONE_VOLTO_CORE_FUNCTIONAL_TESTING = FunctionalTesting(\n- bases=(PLONE_VOLTO_CORE_FIXTURE, z2.ZSERVER_FIXTURE),\n+ bases=(PLONE_VOLTO_CORE_FIXTURE, zope.WSGI_SERVER_FIXTURE),\n name="PloneVoltoCoreLayer:FunctionalTesting",\n )\n \n \n PLONE_VOLTO_CORE_ACCEPTANCE_TESTING = FunctionalTesting(\n- bases=(PLONE_VOLTO_CORE_FIXTURE, REMOTE_LIBRARY_BUNDLE_FIXTURE, z2.ZSERVER_FIXTURE),\n+ bases=(\n+ PLONE_VOLTO_CORE_FIXTURE,\n+ REMOTE_LIBRARY_BUNDLE_FIXTURE,\n+ zope.WSGI_SERVER_FIXTURE,\n+ ),\n name="PloneVoltoCoreLayer:AcceptanceTesting",\n )\n \n@@ -108,7 +112,7 @@ def setUpPloneSite(self, portal):\n \n \n PLONE_VOLTO_CORESANDBOX_FUNCTIONAL_TESTING = FunctionalTesting(\n- bases=(PLONE_VOLTO_CORESANDBOX_FIXTURE, z2.ZSERVER_FIXTURE),\n+ bases=(PLONE_VOLTO_CORESANDBOX_FIXTURE, zope.WSGI_SERVER_FIXTURE),\n name="PloneVoltoCoreSandboxLayer:FunctionalTesting",\n )\n \n@@ -117,7 +121,7 @@ def setUpPloneSite(self, portal):\n bases=(\n PLONE_VOLTO_CORESANDBOX_FIXTURE,\n REMOTE_LIBRARY_BUNDLE_FIXTURE,\n- z2.ZSERVER_FIXTURE,\n+ zope.WSGI_SERVER_FIXTURE,\n ),\n name="PloneVoltoCoreSandboxLayer:AcceptanceTesting",\n )\n@@ -144,6 +148,6 @@ def setUpPloneSite(self, portal):\n \n \n PLONE_VOLTO_MIGRATION_FUNCTIONAL_TESTING = FunctionalTesting(\n- bases=(PLONE_VOLTO_MIGRATION_FIXTURE, z2.ZSERVER_FIXTURE),\n+ bases=(PLONE_VOLTO_MIGRATION_FIXTURE, zope.WSGI_SERVER_FIXTURE),\n name="PloneVoltoMigrationLayer:FunctionalTesting",\n )\n'