// The increased timeout is especially needed with larger binaries // like in the debug/gpu build jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000; describe('Debugger\'s Playback Behavior', function() { const container = document.createElement('div'); document.body.appendChild(container); beforeEach(function() { container.innerHTML = ``; }); afterEach(function() { container.innerHTML = ''; }); it('can switch to the second frame of an animated skp', function(done) { const filename = '/debugger/anim.mskp' const fetchSkpPromise = fetch(filename); Promise.all([LoadDebugger, fetchSkpPromise]).then((values) => { const response = values[1]; if (!response.ok) { throw new Error("HTTP error, status = " + response.status); } response.arrayBuffer().then((buffer) => { catchException(done, () => { const canvasElement = document.getElementById('debugger_view'); const fileContents = new Uint8Array(buffer); console.log('fetched '+filename); const player = Debugger.SkpFilePlayer(fileContents); const bounds = player.getBounds(); canvasElement.width = bounds.fRight - bounds.fLeft; canvasElement.height = bounds.fBottom - bounds.fTop; expect(canvasElement.width).toBe(1080); expect(canvasElement.height).toBe(1920); const surface = Debugger.MakeWebGLCanvasSurface(canvasElement); expect(surface).toBeTruthy(); const numFrames = player.getFrameCount(); expect(numFrames).toBe(10); let cmd = JSON.parse(player.jsonCommandList(surface)); expect(cmd).toBeTruthy(); // Move to last command in first frame player.drawTo(surface, cmd.commands.length); surface.flush(); // Move to frame two player.changeFrame(1); cmd = JSON.parse(player.jsonCommandList(surface)); expect(cmd).toBeTruthy(); // move to command 100 in frame 2 player.drawTo(surface, 100); surface.flush(); console.log('drew picture to canvas element'); surface.dispose(); done(); })(); }); }); }); });