Skip to content

Commit eb99bea

Browse files
authored
fix: snapshot live HTMLCollection before removing oscilloscope canvases (#7740)
1 parent 5f7d181 commit eb99bea

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

js/widgets/__tests__/oscilloscope.test.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,29 @@ describe("Oscilloscope", () => {
365365
});
366366
});
367367

368+
describe("_scale", () => {
369+
test("removes all existing oscilloscopeCanvas elements, not just half", () => {
370+
const osc = createOscilloscope();
371+
const widgetBody = osc.widgetWindow.getWidgetBody();
372+
// document.getElementsByClassName (used inside _scale) only searches
373+
// elements attached to the live document tree.
374+
document.body.appendChild(widgetBody);
375+
376+
for (let i = 0; i < 4; i++) {
377+
const canvas = document.createElement("canvas");
378+
canvas.className = "oscilloscopeCanvas";
379+
widgetBody.appendChild(canvas);
380+
}
381+
expect(document.getElementsByClassName("oscilloscopeCanvas").length).toBe(4);
382+
383+
osc._scale();
384+
385+
expect(document.getElementsByClassName("oscilloscopeCanvas").length).toBe(0);
386+
387+
document.body.removeChild(widgetBody);
388+
});
389+
});
390+
368391
describe("close", () => {
369392
test("calls _stopAnimation", () => {
370393
const osc = createOscilloscope();

js/widgets/oscilloscope.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ class Oscilloscope {
295295
let width, height;
296296

297297
const canvases = document.getElementsByClassName("oscilloscopeCanvas");
298-
Array.prototype.forEach.call(canvases, ele => {
298+
Array.from(canvases).forEach(ele => {
299299
this.widgetWindow.getWidgetBody().removeChild(ele);
300300
});
301301

0 commit comments

Comments
 (0)