This is a testharness.js-based test.
PASS Update the registration with a different script type (classic => module).
PASS Update the registration with a different script type (module => classic).
PASS Update the registration with a different script type (classic => module) and with a same main script.
PASS Update the registration with a different script type (module => classic) and with a same main script.
PASS Does not update the registration with the same script type and the same main script.
FAIL Update the registration with a different script type (classic => module) and with a same main script. Expect evaluation failed. assert_unreached: Should have rejected: Registering with invalid evaluation should be failed. Reached unreachable code
PASS Update the registration with a different script type (module => classic) and with a same main script. Expect evaluation failed.
Harness: the test ran to completion.

