This test runs the WebGL Test listed below in an iframe and reports PASS or FAIL.

Test: ../../resources/webgl_test_files/conformance2/state/gl-get-calls.html
[ 1: PASS ] context exists
[ 2: PASS ] context contains getError
[ 3: PASS ] context.getParameter(context.COPY_READ_BUFFER_BINDING) is null
[ 4: PASS ] context.getParameter(context.COPY_WRITE_BUFFER_BINDING) is null
[ 5: PASS ] context.getParameter(context.DRAW_BUFFER0) is context.BACK
[ 6: PASS ] context.getParameter(context.DRAW_FRAMEBUFFER_BINDING) is null
[ 7: PASS ] context.getParameter(context.FRAGMENT_SHADER_DERIVATIVE_HINT) is context.DONT_CARE
[ 8: PASS ] context.getParameter(context.PACK_ROW_LENGTH) is 0
[ 9: PASS ] context.getParameter(context.PACK_SKIP_PIXELS) is 0
[ 10: PASS ] context.getParameter(context.PACK_SKIP_ROWS) is 0
[ 11: PASS ] context.getParameter(context.PIXEL_PACK_BUFFER_BINDING) is null
[ 12: PASS ] context.getParameter(context.PIXEL_UNPACK_BUFFER_BINDING) is null
[ 13: PASS ] context.getParameter(context.RASTERIZER_DISCARD) is false
[ 14: FAIL ] context.getParameter(context.READ_BUFFER) should be 1029 (of type number). Was null (of type object).
[ 15: PASS ] context.getParameter(context.READ_FRAMEBUFFER_BINDING) is null
[ 16: PASS ] context.getParameter(context.SAMPLE_ALPHA_TO_COVERAGE) is false
[ 17: PASS ] context.getParameter(context.SAMPLE_COVERAGE) is false
[ 18: PASS ] context.getParameter(context.SAMPLER_BINDING) is null
[ 19: PASS ] context.getParameter(context.TEXTURE_BINDING_2D_ARRAY) is null
[ 20: PASS ] context.getParameter(context.TEXTURE_BINDING_3D) is null
[ 21: PASS ] context.getParameter(context.TRANSFORM_FEEDBACK_ACTIVE) is false
[ 22: PASS ] context.getParameter(context.TRANSFORM_FEEDBACK_BINDING) is null
[ 23: PASS ] context.getParameter(context.TRANSFORM_FEEDBACK_BUFFER_BINDING) is null
[ 24: PASS ] context.getParameter(context.TRANSFORM_FEEDBACK_PAUSED) is false
[ 25: PASS ] context.getParameter(context.UNIFORM_BUFFER_BINDING) is null
[ 26: PASS ] context.getParameter(context.UNPACK_IMAGE_HEIGHT) is 0
[ 27: PASS ] context.getParameter(context.UNPACK_ROW_LENGTH) is 0
[ 28: PASS ] context.getParameter(context.UNPACK_SKIP_IMAGES) is 0
[ 29: PASS ] context.getParameter(context.UNPACK_SKIP_PIXELS) is 0
[ 30: PASS ] context.getParameter(context.UNPACK_SKIP_ROWS) is 0
[ 31: PASS ] context.getParameter(context.VERTEX_ARRAY_BINDING) is null
[ 32: PASS ] context.getParameter(context.MAX_3D_TEXTURE_SIZE) is >= 256
[ 33: PASS ] context.getParameter(context.MAX_3D_TEXTURE_SIZE) is an instance of Number
[ 34: PASS ] context.getParameter(context.MAX_ARRAY_TEXTURE_LAYERS) is >= 256
[ 35: PASS ] context.getParameter(context.MAX_ARRAY_TEXTURE_LAYERS) is an instance of Number
[ 36: PASS ] context.getParameter(context.MAX_CLIENT_WAIT_TIMEOUT_WEBGL) is >= 0
[ 37: FAIL ] context.getParameter(context.MAX_CLIENT_WAIT_TIMEOUT_WEBGL) is not an instance of Number
[ 38: PASS ] context.getParameter(context.MAX_COLOR_ATTACHMENTS) is >= 4
[ 39: PASS ] context.getParameter(context.MAX_COLOR_ATTACHMENTS) is an instance of Number
[ 40: PASS ] context.getParameter(context.MAX_COMBINED_UNIFORM_BLOCKS) is >= 24
[ 41: PASS ] context.getParameter(context.MAX_COMBINED_UNIFORM_BLOCKS) is an instance of Number
[ 42: PASS ] context.getParameter(context.MAX_DRAW_BUFFERS) is >= 4
[ 43: PASS ] context.getParameter(context.MAX_DRAW_BUFFERS) is an instance of Number
[ 44: FAIL ] context.getParameter(context.MAX_ELEMENT_INDEX) should be >= 16777215. Was 0 (of type number).
[ 45: PASS ] context.getParameter(context.MAX_ELEMENT_INDEX) is an instance of Number
[ 46: PASS ] context.getParameter(context.MAX_ELEMENTS_INDICES) is an instance of Number
[ 47: PASS ] context.getParameter(context.MAX_ELEMENTS_VERTICES) is an instance of Number
[ 48: FAIL ] context.getParameter(context.MAX_FRAGMENT_INPUT_COMPONENTS) should be >= 60. Was null (of type object).
[ 49: FAIL ] context.getParameter(context.MAX_FRAGMENT_INPUT_COMPONENTS) is not an instance of Number
[ 50: PASS ] context.getParameter(context.MAX_FRAGMENT_UNIFORM_BLOCKS) is >= 12
[ 51: FAIL ] context.getParameter(context.MAX_FRAGMENT_INPUT_COMPONENTS) is not an instance of Number
[ 52: PASS ] context.getParameter(context.MAX_FRAGMENT_UNIFORM_COMPONENTS) is >= 896
[ 53: PASS ] context.getParameter(context.MAX_FRAGMENT_UNIFORM_COMPONENTS) is an instance of Number
[ 54: PASS ] context.getParameter(context.MAX_PROGRAM_TEXEL_OFFSET) is >= 7
[ 55: PASS ] context.getParameter(context.MAX_PROGRAM_TEXEL_OFFSET) is an instance of Number
[ 56: PASS ] context.getParameter(context.MAX_SAMPLES) is >= 4
[ 57: PASS ] context.getParameter(context.MAX_PROGRAM_TEXEL_OFFSET) is an instance of Number
[ 58: PASS ] context.getParameter(context.MAX_SERVER_WAIT_TIMEOUT) is >= 0
[ 59: PASS ] context.getParameter(context.MAX_SERVER_WAIT_TIMEOUT) is an instance of Number
[ 60: PASS ] context.getParameter(context.MAX_TEXTURE_LOD_BIAS) is >= 2.0
[ 61: PASS ] context.getParameter(context.MAX_TEXTURE_LOD_BIAS) is an instance of Number
[ 62: PASS ] context.getParameter(context.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS) is >= 64
[ 63: PASS ] context.getParameter(context.MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS) is an instance of Number
[ 64: PASS ] context.getParameter(context.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS) is >= 4
[ 65: PASS ] context.getParameter(context.MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS) is an instance of Number
[ 66: PASS ] context.getParameter(context.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS) is >= 4
[ 67: PASS ] context.getParameter(context.MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS) is an instance of Number
[ 68: FAIL ] context.getParameter(context.MAX_UNIFORM_BLOCK_SIZE) should be >= 16384. Was 0 (of type number).
[ 69: PASS ] context.getParameter(context.MAX_UNIFORM_BLOCK_SIZE) is an instance of Number
[ 70: PASS ] context.getParameter(context.MAX_UNIFORM_BUFFER_BINDINGS) is >= 24
[ 71: PASS ] context.getParameter(context.MAX_UNIFORM_BUFFER_BINDINGS) is an instance of Number
[ 72: FAIL ] context.getParameter(context.MAX_VARYING_COMPONENTS) should be >= 60. Was 0 (of type number).
[ 73: PASS ] context.getParameter(context.MAX_VARYING_COMPONENTS) is an instance of Number
[ 74: PASS ] context.getParameter(context.MAX_VERTEX_OUTPUT_COMPONENTS) is >= 64
[ 75: PASS ] context.getParameter(context.MAX_VERTEX_OUTPUT_COMPONENTS) is an instance of Number
[ 76: PASS ] context.getParameter(context.MAX_VERTEX_UNIFORM_BLOCKS) is >= 12
[ 77: PASS ] context.getParameter(context.MAX_VERTEX_UNIFORM_BLOCKS) is an instance of Number
[ 78: PASS ] context.getParameter(context.MAX_VERTEX_UNIFORM_COMPONENTS) is >= 1024
[ 79: PASS ] context.getParameter(context.MAX_VERTEX_UNIFORM_COMPONENTS) is an instance of Number
[ 80: PASS ] context.getParameter(context.MIN_PROGRAM_TEXEL_OFFSET) is <= -8
[ 81: PASS ] context.getParameter(context.MIN_PROGRAM_TEXEL_OFFSET) is an instance of Number
[ 82: PASS ] context.getParameter(context.UNIFORM_BUFFER_OFFSET_ALIGNMENT) is >= 1
[ 83: PASS ] context.getParameter(context.UNIFORM_BUFFER_OFFSET_ALIGNMENT) is an instance of Number
[ 84: FAIL ] context.getParameter(context.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS) should be >= 4096. Was 0 (of type number).
[ 85: PASS ] context.getParameter(context.MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS) is an instance of Number
[ 86: FAIL ] context.getParameter(context.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS) should be >= 4096. Was 0 (of type number).
[ 87: PASS ] context.getParameter(context.MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS) is an instance of Number
[ 88: FAIL ] context.getError() should be 0. Was 1280.
[ 89: PASS ] successfullyParsed is true
[ FAIL ] 11 failures reported

