| // META: script=/resources/testdriver.js | 
 | // META: script=/resources/testdriver-vendor.js | 
 | // META: script=/resources/testdriver-actions.js | 
 |  | 
 | promise_test(async () => { | 
 |   const control = document.createElement("input"); | 
 |   control.type = "checkbox"; | 
 |   control.switch = true; | 
 |   const role = await test_driver.get_computed_role(control); | 
 |   assert_equals(role, ""); | 
 | }, `Disconnected <input type=checkbox switch>`); | 
 |  | 
 | promise_test(async t => { | 
 |   const control = document.createElement("input"); | 
 |   t.add_cleanup(() => control.remove()); | 
 |   control.type = "checkbox"; | 
 |   control.switch = true; | 
 |   document.body.append(control); | 
 |   const role = await test_driver.get_computed_role(control); | 
 |   assert_equals(role, "switch"); | 
 | }, `Connected <input type=checkbox switch>`); | 
 |  | 
 | promise_test(async t => { | 
 |   const control = document.createElement("input"); | 
 |   t.add_cleanup(() => control.remove()); | 
 |   control.type = "checkbox"; | 
 |   document.body.append(control); | 
 |   let role = await test_driver.get_computed_role(control); | 
 |   assert_equals(role, "checkbox"); | 
 |   control.switch = true; | 
 |   role = await test_driver.get_computed_role(control); | 
 |   assert_equals(role, "switch"); | 
 | }, `Connected <input type=checkbox switch>: adding switch attribute`); | 
 |  | 
 | promise_test(async t => { | 
 |   const control = document.createElement("input"); | 
 |   t.add_cleanup(() => control.remove()); | 
 |   control.type = "checkbox"; | 
 |   control.switch = true; | 
 |   document.body.append(control); | 
 |   let role = await test_driver.get_computed_role(control); | 
 |   assert_equals(role, "switch"); | 
 |   control.switch = false; | 
 |   role = await test_driver.get_computed_role(control); | 
 |   assert_equals(role, "checkbox"); | 
 | }, `Connected <input type=checkbox switch>: removing switch attribute`); | 
 |  | 
 | promise_test(async t => { | 
 |   const control = document.createElement("input"); | 
 |   t.add_cleanup(() => control.remove()); | 
 |   control.type = "checkbox"; | 
 |   document.body.append(control); | 
 |   control.switch = true; | 
 |   let role = await test_driver.get_computed_role(control); | 
 |   assert_equals(role, "switch"); | 
 |   control.removeAttribute("type"); | 
 |   role = await test_driver.get_computed_role(control); | 
 |   assert_equals(role, "textbox"); | 
 | }, `Connected <input type=checkbox switch>: removing type attribute`); | 
 |  | 
 | promise_test(async t => { | 
 |   const control = document.createElement("input"); | 
 |   t.add_cleanup(() => control.remove()); | 
 |   control.switch = true; | 
 |   document.body.append(control); | 
 |   let role = await test_driver.get_computed_role(control); | 
 |   assert_equals(role, "textbox"); | 
 |   control.type = "checkbox"; | 
 |   role = await test_driver.get_computed_role(control); | 
 |   assert_equals(role, "switch"); | 
 | }, `Connected <input type=checkbox switch>: adding type attribute`); |