JSFiddle - React, Tailwind, and code Playground

HTML

<canvas id='c'></canvas>
<br>
<div id='d'></div>

JavaScript

function log(t) {
  d.innerText += '\n' + t;
}

function expect(expected, was, desc) {
	const ok = (a.toString() === b.toString());
  const not_str = ok ? '' : ' NOT';
  const text = `[${desc}] Should be `
}

const res = (function(){
	const g = c.getContext('webgl2');
  if (!g)
  	return 'No webgl2.';
    
  const SIZE = 10;
  const LAYERS = 3;
  
  const COLORS = [
  	new Uint8Array([255, 0, 0, 255]),
  	new Uint8Array([0, 255, 0, 255]),
  	new Uint8Array([0, 0, 255, 255]),
  ];
 	const F_COLORS = COLORS.map(x => x.map(y => y / 255.0));
  
  const src_tex = g.createTexture();
  g.bindTexture(g.TEXTURE_2D_ARRAY, src_tex);
  g.texStorage3D(g.TEXTURE_2D_ARRAY, 1, g.RGBA8, SIZE, SIZE, LAYERS);
  const dst_tex = g.createTexture();
  g.bindTexture(g.TEXTURE_2D_ARRAY, dst_tex);
  g.texStorage3D(g.TEXTURE_2D_ARRAY, 1, g.RGBA8, SIZE, SIZE, LAYERS);
  
  const src_fbs = [];
  const dst_fbs = [];
  for (let i in COLORS) {
  	dst_fbs[i] = g.createFramebuffer();
    g.bindFramebuffer(g.FRAMEBUFFER, dst_fbs[i]);
    g.framebufferTextureLayer(g.DRAW_FRAMEBUFFER, g.COLOR_ATTACHMENT0, dst_tex, 0, i);
    
  	src_fbs[i] = g.createFramebuffer();
    g.bindFramebuffer(g.FRAMEBUFFER, src_fbs[i]);
    g.framebufferTextureLayer(g.DRAW_FRAMEBUFFER, g.COLOR_ATTACHMENT0, src_tex, 0, i);
    
  	const c = F_COLORS[i];
    g.clearColor(c[0], c[1], c[2], c[3]);
    g.clear(g.COLOR_BUFFER_BIT);
  }
  
  for (let i in src_fbs) {
    g.bindFramebuffer(g.READ_FRAMEBUFFER, src_fbs[i]);
    const p = new Uint8Array(4);
    g.readPixels(0, 0, 1, 1, g.RGBA, g.UNSIGNED_BYTE, p);
    log(`[cleared] Should be ${COLORS[i]}, was ${p}.`);
  }
  
  for (let i in src_fbs) {
    g.bindFramebuffer(g.READ_FRAMEBUFFER, src_fbs[i]);
    g.bindFramebuffer(g.DRAW_FRAMEBUFFER, dst_fbs[i]);
    g.blitFramebuffer(0, 0, SIZE, SIZE, 0, 0, SIZE, SIZE, g.COLOR_BUFFER_BIT, g.NEAREST);
  }
  
  for (let i in src_fbs) {
    g.bindFramebuffer(g.READ_FRAMEBUFFER, dst_fbs[i]);
    const p = new Uint8Array(4);
   ...