const actualOrder = []; const track = i => { actualOrder.push(i); return i; }; class MyClass { static [track(1)] = track(10); [track(2)] = track(13); get [track(3)]() { return "foo"; } set [track(4)](value) { this.bar = value; } [track(5)] = track(14); static [track(6)] = track(11); static [track(7)] = track(12); [track(8)]() {} [track(9)] = track(15); } const inst = new MyClass(); const expectedOrder = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]; expect(actualOrder).toEqual(expectedOrder); expect(MyClass[1]).toBe(10); expect(inst[2]).toBe(13); expect(inst[3]).toBe("foo"); inst[4] = "baz"; expect(inst.bar).toBe("baz"); expect(inst[5]).toBe(14); expect(MyClass[6]).toBe(11); expect(MyClass[7]).toBe(12); expect(typeof inst[8]).toBe("function"); expect(inst[9]).toBe(15);