diff --git a/core/modules/config/src/Tests/ConfigEntityTest.php b/core/modules/config/src/Tests/ConfigEntityTest.php
index a8a8f0f..bdba48a5 100644
--- a/core/modules/config/src/Tests/ConfigEntityTest.php
+++ b/core/modules/config/src/Tests/ConfigEntityTest.php
@@ -317,28 +317,15 @@ function testCRUDUI() {
     $this->drupalPostForm('admin/structure/config_test/manage/0/delete', array(), 'Delete');
     $this->assertFalse(entity_load('config_test', '0'), 'Test entity deleted');
 
-    // Create a configuration entity with a property that uses AJAX to show
-    // extra form elements.
-    $this->drupalGet('admin/structure/config_test/add');
-
-    // Test that the dependent element is not shown initially.
-    $this->assertFieldByName('size');
-    $this->assertNoFieldByName('size_value');
 
+    // Create a configuration entity with a property that uses the non-JS case
+    // by using a 'js-hidden' submit button.
     $id = strtolower($this->randomMachineName());
     $edit = [
       'id' => $id,
       'label' => $this->randomString(),
       'size' => 'custom',
     ];
-    $this->drupalPostAjaxForm(NULL, $edit, 'size');
-
-    // Check that the dependent element is shown after selecting a 'size' value.
-    $this->assertFieldByName('size');
-    $this->assertFieldByName('size_value');
-
-    // Test the same scenario but it in a non-JS case by using a 'js-hidden'
-    // submit button.
     $this->drupalGet('admin/structure/config_test/add');
     $this->assertFieldByName('size');
     $this->assertNoFieldByName('size_value');
diff --git a/core/modules/config/tests/src/FunctionalJavascript/ConfigEntityTest.php b/core/modules/config/tests/src/FunctionalJavascript/ConfigEntityTest.php
new file mode 100644
index 0000000..a8cc0e6
--- /dev/null
+++ b/core/modules/config/tests/src/FunctionalJavascript/ConfigEntityTest.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace Drupal\Tests\config\FunctionalJavascript;
+
+use Drupal\Component\Render\FormattableMarkup;
+use Drupal\FunctionalJavascriptTests\JavascriptTestBase;
+
+/**
+ * Tests the View UI filter criteria group dialog.
+ *
+ * @group views_ui
+ */
+class ConfigEntityTest extends JavascriptTestBase {
+
+  /**
+   * {@inheritdoc}
+   */
+  public static $modules = ['config_test'];
+
+  /**
+   * Tests CRUD operations through the UI.
+   */
+  function testCRUDUI() {
+    $this->drupalLogin($this->drupalCreateUser(['administer site configuration']));
+
+    // Create a configuration entity.
+    $this->drupalGet('admin/structure/config_test/add');
+
+    $session = $this->getSession();
+    $assert_session = $this->assertSession();
+    $page = $session->getPage();
+
+    $field_id = $page->findField('id');
+    $field_label = $page->findField('label');
+    $button_save = $page->findButton('Save');
+
+    // Create a configuration entity with a property that uses AJAX to show
+    // extra form elements.
+    $this->drupalGet('admin/structure/config_test/add');
+
+    // Test that the dependent element is not shown initially.
+    $field_size = $page->findField('size');
+    $field_size_value = $page->findField('size_value');
+    $this->assertNotEmpty($field_size);
+    $this->assertEmpty($field_size_value);
+
+    $id = strtolower($this->randomMachineName());
+    $field_id->setValue($id);
+    $field_label->setValue($this->randomString());
+    $field_size->setValue('custom');
+    $assert_session->assertWaitOnAjaxRequest();
+
+    // Check that the dependent element is shown after selecting a 'size' value.
+    $field_size_value = $page->findField('size_value');
+    $this->assertNotEmpty($field_size);
+    $this->assertNotEmpty($field_size_value);
+
+    $field_size_value->setValue('medium');
+    $button_save->click();
+
+    $entity = \Drupal::entityTypeManager()->getStorage('config_test')->load($id);
+    $this->assertEquals('custom', $entity->get('size'));
+    $this->assertEquals('medium', $entity->get('size_value'));
+  }
+
+}
