test(t => { const popup = window.open(); t.add_cleanup(() => popup.close()); assert_equals(popup.opener, self, "The opener of the popup is me"); assert_equals(Object.getOwnPropertyDescriptor(popup, "opener").writable, undefined); popup.opener = "blah"; assert_equals(popup.opener, "blah", "The popup's opener is now a string"); assert_equals(Object.getOwnPropertyDescriptor(popup, "opener").writable, true); const openerGetter = Object.getOwnPropertyDescriptor(self, "opener").get; const popupOpener = openerGetter.call(popup); assert_equals(popupOpener, self, "The underlying opener of the popup is still me"); }, "Setting popup.opener to a string");