This is a testharness.js-based test.
Found 77 tests; 2 PASS, 75 FAIL, 0 TIMEOUT, 0 NOTRUN.
PASS getReader({mode: "byob"}) throws on non-bytes streams
FAIL ReadableStream with byte source can be constructed with no errors bytes type is not yet implemented
FAIL getReader({mode}) must perform ToString() bytes type is not yet implemented
FAIL ReadableStream with byte source: Construct and expect start and pull being called bytes type is not yet implemented
FAIL ReadableStream with byte source: No automatic pull call if start doesn't finish bytes type is not yet implemented
FAIL ReadableStream with byte source: Construct with highWaterMark of 0 bytes type is not yet implemented
FAIL ReadableStream with byte source: desiredSize when closed bytes type is not yet implemented
FAIL ReadableStream with byte source: desiredSize when errored bytes type is not yet implemented
FAIL ReadableStream with byte source: getReader(), then releaseLock() bytes type is not yet implemented
FAIL ReadableStream with byte source: getReader() with mode set to byob, then releaseLock() bytes type is not yet implemented
FAIL ReadableStream with byte source: Test that closing a stream does not release a reader automatically bytes type is not yet implemented
FAIL ReadableStream with byte source: Test that closing a stream does not release a BYOB reader automatically bytes type is not yet implemented
FAIL ReadableStream with byte source: Test that erroring a stream does not release a reader automatically bytes type is not yet implemented
FAIL ReadableStream with byte source: Test that erroring a stream does not release a BYOB reader automatically bytes type is not yet implemented
FAIL ReadableStream with byte source: releaseLock() on ReadableStreamReader with pending read() must throw bytes type is not yet implemented
FAIL ReadableStream with byte source: Automatic pull() after start() bytes type is not yet implemented
FAIL ReadableStream with byte source: Automatic pull() after start() and read() bytes type is not yet implemented
FAIL ReadableStream with byte source: autoAllocateChunkSize bytes type is not yet implemented
FAIL ReadableStream with byte source: Mix of auto allocate and BYOB bytes type is not yet implemented
FAIL ReadableStream with byte source: Automatic pull() after start() and read(view) bytes type is not yet implemented
FAIL ReadableStream with byte source: enqueue(), getReader(), then read() bytes type is not yet implemented
FAIL ReadableStream with byte source: Push source that doesn't understand pull signal bytes type is not yet implemented
FAIL ReadableStream with byte source: pull() function is not callable assert_throws: constructor should throw function "() => new ReadableStream({
    pull: 'foo',
    type: 'bytes'
  })" threw object "RangeError: bytes type is not yet implemented" ("RangeError") expected object "TypeError" ("TypeError")
FAIL ReadableStream with byte source: enqueue() with Uint16Array, getReader(), then read() bytes type is not yet implemented
FAIL ReadableStream with byte source: enqueue(), read(view) partially, then read() bytes type is not yet implemented
FAIL ReadableStream with byte source: getReader(), enqueue(), close(), then read() bytes type is not yet implemented
FAIL ReadableStream with byte source: enqueue(), close(), getReader(), then read() bytes type is not yet implemented
FAIL ReadableStream with byte source: Respond to pull() by enqueue() bytes type is not yet implemented
FAIL ReadableStream with byte source: Respond to pull() by enqueue() asynchronously bytes type is not yet implemented
FAIL ReadableStream with byte source: Respond to multiple pull() by separate enqueue() bytes type is not yet implemented
FAIL ReadableStream with byte source: read(view), then respond() bytes type is not yet implemented
FAIL ReadableStream with byte source: read(view), then respond() with a transferred ArrayBuffer bytes type is not yet implemented
FAIL ReadableStream with byte source: read(view), then respond() with too big value bytes type is not yet implemented
FAIL ReadableStream with byte source: respond(3) to read(view) with 2 element Uint16Array enqueues the 1 byte remainder bytes type is not yet implemented
FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) bytes type is not yet implemented
FAIL ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = not BYOB) bytes type is not yet implemented
FAIL ReadableStream with byte source: enqueue(), getReader(), then cancel() (mode = BYOB) bytes type is not yet implemented
FAIL ReadableStream with byte source: getReader(), read(view), then cancel() bytes type is not yet implemented
FAIL ReadableStream with byte source: cancel() with partially filled pending pull() request bytes type is not yet implemented
FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) where view.buffer is not fully covered by view bytes type is not yet implemented
FAIL ReadableStream with byte source: Multiple enqueue(), getReader(), then read(view) bytes type is not yet implemented
FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) with a bigger view bytes type is not yet implemented
FAIL ReadableStream with byte source: enqueue(), getReader(), then read(view) with a smaller views bytes type is not yet implemented
FAIL ReadableStream with byte source: enqueue() 1 byte, getReader(), then read(view) with Uint16Array bytes type is not yet implemented
FAIL ReadableStream with byte source: enqueue() 3 byte, getReader(), then read(view) with 2-element Uint16Array bytes type is not yet implemented
FAIL ReadableStream with byte source: read(view) with Uint16Array on close()-d stream with 1 byte enqueue()-d must fail bytes type is not yet implemented
FAIL ReadableStream with byte source: A stream must be errored if close()-d before fulfilling read(view) with Uint16Array bytes type is not yet implemented
FAIL ReadableStream with byte source: Throw if close()-ed more than once bytes type is not yet implemented
FAIL ReadableStream with byte source: Throw on enqueue() after close() bytes type is not yet implemented
FAIL ReadableStream with byte source: read(view), then respond() and close() in pull() bytes type is not yet implemented
FAIL ReadableStream with byte source: read(view) with Uint32Array, then fill it by multiple respond() calls bytes type is not yet implemented
FAIL ReadableStream with byte source: read() twice, then enqueue() twice bytes type is not yet implemented
FAIL ReadableStream with byte source: Multiple read(view), close() and respond() bytes type is not yet implemented
FAIL ReadableStream with byte source: Multiple read(view), big enqueue() bytes type is not yet implemented
FAIL ReadableStream with byte source: Multiple read(view) and multiple enqueue() bytes type is not yet implemented
FAIL ReadableStream with byte source: read(view) with passing undefined as view must fail bytes type is not yet implemented
FAIL ReadableStream with byte source: read(view) with zero-length view must fail bytes type is not yet implemented
FAIL ReadableStream with byte source: read(view) with passing an empty object as view must fail bytes type is not yet implemented
FAIL ReadableStream with byte source: Even read(view) with passing ArrayBufferView like object as view must fail bytes type is not yet implemented
FAIL ReadableStream with byte source: read() on an errored stream bytes type is not yet implemented
FAIL ReadableStream with byte source: read(), then error() bytes type is not yet implemented
FAIL ReadableStream with byte source: read(view) on an errored stream bytes type is not yet implemented
FAIL ReadableStream with byte source: read(view), then error() bytes type is not yet implemented
FAIL ReadableStream with byte source: Throwing in pull function must error the stream bytes type is not yet implemented
FAIL ReadableStream with byte source: Throwing in pull in response to read() must be ignored if the stream is errored in it bytes type is not yet implemented
FAIL ReadableStream with byte source: Throwing in pull in response to read(view) function must error the stream bytes type is not yet implemented
FAIL ReadableStream with byte source: Throwing in pull in response to read(view) must be ignored if the stream is errored in it bytes type is not yet implemented
FAIL calling respond() twice on the same byobRequest should throw bytes type is not yet implemented
FAIL calling respondWithNewView() twice on the same byobRequest should throw bytes type is not yet implemented
FAIL calling respond(0) twice on the same byobRequest should throw even when closed bytes type is not yet implemented
FAIL pull() resolving should not make releaseLock() possible bytes type is not yet implemented
FAIL ReadableStream with byte source: default reader + autoAllocateChunkSize + byobRequest interaction bytes type is not yet implemented
FAIL ReadableStreamBYOBReader can be constructed directly bytes type is not yet implemented
FAIL ReadableStreamBYOBReader constructor requires a ReadableStream argument bytes type is not yet implemented
FAIL ReadableStreamBYOBReader constructor requires an unlocked ReadableStream bytes type is not yet implemented
FAIL ReadableStreamBYOBReader constructor requires a ReadableStream with type "bytes" bytes type is not yet implemented
PASS ReadableStream constructor should not accept a strategy with a size defined if type is "bytes"
Harness: the test ran to completion.

