diff --git a/README.md b/README.md
index d1bc70ead2525b4de16383e2acc084ead46051c9..faac2b29804b78f8c6d13e439ceec76132e98792 100644
--- a/README.md
+++ b/README.md
@@ -46,8 +46,10 @@ by granting the `access any webform configuration` permission.
         description
         elements {
           ... on WebformElement {
-            key
-            type
+            metadata {
+              key
+              type
+            }
           }
           ... on WebformElementWebformActions {
             submitLabel
@@ -124,9 +126,11 @@ by granting the `access any webform configuration` permission.
             }
           }
           ... on WebformElementWebformTermSelect {
-            title
-            description
-            multiple
+            metadata {
+              title
+              description
+              multiple
+            }
             options(depth: 1) {
               value
               title
diff --git a/src/Plugin/GraphQL/SchemaExtension/WebformExtension.php b/src/Plugin/GraphQL/SchemaExtension/WebformExtension.php
index 9c8f06b321bb851bc550ce246c2fa93a29690f46..a39133ceda9bf69037c99c641e05c7c8125b2da7 100644
--- a/src/Plugin/GraphQL/SchemaExtension/WebformExtension.php
+++ b/src/Plugin/GraphQL/SchemaExtension/WebformExtension.php
@@ -137,15 +137,20 @@ class WebformExtension extends SdlSchemaExtensionPluginBase {
         ->map('id', $builder->fromArgument('id'))
     );
 
-    $registry->addFieldResolver('WebformElement', 'key', $builder->callback(
+    // Expose the metadata of the webform element.
+    $registry->addFieldResolver('WebformElement', 'metadata', $builder->callback(
+      static fn (array $value): array => $value
+    ));
+
+    $registry->addFieldResolver('WebformElementMetadata', 'key', $builder->callback(
       static fn (array $value): string => $value['#webform_key'] ?? ''
     ));
 
-    $registry->addFieldResolver('WebformElement', 'type', $builder->callback(
+    $registry->addFieldResolver('WebformElementMetadata', 'type', $builder->callback(
       static fn (array $value): string => $value['#webform_plugin_id'] ?? ''
     ));
 
-    $registry->addFieldResolver('WebformElement', 'name', $builder->callback(
+    $registry->addFieldResolver('WebformElementMetadata', 'name', $builder->callback(
       static function ($value) {
         $name = $value['#name'] ?? '';
         // When an element can be multiple, we remove the nested name of the
@@ -155,12 +160,12 @@ class WebformExtension extends SdlSchemaExtensionPluginBase {
       }
     ));
 
-    $registry->addFieldResolver('WebformElement', 'element', $builder->callback(
+    $registry->addFieldResolver('WebformElementMetadata', 'element', $builder->callback(
       static fn (array $value): array => $value
     ));
 
     $typeFields = [
-      'WebformElement' => [
+      'WebformElementMetadata' => [
         'title' => 'string',
         'description' => 'string',
         'multiple' => 'int',
@@ -195,7 +200,7 @@ class WebformExtension extends SdlSchemaExtensionPluginBase {
     }
 
     // Expose information in case the field is required.
-    $registry->addFieldResolver('WebformElement', 'required', $builder->callback(
+    $registry->addFieldResolver('WebformElementMetadata', 'required', $builder->callback(
       static fn (array $value): ?array => $value['#required'] ? $value : NULL
     ));
 
diff --git a/src/WebformSchemaBuilder.php b/src/WebformSchemaBuilder.php
index 6885b07b225c7a01a8ac4e6c9ba4308c16e60705..20d278a67ff8a9c5f9d994555db3d12c99f1e009 100644
--- a/src/WebformSchemaBuilder.php
+++ b/src/WebformSchemaBuilder.php
@@ -54,6 +54,18 @@ class WebformSchemaBuilder {
       ],
     ]);
 
+    $this->types['WebformElementMetadata'] = new ObjectType([
+      'name' => 'WebformElementMetadata',
+      'fields' => [
+        'key' => $this->type(Type::nonNull(Type::string()), 'The key of the element.'),
+        'type' => $this->type(Type::nonNull(Type::string()), 'The element type.'),
+        'title' => $this->type(Type::string(), ''),
+        'description' => $this->type(Type::string(), ''),
+        'multiple' => $this->type(Type::int(), 'The number of values that can be entered into the element. Unlimited if 0.'),
+        'required' => $this->types['WebformRequiredElement'],
+      ],
+    ]);
+
     $this->types['WebformElement'] = new InterfaceType([
       'name' => 'WebformElement',
       'fields' => $this->getElementDefinition(),
@@ -315,12 +327,7 @@ class WebformSchemaBuilder {
    */
   protected function getElementDefinition(): array {
     return [
-      'required' => $this->types['WebformRequiredElement'],
-      'key' => $this->type(Type::nonNull(Type::string()), 'The key of the element.'),
-      'type' => $this->type(Type::nonNull(Type::string()), 'The element type.'),
-      'title' => $this->type(Type::string(), ''),
-      'description' => $this->type(Type::string(), ''),
-      'multiple' => $this->type(Type::int(), 'The number of values that can be entered into the element. Unlimited if 0.'),
+      'metadata' => fn () => $this->types['WebformElementMetadata'],
     ];
   }
 
diff --git a/tests/queries/actions.gql b/tests/queries/actions.gql
index c9dbd0e663a316e0d64b54e71e5e3ec2ef74f1a4..9513ddcde62716bdba676da0c02f9b0f28807594 100644
--- a/tests/queries/actions.gql
+++ b/tests/queries/actions.gql
@@ -1,9 +1,12 @@
 fragment webformElement on WebformElementWebformActions {
   __typename
   submitLabel
-  key
-  type
-  title
+  metadata {
+    __typename
+    key
+    type
+    title
+  }
 }
 
 fragment webform on Webform {
diff --git a/tests/queries/checkboxes.gql b/tests/queries/checkboxes.gql
index 99948414a36f5f72a9e4c74fd242deb3d864ed78..886f62a9d97ff394b822a5dc3eb628e4e59d3547 100644
--- a/tests/queries/checkboxes.gql
+++ b/tests/queries/checkboxes.gql
@@ -6,9 +6,11 @@ fragment webformElementOption on WebformElementOption {
 
 fragment webformElementCheckboxes on WebformElementCheckboxes {
   __typename
-  key
-  title
-  description
+  metadata {
+    key
+    title
+    description
+  }
   options {
     ...webformElementOption
   }
diff --git a/tests/queries/fieldset.gql b/tests/queries/fieldset.gql
index a6b0f5da9d1d4775fc64f666903a0732b5add3f0..e25f9d2699341b42d8761ec934008f758aaa26b5 100644
--- a/tests/queries/fieldset.gql
+++ b/tests/queries/fieldset.gql
@@ -1,11 +1,15 @@
 fragment fieldsets on WebformElementFieldset {
   __typename
-  key
-  type
-  elements {
+  metadata {
     key
     type
   }
+  elements {
+    metadata {
+      key
+      type
+    }
+  }
 }
 
 query webform($id: String!) {
diff --git a/tests/queries/flexbox.gql b/tests/queries/flexbox.gql
index 98aa41436a1467535b9ba22481c23e82c2c674ea..0007113886a5d38f284f3d7d3e967f4d52a9b3a8 100644
--- a/tests/queries/flexbox.gql
+++ b/tests/queries/flexbox.gql
@@ -1,10 +1,14 @@
 fragment flexboxes on WebformElementWebformFlexbox {
   __typename
-  key
-  type
+  metadata {
+    key
+    type
+  }
   alignItems
   elements {
-    key
+    metadata {
+      key
+    }
   }
 }
 
diff --git a/tests/queries/managed_file.gql b/tests/queries/managed_file.gql
index f1ff9a3fefdafe818216eb3a47beab321a16d096..43f0dc22d32907b34146b947682e9a21886fa415 100644
--- a/tests/queries/managed_file.gql
+++ b/tests/queries/managed_file.gql
@@ -1,9 +1,12 @@
 fragment webformElement on WebformElement {
   __typename
+  metadata {
+    __typename
   key
   type
   title
   description
+  }
 }
 
 fragment webformElementManagedFileBase on WebformElementManagedFileBase {
diff --git a/tests/queries/markup.gql b/tests/queries/markup.gql
index 27af61eae67f30cca31f1903157b3149bc597edc..670f472d857c1393f27a8309c4788edb803f558c 100644
--- a/tests/queries/markup.gql
+++ b/tests/queries/markup.gql
@@ -2,6 +2,11 @@ fragment webformElementMarkup on WebformElementMarkupBase {
   __typename
   markup
   displayOn
+  ... on WebformElement {
+    metadata {
+      key
+    }
+  }
 }
 
 fragment webformElement on WebformElement {
diff --git a/tests/queries/radios.gql b/tests/queries/radios.gql
index 449df7440bbad9ca86d7a5e684c3eef2ed393d06..cfda96e87a1f75c40c5cc463fa6a4c787adeeb3e 100644
--- a/tests/queries/radios.gql
+++ b/tests/queries/radios.gql
@@ -7,12 +7,15 @@ fragment webformElementOption on WebformElementOption {
 
 fragment webformElementRadios on WebformElementRadios {
   __typename
-  key
-  type
-  title
-  description
-  required {
-    message
+  metadata {
+    key
+    type
+    title
+    description
+    required {
+      __typename
+      message
+    }
   }
   options {
     ...webformElementOption
diff --git a/tests/queries/required.gql b/tests/queries/required.gql
index eb1ea4e7c7a7a8f03f60913a54b9950ec8449100..36b6beccb5e70801c321d505f0ff78163df551e2 100644
--- a/tests/queries/required.gql
+++ b/tests/queries/required.gql
@@ -6,8 +6,10 @@ query webform($id: String!) {
   form: webformById(id: $id) {
     title
     elements {
-      required {
-        ...required
+      metadata {
+        required {
+          ...required
+        }
       }
     }
   }
diff --git a/tests/queries/select.gql b/tests/queries/select.gql
index 718ed43d47f8b12aa2558927114b325ed946b80e..75cc5ac4c1596e7806d4a439aaf920b492190839 100644
--- a/tests/queries/select.gql
+++ b/tests/queries/select.gql
@@ -6,9 +6,11 @@ fragment webformElementOption on WebformElementOption {
 
 fragment webformElementSelect on WebformElementSelect {
   __typename
-  key
-  title
-  description
+  metadata {
+    key
+    title
+    description
+  }
   options {
     ...webformElementOption
   }
diff --git a/tests/queries/term_select.gql b/tests/queries/term_select.gql
index 259bb51e1f2ad9d2bc317a99bcf4ac99ce165708..7b85fc1ed3b74296b1357c67ebdfa00a06dd1d86 100644
--- a/tests/queries/term_select.gql
+++ b/tests/queries/term_select.gql
@@ -1,10 +1,12 @@
 fragment webformElementTermSelect on WebformElementWebformTermSelect {
   __typename
-  key
-  type
-  title
-  description
-  multiple
+  metadata {
+    key
+    type
+    title
+    description
+    multiple
+  }
   options(depth: $depth) {
     title
   }
diff --git a/tests/queries/textarea.gql b/tests/queries/textarea.gql
index 895e244d6d3dfe34580a30cce1ffbd2393076d16..8947980c62d9c6da6cd22e5b215cc7418cf0b86e 100644
--- a/tests/queries/textarea.gql
+++ b/tests/queries/textarea.gql
@@ -6,12 +6,14 @@ fragment webformElementValidationPattern on WebformElementValidationPattern {
 
 fragment webformElementTextarea on WebformElementTextarea {
   __typename
-  key
-  type
-  title
-  description
-  required {
-    message
+  metadata {
+    key
+    type
+    title
+    description
+    required {
+      message
+    }
   }
   readonly
   size
diff --git a/tests/queries/textfield.gql b/tests/queries/textfield.gql
index c74768e14715a29d126ab81369c100348c7aa820..ee6174c7619a1c319c73445c93998294d9d51261 100644
--- a/tests/queries/textfield.gql
+++ b/tests/queries/textfield.gql
@@ -1,11 +1,13 @@
 fragment webformElementTextField on WebformElementTextfield {
   __typename
-  key
-  type
-  title
-  description
-  required {
-    message
+  metadata {
+    key
+    type
+    title
+    description
+    required {
+      message
+    }
   }
   readonly
   size
diff --git a/tests/queries/unexposed.gql b/tests/queries/unexposed.gql
index 2cb036cf9a23ef11f81e3f109833e0f46dbee8fd..4ba108048dca08ae31d51a605e1f0e9cf54f4fc3 100644
--- a/tests/queries/unexposed.gql
+++ b/tests/queries/unexposed.gql
@@ -1,8 +1,11 @@
 fragment webformElement on WebformElementUnexposed {
   __typename
-  key
-  type
-  title
+  metadata {
+    __typename
+    key
+    type
+    title
+  }
 }
 
 fragment webform on Webform {
diff --git a/tests/src/Kernel/Element/ActionsTest.php b/tests/src/Kernel/Element/ActionsTest.php
index 9b8f54c9ec174fa6ea907c0bcf898db12a64d804..7941bf56e0ae08e4252b4bb759cb87a652c7c913 100644
--- a/tests/src/Kernel/Element/ActionsTest.php
+++ b/tests/src/Kernel/Element/ActionsTest.php
@@ -26,9 +26,12 @@ class ActionsTest extends GraphQLWebformKernelTestBase {
           [
             '__typename' => 'WebformElementWebformActions',
             'submitLabel' => 'Set sail for adventure',
-            'key' => 'actions',
-            'type' => 'webform_actions',
-            'title' => 'Submit button(s)',
+            'metadata' => [
+              'key' => 'actions',
+              'type' => 'webform_actions',
+              'title' => 'Submit button(s)',
+              '__typename' => 'WebformElementMetadata',
+            ],
           ],
         ],
       ],
diff --git a/tests/src/Kernel/Element/CheckboxesTest.php b/tests/src/Kernel/Element/CheckboxesTest.php
index 9b5e2f13ff8e6afbc5f29595d6d88b0bba037108..c11fa0e80b68905ba7233d5f680f47670f80eb24 100644
--- a/tests/src/Kernel/Element/CheckboxesTest.php
+++ b/tests/src/Kernel/Element/CheckboxesTest.php
@@ -36,9 +36,11 @@ class CheckboxesTest extends GraphQLWebformKernelTestBase {
                 'description' => 'The outer moon of Mars.',
               ],
             ],
-            'key' => 'checkboxes',
-            'title' => 'Checkboxes',
-            'description' => 'Choose your moons.',
+            'metadata' => [
+              'key' => 'checkboxes',
+              'title' => 'Checkboxes',
+              'description' => 'Choose your moons.',
+            ],
           ],
         ],
       ],
diff --git a/tests/src/Kernel/Element/FieldsetTest.php b/tests/src/Kernel/Element/FieldsetTest.php
index 49de52c595d186b91689073137a3fd200cfe01c2..c0a8ee811b6a4f963a430b1249ff2c2c0884c364 100644
--- a/tests/src/Kernel/Element/FieldsetTest.php
+++ b/tests/src/Kernel/Element/FieldsetTest.php
@@ -26,12 +26,16 @@ class FieldsetTest extends GraphQLWebformKernelTestBase {
             '__typename' => 'WebformElementFieldset',
             'elements' => [
               0 => [
-                'key' => 'checkbox2',
-                'type' => 'checkbox',
+                'metadata' => [
+                  'key' => 'checkbox2',
+                  'type' => 'checkbox',
+                ],
               ],
             ],
-            'key' => 'fieldset',
-            'type' => 'fieldset',
+            'metadata' => [
+              'key' => 'fieldset',
+              'type' => 'fieldset',
+            ],
           ],
         ],
       ],
diff --git a/tests/src/Kernel/Element/FlexboxTest.php b/tests/src/Kernel/Element/FlexboxTest.php
index c98cb861f9d8244bb30c19bbf4593d8b74fef509..a007ba1233d9bc5907c7019b476ae1e42977dc74 100644
--- a/tests/src/Kernel/Element/FlexboxTest.php
+++ b/tests/src/Kernel/Element/FlexboxTest.php
@@ -27,14 +27,20 @@ class FlexboxTest extends GraphQLWebformKernelTestBase {
             'alignItems' => 'center',
             'elements' => [
               0 => [
-                'key' => 'checkbox',
+                'metadata' => [
+                  'key' => 'checkbox',
+                ],
               ],
               1 => [
-                'key' => 'time',
+                'metadata' => [
+                  'key' => 'time',
+                ],
               ],
             ],
-            'key' => 'flexbox',
-            'type' => 'webform_flexbox',
+            'metadata' => [
+              'key' => 'flexbox',
+              'type' => 'webform_flexbox',
+            ],
           ],
         ],
       ],
diff --git a/tests/src/Kernel/Element/ManagedFileTest.php b/tests/src/Kernel/Element/ManagedFileTest.php
index 7eab946b473e747f97899d2b320f938ae3f0c55b..b5081ee72d07b084713c118c7012777d10d2cfc5 100644
--- a/tests/src/Kernel/Element/ManagedFileTest.php
+++ b/tests/src/Kernel/Element/ManagedFileTest.php
@@ -36,19 +36,25 @@ class ManagedFileTest extends GraphQLWebformKernelTestBase {
             '__typename' => 'WebformElementManagedFile',
             'maxFilesize' => $expectedFileLimit,
             'fileExtensions' => 'gif jpg png txt',
-            'key' => 'file_upload',
-            'type' => 'managed_file',
-            'title' => 'File upload',
-            'description' => "Description<br />One file only.<br />$human_readable_file_limit limit.<br />Allowed types: gif jpg png txt.\n",
+            'metadata' => [
+              '__typename' => 'WebformElementMetadata',
+              'key' => 'file_upload',
+              'type' => 'managed_file',
+              'title' => 'File upload',
+              'description' => "Description<br />One file only.<br />$human_readable_file_limit limit.<br />Allowed types: gif jpg png txt.\n",
+            ],
           ],
           11 => [
             '__typename' => 'WebformElementWebformAudioFile',
             'maxFilesize' => $expectedAudioFileLimit,
             'fileExtensions' => 'mp3 ogg wav',
-            'key' => 'audio_files',
-            'type' => 'webform_audio_file',
-            'title' => 'Audio files',
-            'description' => "Maximum 2 files.<br />$human_readable_audio_file_limit limit.<br />Allowed types: mp3 ogg wav.\n",
+            'metadata' => [
+              '__typename' => 'WebformElementMetadata',
+              'key' => 'audio_files',
+              'type' => 'webform_audio_file',
+              'title' => 'Audio files',
+              'description' => "Maximum 2 files.<br />$human_readable_audio_file_limit limit.<br />Allowed types: mp3 ogg wav.\n",
+            ],
           ],
         ],
       ],
diff --git a/tests/src/Kernel/Element/MarkupTest.php b/tests/src/Kernel/Element/MarkupTest.php
index ae5e72f3a3e897c3ab2d2b1a7a3c16cb21d9917c..c80fc6c27a27db1203ed9a8600ccdeae4c789e3a 100644
--- a/tests/src/Kernel/Element/MarkupTest.php
+++ b/tests/src/Kernel/Element/MarkupTest.php
@@ -56,11 +56,17 @@ class MarkupTest extends GraphQLWebformKernelTestBase {
         'elements' => [
           5 => [
             '__typename' => 'WebformElementWebformMarkup',
+            'metadata' => [
+              'key' => 'markup',
+            ],
             'markup' => '<strong>Markup</strong>',
             'displayOn' => 'DISPLAY_ON_FORM',
           ],
           14 => [
             '__typename' => 'WebformElementProcessedText',
+            'metadata' => [
+              'key' => 'processed_text',
+            ],
             // The '<em>' tag should be stripped out.
             'markup' => '<p><strong>Processed text</strong></p>',
             'displayOn' => 'DISPLAY_ON_BOTH',
diff --git a/tests/src/Kernel/Element/RadiosTest.php b/tests/src/Kernel/Element/RadiosTest.php
index daeb37ba1e72754e83858a33c2069122ab7f6e44..4e21231bb133b78deed2bf81e43e41c7c5a0894a 100644
--- a/tests/src/Kernel/Element/RadiosTest.php
+++ b/tests/src/Kernel/Element/RadiosTest.php
@@ -38,11 +38,13 @@ class RadiosTest extends GraphQLWebformKernelTestBase {
                 'description' => 'Broadcasts from Peru since 1964',
               ],
             ],
-            'key' => 'radios',
-            'type' => 'radios',
-            'title' => 'Radios',
-            'description' => 'Choose your favorite station.',
-            'required' => NULL,
+            'metadata' => [
+              'key' => 'radios',
+              'type' => 'radios',
+              'title' => 'Radios',
+              'description' => 'Choose your favorite station.',
+              'required' => NULL,
+            ],
           ],
         ],
       ],
diff --git a/tests/src/Kernel/Element/RequiredElementTest.php b/tests/src/Kernel/Element/RequiredElementTest.php
index 3010ff77f8a83921dacb409875d44e4e6bd4d3cb..1a7d5fd39d424e5738b6e92bed7f05fbac69135f 100644
--- a/tests/src/Kernel/Element/RequiredElementTest.php
+++ b/tests/src/Kernel/Element/RequiredElementTest.php
@@ -24,8 +24,10 @@ class RequiredElementTest extends GraphQLWebformKernelTestBase {
         'title' => 'GraphQL Webform test form',
         'elements' => [
           0 => [
-            'required' => [
-              'message' => 'This field is required because it is important.',
+            'metadata' => [
+              'required' => [
+                'message' => 'This field is required because it is important.',
+              ],
             ],
           ],
         ],
@@ -43,7 +45,7 @@ class RequiredElementTest extends GraphQLWebformKernelTestBase {
     // fields are added or removed from the form.
     if (!empty($data['data']['form']['elements'])) {
       $elements = &$data['data']['form']['elements'];
-      $elements = array_filter($elements, fn ($value) => !empty($value['required']));
+      $elements = array_filter($elements, fn ($value) => !empty($value['metadata']['required']));
     }
 
     $this->assertArrayHasKey('data', $data, 'No result data.');
diff --git a/tests/src/Kernel/Element/SelectTest.php b/tests/src/Kernel/Element/SelectTest.php
index 483cd68ca3fdd0b76345d35f8042ab99ab86ef98..6eafa0207ca6a5fbed284daf1cb7578190169081 100644
--- a/tests/src/Kernel/Element/SelectTest.php
+++ b/tests/src/Kernel/Element/SelectTest.php
@@ -24,9 +24,11 @@ class SelectTest extends GraphQLWebformKernelTestBase {
         'elements' => [
           8 => [
             '__typename' => 'WebformElementSelect',
-            'key' => 'select',
-            'title' => 'Select',
-            'description' => 'Choose wisely.',
+            'metadata' => [
+              'key' => 'select',
+              'title' => 'Select',
+              'description' => 'Choose wisely.',
+            ],
             'options' => [
               0 => [
                 'title' => 'Option 1',
@@ -47,9 +49,11 @@ class SelectTest extends GraphQLWebformKernelTestBase {
           ],
           12 => [
             '__typename' => 'WebformElementSelect',
-            'key' => 'select_with_custom_empty_option',
-            'title' => 'Select with custom empty option',
-            'description' => NULL,
+            'metadata' => [
+              'key' => 'select_with_custom_empty_option',
+              'title' => 'Select with custom empty option',
+              'description' => NULL,
+            ],
             'options' => [
               0 => [
                 'title' => 'Vegetarian',
diff --git a/tests/src/Kernel/Element/TermSelectTest.php b/tests/src/Kernel/Element/TermSelectTest.php
index 60077396879be94aea14e56c1ccabf9e2cc8acee..523687e1fab3c2df7c23a5f54e636088c96056fa 100644
--- a/tests/src/Kernel/Element/TermSelectTest.php
+++ b/tests/src/Kernel/Element/TermSelectTest.php
@@ -87,11 +87,13 @@ class TermSelectTest extends GraphQLWebformKernelTestBase {
         'elements' => [
           9 => [
             '__typename' => 'WebformElementWebformTermSelect',
-            'key' => 'term_select',
-            'type' => 'webform_term_select',
-            'title' => 'Term select',
-            'description' => 'Select one or two tags.',
-            'multiple' => 2,
+            'metadata' => [
+              'key' => 'term_select',
+              'type' => 'webform_term_select',
+              'title' => 'Term select',
+              'description' => 'Select one or two tags.',
+              'multiple' => 2,
+            ],
             'options' => $expected_term_options,
           ],
         ],
diff --git a/tests/src/Kernel/Element/TextAreaTest.php b/tests/src/Kernel/Element/TextAreaTest.php
index 8ac4803f72438c5be579c2cca35e27605af5d273..eaca006bf88f735369a466c9a4a9ffe4c679ba26 100644
--- a/tests/src/Kernel/Element/TextAreaTest.php
+++ b/tests/src/Kernel/Element/TextAreaTest.php
@@ -24,11 +24,13 @@ class TextAreaTest extends GraphQLWebformKernelTestBase {
         'elements' => [
           4 => [
             '__typename' => 'WebformElementTextarea',
-            'key' => 'textarea',
-            'type' => 'textarea',
-            'title' => 'Textarea',
-            'description' => 'Tell us a bit more about yourself.',
-            'required' => NULL,
+            'metadata' => [
+              'key' => 'textarea',
+              'type' => 'textarea',
+              'title' => 'Textarea',
+              'description' => 'Tell us a bit more about yourself.',
+              'required' => NULL,
+            ],
             'readonly' => FALSE,
             'size' => 100,
             'minlength' => 20,
diff --git a/tests/src/Kernel/Element/TextFieldTest.php b/tests/src/Kernel/Element/TextFieldTest.php
index c7d64669705877c387bb27ab987fcea8d9b301eb..8d5731724825f2bb81c461551855dbd72743b40c 100644
--- a/tests/src/Kernel/Element/TextFieldTest.php
+++ b/tests/src/Kernel/Element/TextFieldTest.php
@@ -24,12 +24,14 @@ class TextFieldTest extends GraphQLWebformKernelTestBase {
         'elements' => [
           0 => [
             '__typename' => 'WebformElementTextfield',
-            'key' => 'required_text_field',
-            'type' => 'textfield',
-            'title' => 'Required text field',
-            'description' => 'The description of the required text field.',
-            'required' => [
-              'message' => 'This field is required because it is important.',
+            'metadata' => [
+              'key' => 'required_text_field',
+              'type' => 'textfield',
+              'title' => 'Required text field',
+              'description' => 'The description of the required text field.',
+              'required' => [
+                'message' => 'This field is required because it is important.',
+              ],
             ],
             'readonly' => FALSE,
             'size' => 10,
@@ -45,11 +47,13 @@ class TextFieldTest extends GraphQLWebformKernelTestBase {
           ],
           1 => [
             '__typename' => 'WebformElementTextfield',
-            'key' => 'optional_text_field',
-            'type' => 'textfield',
-            'title' => 'Optional text field',
-            'description' => NULL,
-            'required' => NULL,
+            'metadata' => [
+              'key' => 'optional_text_field',
+              'type' => 'textfield',
+              'title' => 'Optional text field',
+              'description' => NULL,
+              'required' => NULL,
+            ],
             'readonly' => FALSE,
             'size' => 60,
             'minlength' => NULL,
@@ -64,11 +68,13 @@ class TextFieldTest extends GraphQLWebformKernelTestBase {
           ],
           13 => [
             '__typename' => 'WebformElementTextfield',
-            'key' => '2_years',
-            'type' => 'textfield',
-            'title' => 'Minimum 2 years, maximum 6',
-            'description' => '',
-            'required' => NULL,
+            'metadata' => [
+              'key' => '2_years',
+              'type' => 'textfield',
+              'title' => 'Minimum 2 years, maximum 6',
+              'description' => '',
+              'required' => NULL,
+            ],
             'readonly' => FALSE,
             'size' => 60,
             'minlength' => NULL,
diff --git a/tests/src/Kernel/Element/UnexposedElementTest.php b/tests/src/Kernel/Element/UnexposedElementTest.php
index a19d15343edf6a5c69933f21c33c7db338cb8916..ea2427ce8ddc617f8412bccec7c8bbdcafe8eb5a 100644
--- a/tests/src/Kernel/Element/UnexposedElementTest.php
+++ b/tests/src/Kernel/Element/UnexposedElementTest.php
@@ -27,9 +27,12 @@ class UnexposedElementTest extends GraphQLWebformKernelTestBase {
         'elements' => [
           3 => [
             '__typename' => 'WebformElementUnexposed',
-            'key' => 'unsupported_field',
-            'type' => 'webform_element',
-            'title' => 'Unsupported field',
+            'metadata' => [
+              'key' => 'unsupported_field',
+              'type' => 'webform_element',
+              'title' => 'Unsupported field',
+              '__typename' => 'WebformElementMetadata',
+            ],
           ],
         ],
       ],