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, canvas2d) 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, canvas2d) 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 OES_vertex_array_object.bindVertexArrayOES(vertexArrayObject) was expected value: NO_ERROR.
PASS OES_vertex_array_object.isVertexArrayOES(vertexArrayObject) was expected value: NO_ERROR.
PASS OES_vertex_array_object.deleteVertexArrayOES(vertexArrayObject) was expected value: NO_ERROR.
PASS OES_vertex_array_object.createVertexArrayOES() is null

PASS successfullyParsed is true

TEST COMPLETE

