'use strict'; const common = require('../common'); const assert = require('assert'); const vm = require('vm'); const window = createWindow(); const descriptor = Object.getOwnPropertyDescriptor(window.globalProxy, 'onhashchange'); assert.strictEqual(typeof descriptor.get, 'function'); assert.strictEqual(typeof descriptor.set, 'function'); assert.strictEqual(descriptor.configurable, true); // Regression test for GH-42962. This assignment should not throw. window.globalProxy.onhashchange = () => {}; assert.strictEqual(window.globalProxy.onhashchange, 42); function createWindow() { const obj = {}; vm.createContext(obj); Object.defineProperty(obj, 'onhashchange', { get: common.mustCall(() => 42), set: common.mustCall(), configurable: true }); obj.globalProxy = vm.runInContext('this', obj); return obj; }