Tests behavior under a lost context

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".

Test valid context
PASS gl.isContextLost() is false
PASS gl.getError() is gl.NO_ERROR
PASS gl.enable(gl.BLEND) was expected value: NO_ERROR.
PASS gl.isBuffer(buffer) is true
PASS gl.isEnabled(gl.BLEND) is true
PASS gl.isFramebuffer(framebuffer) is true
PASS gl.isProgram(program) is true
PASS gl.isRenderbuffer(renderbuffer) is true
PASS gl.isShader(shader) is true
PASS gl.isTexture(texture) is true

Lose context

Test lost context
PASS gl.isContextLost() is true
PASS gl.getError() is gl.CONTEXT_LOST_WEBGL
PASS gl.getError() is gl.NO_ERROR
PASS gl.checkFramebufferStatus(gl.FRAMEBUFFER) is gl.FRAMEBUFFER_UNSUPPORTED
PASS gl.getAttribLocation(program, 'u_modelViewProjMatrix') is -1
PASS gl.getVertexAttribOffset(0, gl.VERTEX_ATTRIB_ARRAY_POINTER) is 0
PASS extension.loseContext() was expected value: INVALID_OPERATION.
PASS gl.activeTexture(gl.TEXTURE0) was expected value: NO_ERROR.
PASS gl.attachShader(program, shader) was expected value: NO_ERROR.
PASS gl.bindBuffer(gl.ARRAY_BUFFER, buffer) was expected value: NO_ERROR.
PASS gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer) was expected value: NO_ERROR.
PASS gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer) was expected value: NO_ERROR.
PASS gl.bindTexture(gl.TEXTURE_2D, texture) was expected value: NO_ERROR.
PASS gl.blendColor(1.0, 1.0, 1.0, 1.0) was expected value: NO_ERROR.
PASS gl.blendEquation(gl.FUNC_ADD) was expected value: NO_ERROR.
PASS gl.blendEquationSeparate(gl.FUNC_ADD, gl.FUNC_ADD) was expected value: NO_ERROR.
PASS gl.blendFunc(gl.ONE, gl.ONE) was expected value: NO_ERROR.
PASS gl.blendFuncSeparate(gl.ONE, gl.ONE, gl.ONE, gl.ONE) was expected value: NO_ERROR.
PASS gl.bufferData(gl.ARRAY_BUFFER, 0, gl.STATIC_DRAW) was expected value: NO_ERROR.
PASS gl.bufferData(gl.ARRAY_BUFFER, arrayBufferView, gl.STATIC_DRAW) was expected value: NO_ERROR.
PASS gl.bufferData(gl.ARRAY_BUFFER, arrayBuffer, gl.STATIC_DRAW) was expected value: NO_ERROR.
PASS gl.bufferSubData(gl.ARRAY_BUFFRE, 0, arrayBufferView) was expected value: NO_ERROR.
PASS gl.bufferSubData(gl.ARRAY_BUFFRE, 0, arrayBuffer) was expected value: NO_ERROR.
PASS gl.clear(gl.COLOR_BUFFER_BIT) was expected value: NO_ERROR.
PASS gl.clearColor(1, 1, 1, 1) was expected value: NO_ERROR.
PASS gl.clearDepth(1) was expected value: NO_ERROR.
PASS gl.clearStencil(0) was expected value: NO_ERROR.
PASS gl.colorMask(1, 1, 1, 1) was expected value: NO_ERROR.
PASS gl.compileShader(shader) was expected value: NO_ERROR.
PASS gl.copyTexImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, 0, 0, 0) was expected value: NO_ERROR.
PASS gl.copyTexSubImage2D(gl.TEXTURE_2D, 0, 0, 0, 0, 0, 0, 0) was expected value: NO_ERROR.
PASS gl.cullFace(gl.FRONT) was expected value: NO_ERROR.
PASS gl.deleteBuffer(buffer) was expected value: NO_ERROR.
PASS gl.deleteFramebuffer(framebuffer) was expected value: NO_ERROR.
PASS gl.deleteProgram(program) was expected value: NO_ERROR.
PASS gl.deleteRenderbuffer(renderbuffer) was expected value: NO_ERROR.
PASS gl.deleteShader(shader) was expected value: NO_ERROR.
PASS gl.deleteTexture(texture) was expected value: NO_ERROR.
PASS gl.depthFunc(gl.NEVER) was expected value: NO_ERROR.
PASS gl.depthMask(0) was expected value: NO_ERROR.
PASS gl.depthRange(0, 1) was expected value: NO_ERROR.
PASS gl.detachShader(program, shader) was expected value: NO_ERROR.
PASS gl.disable(gl.BLEND) was expected value: NO_ERROR.
PASS gl.disableVertexAttribArray(0) was expected value: NO_ERROR.
PASS gl.drawArrays(gl.POINTS, 0, 0) was expected value: NO_ERROR.
PASS gl.drawElements(gl.POINTS, 0, gl.UNSIGNED_SHORT, 0) was expected value: NO_ERROR.
PASS gl.enable(gl.BLEND) was expected value: NO_ERROR.
PASS gl.enableVertexAttribArray(0) was expected value: NO_ERROR.
PASS gl.finish() was expected value: NO_ERROR.
PASS gl.flush() was expected value: NO_ERROR.
PASS gl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, renderbuffer) was expected value: NO_ERROR.
PASS gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0) was expected value: NO_ERROR.
PASS gl.frontFace(gl.CW) was expected value: NO_ERROR.
PASS gl.generateMipmap(gl.TEXTURE_2D) was expected value: NO_ERROR.
PASS gl.hint(gl.GENERATE_MIPMAP_HINT, gl.FASTEST) was expected value: NO_ERROR.
PASS gl.lineWidth(0) was expected value: NO_ERROR.
PASS gl.linkProgram(program) was expected value: NO_ERROR.
PASS gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, 0) was expected value: NO_ERROR.
PASS gl.polygonOffset(0, 0) was expected value: NO_ERROR.
PASS gl.readPixels(0, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, arrayBufferView) was expected value: NO_ERROR.
PASS gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA4, 0, 0) was expected value: NO_ERROR.
PASS gl.sampleCoverage(0, 0) was expected value: NO_ERROR.
PASS gl.scissor(0, 0, 0, 0) was expected value: NO_ERROR.
PASS gl.shaderSource(shader, '') was expected value: NO_ERROR.
PASS gl.stencilFunc(gl.NEVER, 0, 0) was expected value: NO_ERROR.
PASS gl.stencilFuncSeparate(gl.FRONT, gl.NEVER, 0, 0) was expected value: NO_ERROR.
PASS gl.stencilMask(0) was expected value: NO_ERROR.
PASS gl.stencilMaskSeparate(gl.FRONT, 0) was expected value: NO_ERROR.
PASS gl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP) was expected value: NO_ERROR.
PASS gl.stencilOpSeparate(gl.FRONT, gl.KEEP, gl.KEEP, gl.KEEP) was expected value: NO_ERROR.
PASS gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, arrayBufferView) was expected value: NO_ERROR.
PASS gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, imageData) was expected value: NO_ERROR.
PASS gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image) was expected value: NO_ERROR.
PASS gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, canvas) was expected value: NO_ERROR.
PASS gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, video) was expected value: NO_ERROR.
PASS gl.texParameterf(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST) was expected value: NO_ERROR.
PASS gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST) was expected value: NO_ERROR.
PASS gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, arrayBufferView) was expected value: NO_ERROR.
PASS gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, imageData) was expected value: NO_ERROR.
PASS gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, image) was expected value: NO_ERROR.
PASS gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, canvas) was expected value: NO_ERROR.
PASS gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, video) was expected value: NO_ERROR.
PASS gl.uniform1f(uniformLocation, 0) was expected value: NO_ERROR.
PASS gl.uniform1fv(uniformLocation, float32array) was expected value: NO_ERROR.
PASS gl.uniform1fv(uniformLocation, [0]) was expected value: NO_ERROR.
PASS gl.uniform1i(uniformLocation, 0) was expected value: NO_ERROR.
PASS gl.uniform1iv(uniformLocation, int32array) was expected value: NO_ERROR.
PASS gl.uniform1iv(uniformLocation, [0]) was expected value: NO_ERROR.
PASS gl.uniform2f(uniformLocation, 0, 0) was expected value: NO_ERROR.
PASS gl.uniform2fv(uniformLocation, float32array) was expected value: NO_ERROR.
PASS gl.uniform2fv(uniformLocation, [0, 0]) was expected value: NO_ERROR.
PASS gl.uniform2i(uniformLocation, 0, 0) was expected value: NO_ERROR.
PASS gl.uniform2iv(uniformLocation, int32array) was expected value: NO_ERROR.
PASS gl.uniform2iv(uniformLocation, [0, 0]) was expected value: NO_ERROR.
PASS gl.uniform3f(uniformLocation, 0, 0, 0) was expected value: NO_ERROR.
PASS gl.uniform3fv(uniformLocation, float32array) was expected value: NO_ERROR.
PASS gl.uniform3fv(uniformLocation, [0, 0, 0]) was expected value: NO_ERROR.
PASS gl.uniform3i(uniformLocation, 0, 0, 0) was expected value: NO_ERROR.
PASS gl.uniform3iv(uniformLocation, int32array) was expected value: NO_ERROR.
PASS gl.uniform3iv(uniformLocation, [0, 0, 0]) was expected value: NO_ERROR.
PASS gl.uniform4f(uniformLocation, 0, 0, 0, 0) was expected value: NO_ERROR.
PASS gl.uniform4fv(uniformLocation, float32array) was expected value: NO_ERROR.
PASS gl.uniform4fv(uniformLocation, [0, 0, 0, 0]) was expected value: NO_ERROR.
PASS gl.uniform4i(uniformLocation, 0, 0, 0, 0) was expected value: NO_ERROR.
PASS gl.uniform4iv(uniformLocation, int32array) was expected value: NO_ERROR.
PASS gl.uniform4iv(uniformLocation, [0, 0, 0, 0]) was expected value: NO_ERROR.
PASS gl.uniformMatrix2fv(uniformLocation, false, float32array) was expected value: NO_ERROR.
PASS gl.uniformMatrix2fv(uniformLocation, false, [0, 0, 0, 0]) was expected value: NO_ERROR.
PASS gl.uniformMatrix3fv(uniformLocation, false, float32array) was expected value: NO_ERROR.
PASS gl.uniformMatrix3fv(uniformLocation, false, [0, 0, 0, 0, 0, 0, 0, 0, 0]) was expected value: NO_ERROR.
PASS gl.uniformMatrix4fv(uniformLocation, false, float32array) was expected value: NO_ERROR.
PASS gl.uniformMatrix4fv(uniformLocation, false, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) was expected value: NO_ERROR.
PASS gl.useProgram(program) was expected value: NO_ERROR.
PASS gl.validateProgram(program) was expected value: NO_ERROR.
PASS gl.vertexAttrib1f(0, 0) was expected value: NO_ERROR.
PASS gl.vertexAttrib1fv(0, float32array) was expected value: NO_ERROR.
PASS gl.vertexAttrib1fv(0, [0]) was expected value: NO_ERROR.
PASS gl.vertexAttrib2f(0, 0, 0) was expected value: NO_ERROR.
PASS gl.vertexAttrib2fv(0, float32array) was expected value: NO_ERROR.
PASS gl.vertexAttrib2fv(0, [0, 0]) was expected value: NO_ERROR.
PASS gl.vertexAttrib3f(0, 0, 0, 0) was expected value: NO_ERROR.
PASS gl.vertexAttrib3fv(0, float32array) was expected value: NO_ERROR.
PASS gl.vertexAttrib3fv(0, [0, 0, 0]) was expected value: NO_ERROR.
PASS gl.vertexAttrib4f(0, 0, 0, 0, 0) was expected value: NO_ERROR.
PASS gl.vertexAttrib4fv(0, float32array) was expected value: NO_ERROR.
PASS gl.vertexAttrib4fv(0, [0, 0, 0, 0]) was expected value: NO_ERROR.
PASS gl.vertexAttribPointer(0, 0, gl.FLOAT, false, 0, 0) was expected value: NO_ERROR.
PASS gl.viewport(0, 0, 0, 0) was expected value: NO_ERROR.
PASS gl.createBuffer() is null
PASS gl.createFramebuffer() is null
PASS gl.createProgram() is null
PASS gl.createRenderbuffer() is null
PASS gl.createShader(gl.GL_VERTEX_SHADER) is null
PASS gl.createTexture() is null
PASS gl.getActiveAttrib(program, 0) is null
PASS gl.getActiveUniform(program, 0) is null
PASS gl.getAttachedShaders(program) is null
PASS gl.getBufferParameter(gl.ARRAY_BUFFER, gl.BUFFER_SIZE) is null
PASS gl.getContextAttributes() is null
PASS gl.getFramebufferAttachmentParameter(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.FRAMEBUFFER_ATTACHMENT_OBJECT_NAME) is null
PASS gl.getParameter(gl.CURRENT_PROGRAM) is null
PASS gl.getProgramInfoLog(program) is null
PASS gl.getProgramParameter(program, gl.LINK_STATUS) is null
PASS gl.getRenderbufferParameter(gl.RENDERBUFFER, gl.RENDERBUFFER_WIDTH) is null
PASS gl.getShaderInfoLog(shader) is null
PASS gl.getShaderParameter(shader, gl.SHADER_TYPE) is null
PASS gl.getShaderSource(shader) is null
PASS gl.getTexParameter(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S) is null
PASS gl.getUniform(program, uniformLocation) is null
PASS gl.getUniformLocation(program, 'vPosition') is null
PASS gl.getVertexAttrib(0, gl.VERTEX_ATTRIB_ARRAY_BUFFER_BINDING) is null
PASS gl.getSupportedExtensions() is null
PASS gl.getExtension('WEBGL_lose_context') is null
PASS gl.isBuffer(buffer) is false
PASS gl.isEnabled(gl.BLEND) is false
PASS gl.isFramebuffer(framebuffer) is false
PASS gl.isProgram(program) is false
PASS gl.isRenderbuffer(renderbuffer) is false
PASS gl.isShader(shader) is false
PASS gl.isTexture(texture) is false
PASS gl.getError() is gl.NO_ERROR

PASS successfullyParsed is true

TEST COMPLETE

