typescript: Convert network_namserver test to ts

Fixed: b/367735615
Change-Id: Ia2e8d14f7f79d323f9efad803d9eae4aabb6ecc0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5892899
Reviewed-by: Chad Duffin <chadduffin@chromium.org>
Commit-Queue: Gavin Williams <gavinwill@chromium.org>
Reviewed-by: Wes Okuhara <wesokuhara@google.com>
Cr-Commit-Position: refs/heads/main@{#1362057}
diff --git a/chrome/test/data/webui/chromeos/BUILD.gn b/chrome/test/data/webui/chromeos/BUILD.gn
index f06133f..37073e2 100644
--- a/chrome/test/data/webui/chromeos/BUILD.gn
+++ b/chrome/test/data/webui/chromeos/BUILD.gn
@@ -233,7 +233,7 @@
     "network/network_ip_config_test.js",
     "network/network_list_item_test.js",
     "network/network_list_test.js",
-    "network/network_nameservers_test.js",
+    "network/network_nameservers_test.ts",
     "network/network_password_input_test.js",
     "network/network_property_list_mojo_test.js",
     "network/network_proxy_exclusions_test.js",
diff --git a/chrome/test/data/webui/chromeos/network/network_nameservers_test.js b/chrome/test/data/webui/chromeos/network/network_nameservers_test.js
deleted file mode 100644
index 086a007a..0000000
--- a/chrome/test/data/webui/chromeos/network/network_nameservers_test.js
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2020 The Chromium Authors
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'chrome://os-settings/strings.m.js';
-import 'chrome://resources/ash/common/network/network_nameservers.js';
-
-import {ConnectionStateType, PolicySource} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-webui.js';
-import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
-import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
-
-suite('NetworkNameserversTest', function() {
-  /** @type {!NetworkNameservers|undefined} */
-  let nameservers;
-
-  setup(function() {
-    nameservers = document.createElement('network-nameservers');
-    document.body.appendChild(nameservers);
-    flush();
-  });
-
-  test('Select nameservers', async () => {
-    assertTrue(!!nameservers.$.nameserverType);
-
-    // Default nameserver type is 'automatic'.
-    assertEquals('automatic', nameservers.$.nameserverType.selected);
-    assertTrue(nameservers.$$('cr-radio-button[name=automatic]').checked);
-    assertFalse(nameservers.$$('cr-radio-button[name=google]').checked);
-    assertFalse(nameservers.$$('cr-radio-button[name=custom]').checked);
-
-    nameservers.$.nameserverType.selected = 'google';
-    assertFalse(nameservers.$$('cr-radio-button[name=automatic]').checked);
-    assertTrue(nameservers.$$('cr-radio-button[name=google]').checked);
-    assertFalse(nameservers.$$('cr-radio-button[name=custom]').checked);
-
-    nameservers.$.nameserverType.selected = 'custom';
-    assertFalse(nameservers.$$('cr-radio-button[name=automatic]').checked);
-    assertFalse(nameservers.$$('cr-radio-button[name=google]').checked);
-    assertTrue(nameservers.$$('cr-radio-button[name=custom]').checked);
-  });
-
-  test('Disabled UI state', function() {
-    const radioGroup = nameservers.$.nameserverType;
-    assertFalse(radioGroup.disabled);
-
-    nameservers.disabled = true;
-
-    assertTrue(radioGroup.disabled);
-  });
-
-  test(
-      'Do not apply observed changes for static config type when connected',
-      function() {
-        const ipAddress = '8.8.8.2';
-        nameservers.$.nameserverType.selected = 'custom';
-        nameservers.managedProperties = {
-          ipAddressConfigType: {
-            activeValue: 'DHCP',
-          },
-          staticIpConfig: {
-            nameServers: {
-              activeValue: ['8.8.8.2', '8.8.8.8', '0.0.0.0', '0.0.0.0'],
-            },
-          },
-          connectionState: ConnectionStateType.kConnected,
-          nameServersConfigType: {
-            activeValue: 'Static',
-          },
-          guid: 'f19a0128-0b37-490a-bfc9-d04031f27d2a',
-        };
-        flush();
-
-        assertEquals(
-            ipAddress, nameservers.$$('cr-input[id=nameserver0]').value);
-
-        nameservers.managedProperties = {
-          ipAddressConfigType: {
-            activeValue: 'DHCP',
-          },
-          staticIpConfig: {
-            nameServers: {
-              activeValue: ['0.0.0.2', '8.8.8.8', '0.0.0.0', '0.0.0.0'],
-            },
-          },
-          connectionState: ConnectionStateType.kConnected,
-          nameServersConfigType: {
-            activeValue: 'Static',
-          },
-          guid: 'f19a0128-0b37-490a-bfc9-d04031f27d2a',
-        };
-        flush();
-
-        assertEquals(
-            ipAddress, nameservers.$$('cr-input[id=nameserver0]').value);
-      });
-});
diff --git a/chrome/test/data/webui/chromeos/network/network_nameservers_test.ts b/chrome/test/data/webui/chromeos/network/network_nameservers_test.ts
new file mode 100644
index 0000000..70bd94d
--- /dev/null
+++ b/chrome/test/data/webui/chromeos/network/network_nameservers_test.ts
@@ -0,0 +1,120 @@
+// Copyright 2020 The Chromium Authors
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import 'chrome://os-settings/strings.m.js';
+import 'chrome://resources/ash/common/network/network_nameservers.js';
+
+import type {CrInputElement} from 'chrome://resources/ash/common/cr_elements/cr_input/cr_input.js';
+import type {CrRadioButtonElement} from 'chrome://resources/ash/common/cr_elements/cr_radio_button/cr_radio_button.js';
+import type {CrRadioGroupElement} from 'chrome://resources/ash/common/cr_elements/cr_radio_group/cr_radio_group.js';
+import type {NetworkNameserversElement} from 'chrome://resources/ash/common/network/network_nameservers.js';
+import {OncMojo} from 'chrome://resources/ash/common/network/onc_mojo.js';
+import {IPConfigType, NetworkType, PolicySource} from 'chrome://resources/mojo/chromeos/services/network_config/public/mojom/network_types.mojom-webui.js';
+import {flush} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import {assertEquals, assertFalse, assertTrue} from 'chrome://webui-test/chai_assert.js';
+
+suite('NetworkNameserversTest', () => {
+  let nameservers: NetworkNameserversElement|undefined;
+
+  setup(() => {
+    nameservers = document.createElement('network-nameservers');
+    document.body.appendChild(nameservers);
+    flush();
+  });
+
+  test('Select nameservers', async () => {
+    assertTrue(!!nameservers);
+    const nameserverTypeRadioGroup =
+        nameservers.shadowRoot!.querySelector<CrRadioGroupElement>(
+            '#nameserverType');
+    assertTrue(!!nameserverTypeRadioGroup);
+
+    // Default nameserver type is 'automatic'.
+    const automaticButton =
+        nameservers.shadowRoot!.querySelector<CrRadioButtonElement>(
+            'cr-radio-button[name=automatic]');
+    assertTrue(!!automaticButton);
+    const googleButton =
+        nameservers.shadowRoot!.querySelector<CrRadioButtonElement>(
+            'cr-radio-button[name=google]');
+    assertTrue(!!googleButton);
+    const customButton =
+        nameservers.shadowRoot!.querySelector<CrRadioButtonElement>(
+            'cr-radio-button[name=custom]');
+    assertTrue(!!customButton);
+
+    assertEquals('automatic', nameserverTypeRadioGroup.selected);
+    assertTrue(automaticButton.checked);
+    assertFalse(googleButton.checked);
+    assertFalse(customButton.checked);
+
+    nameserverTypeRadioGroup.selected = 'google';
+    assertFalse(automaticButton.checked);
+    assertTrue(googleButton.checked);
+    assertFalse(customButton.checked);
+
+    nameserverTypeRadioGroup.selected = 'custom';
+    assertFalse(automaticButton.checked);
+    assertFalse(googleButton.checked);
+    assertTrue(customButton.checked);
+  });
+
+  test('Disabled UI state', () => {
+    assertTrue(!!nameservers);
+    const nameserverTypeRadioGroup =
+        nameservers.shadowRoot!.querySelector<CrRadioGroupElement>(
+            '#nameserverType');
+    assertTrue(!!nameserverTypeRadioGroup);
+    assertFalse(nameserverTypeRadioGroup.disabled);
+
+    nameservers.disabled = true;
+
+    assertTrue(nameserverTypeRadioGroup.disabled);
+  });
+
+  test(
+      'Do not apply observed changes for static config type when connected',
+      () => {
+        assertTrue(!!nameservers);
+        const nameserverTypeRadioGroup =
+            nameservers.shadowRoot!.querySelector<CrRadioGroupElement>(
+                '#nameserverType');
+        assertTrue(!!nameserverTypeRadioGroup);
+
+        const ipAddress = '8.8.8.2';
+        nameserverTypeRadioGroup.selected = 'custom';
+
+        const managedProperties = OncMojo.getDefaultManagedProperties(
+            NetworkType.kEthernet, 'f19a0128-0b37-490a-bfc9-d04031f27d2a',
+            'name');
+        managedProperties.staticIpConfig = {
+          gateway: undefined,
+          ipAddress: undefined,
+          nameServers: {
+            activeValue: ['8.8.8.2', '8.8.8.8', '0.0.0.0', '0.0.0.0'],
+            policySource: PolicySource.kNone,
+            policyValue: undefined,
+          },
+          routingPrefix: undefined,
+          type: IPConfigType.kIPv4,
+          webProxyAutoDiscoveryUrl: undefined,
+        };
+        managedProperties.ipAddressConfigType.activeValue = 'DHCP';
+        managedProperties.nameServersConfigType.activeValue = 'Static';
+        nameservers.managedProperties = managedProperties;
+        flush();
+
+        const customNameServerInput =
+            nameservers.shadowRoot!.querySelector<CrInputElement>(
+                'cr-input[id=nameserver0]');
+        assertTrue(!!customNameServerInput);
+        assertEquals(ipAddress, customNameServerInput.value);
+
+        managedProperties.staticIpConfig.nameServers!.activeValue =
+            ['0.0.0.2', '8.8.8.8', '0.0.0.0', '0.0.0.0'];
+        flush();
+
+        assertEquals(ipAddress, customNameServerInput.value);
+      });
+});
diff --git a/chrome/test/data/webui/cr_components/chromeos/BUILD.gn b/chrome/test/data/webui/cr_components/chromeos/BUILD.gn
index a098e36..5070331 100644
--- a/chrome/test/data/webui/cr_components/chromeos/BUILD.gn
+++ b/chrome/test/data/webui/cr_components/chromeos/BUILD.gn
@@ -66,7 +66,6 @@
     "network/network_ip_config_test.js",
     "network/network_list_item_test.js",
     "network/network_list_test.js",
-    "network/network_nameservers_test.js",
     "network/network_password_input_test.js",
     "network/network_property_list_mojo_test.js",
     "network/network_proxy_exclusions_test.js",