Repository: cisagov/manage.get.gov

Issue:
Django admin: make show/hide sections comply to accessibility criteria
### Issue description

Make show/hide sections comply to accessibility criteria. There is an accessibility issue on show/hide sections (h2 should be a button).

See:
-  [slack thread](https://cisa-corp.slack.com/archives/C05BGB4L5NF/p1711644874720319) for analysis and screenshot
- [slack thread](https://cisa-corp.slack.com/archives/C06K96473FA/p1711572361126209) for additional discussion

### Acceptance criteria

- [ ] ensure that show/hide sections confirm to accessibility criteria. It should be a `<button type="button" aria-label="show/hide more information about this section">` , not a `<h2>` with an embedded `<a> `
- [ ] Toggle the aria-label as well as the innerHTML between show/hide as the button is clicked

### Additional context

We should be able to do this sans JS as DJA already toggles the innerHTML for their `<a>`. Just dig through source code.

### Links to other issues

Related to: #1949 


Discussion:
Rachid updated the AC April 4.

Resolving patch:
diff --git a/src/registrar/admin.py b/src/registrar/admin.py
--- a/src/registrar/admin.py
+++ b/src/registrar/admin.py
@@ -1001,9 +1001,10 @@ class DomainInformationAdmin(ListHeaderAdmin):
             },
         ),
         (
-            "More details",
+            "Show details",
             {
-                "classes": ["collapse"],
+                "classes": ["collapse--dotgov"],
+                "description": "Extends type of organization",
                 "fields": [
                     "federal_type",
                     # "updated_federal_agency",
@@ -1026,9 +1027,10 @@ class DomainInformationAdmin(ListHeaderAdmin):
             },
         ),
         (
-            "More details",
+            "Show details",
             {
-                "classes": ["collapse"],
+                "classes": ["collapse--dotgov"],
+                "description": "Extends organization name and mailing address",
                 "fields": [
                     "address_line1",
                     "address_line2",
@@ -1252,9 +1254,10 @@ def custom_election_board(self, obj):
             },
         ),
         (
-            "More details",
+            "Show details",
             {
-                "classes": ["collapse"],
+                "classes": ["collapse--dotgov"],
+                "description": "Extends type of organization",
                 "fields": [
                     "federal_type",
                     # "updated_federal_agency",
@@ -1277,9 +1280,10 @@ def custom_election_board(self, obj):
             },
         ),
         (
-            "More details",
+            "Show details",
             {
-                "classes": ["collapse"],
+                "classes": ["collapse--dotgov"],
+                "description": "Extends organization name and mailing address",
                 "fields": [
                     "address_line1",
                     "address_line2",


Test patch:
diff --git a/src/registrar/tests/test_admin.py b/src/registrar/tests/test_admin.py
--- a/src/registrar/tests/test_admin.py
+++ b/src/registrar/tests/test_admin.py
@@ -887,6 +887,28 @@ def test_helper_text(self):
         ]
         self.test_helper.assert_response_contains_distinct_values(response, expected_values)
 
+    @less_console_noise_decorator
+    def test_collaspe_toggle_button_markup(self):
+        """
+        Tests for the correct collapse toggle button markup
+        """
+
+        # Create a fake domain request and domain
+        domain_request = completed_domain_request(status=DomainRequest.DomainRequestStatus.IN_REVIEW)
+
+        p = "adminpass"
+        self.client.login(username="superuser", password=p)
+        response = self.client.get(
+            "/admin/registrar/domainrequest/{}/change/".format(domain_request.pk),
+            follow=True,
+        )
+
+        # Make sure the page loaded, and that we're on the right page
+        self.assertEqual(response.status_code, 200)
+        self.assertContains(response, domain_request.requested_domain.name)
+
+        self.test_helper.assertContains(response, "<span>Show details</span>")
+
     @less_console_noise_decorator
     def test_analyst_can_see_and_edit_alternative_domain(self):
         """Tests if an analyst can still see and edit the alternative domain field"""