Best JavaScript code snippet using playwright-internal
Graphics.js
Source: Graphics.js
...45 var ddF_x = 1;46 var ddF_y = -2 * r;47 var x = 0;48 var y = r;49 this.drawPixel(x0, y0 + r, color);50 this.drawPixel(x0, y0 - r, color);51 this.drawPixel(x0 + r, y0, color);52 this.drawPixel(x0 - r, y0, color);53 while (x < y) {54 if (f >= 0) {55 y--;56 ddF_y += 2;57 f += ddF_y;58 }59 x++;60 ddF_x += 2;61 f += ddF_x;62 this.drawPixel(x0 + x, y0 + y, color);63 this.drawPixel(x0 - x, y0 + y, color);64 this.drawPixel(x0 + x, y0 - y, color);65 this.drawPixel(x0 - x, y0 - y, color);66 this.drawPixel(x0 + y, y0 + x, color);67 this.drawPixel(x0 - y, y0 + x, color);68 this.drawPixel(x0 + y, y0 - x, color);69 this.drawPixel(x0 - y, y0 - x, color);70 }71 },72 drawChar: function(x, y, c, color, bg, size) {73 if ((x >= this._width) || // Clip right74 (y >= this._height) || // Clip bottom75 ((x + 6 * size - 1) < 0) || // Clip left76 ((y + 8 * size - 1) < 0)) // Clip top77 return;78 if (!this._cp437 && (c >= 176)) {79 c++;80 }81 for (var i = 0; i < 6; i++) {82 var line;83 if (i == 5) {84 line = 0x0;85 } else {86 line = FONT[c * 5 + i];87 }88 for (var j = 0; j < 8; j++) {89 if (line & 0x1) {90 if (size == 1) {91 this.drawPixel(x + i, y + j, color);92 } else {93 this.fillRect(x + (i * size), y + (j * size), size, size, color);94 }95 } else if (bg != color) {96 if (size == 1) {97 this.drawPixel(x + i, y + j, bg);98 } else {99 this.fillRect(x + i * size, y + j * size, size, size, bg);100 }101 }102 line >>= 1;103 }104 }105 },106 setCursor: function(x, y) {107 this.cursor_x = x;108 this.cursor_y = y;109 },110 setTextSize: function(s) {111 this.textsize = (s > 0) ? s : 1;112 },113 setTextColor: function(c, b) {114 this.textcolor = c;115 if (b === undefined) {116 this.textbgcolor = c;117 } else {118 this.textbgcolor = b;119 }120 },121 write: function(c) {122 if (typeof c === "string") {123 if (c.length === 1) {124 c = c.charCodeAt(0);125 } else {126 trace("Call print or println instead of write with strings!\n")127 return;128 }129 }130 if (c === 10) { //\n131 this.cursor_y += this.textsize * 8;132 this.cursor_x = 0;133 } else if (c === 13) { //\r134 //skip135 } else {136 this.drawChar(this.cursor_x, this.cursor_y, c, this.textcolor, this.textbgcolor, this.textsize);137 this.cursor_x += this.textsize * 6;138 if (this.wrap && (this.cursor_x > (this._width - this.textsize * 6))) {139 this.cursor_y += this.textsize * 8;140 this.cursor_x = 0;141 }142 }143 return 1;144 },145 println: function(text) {146 if (text !== undefined) {147 text = text.toString()148 for (var i = 0; i < text.length; i++) {149 this.write(text.charCodeAt(i));150 }151 }152 this.write('\n');153 },154 print: function(text) {155 for (var i = 0; i < text.length; i++) {156 this.write(text.charCodeAt(i));157 }158 },159 //should have thought of drawpixel earlier for conversion... just go through bit by bit160 //if this errors, make sure the dimensions are a multiple of 8161 drawBitmap: function(x, y, bitmap, w, h, color, bgcolor) {162 var byteWidth = (w + 7) >> 3; //equivalent to Math.ceil163 for (var j = 0; j < h; j++) {164 for (var i = 0; i < w; i++) {165 if (bitmap[j * byteWidth + (i >> 3)] & (128 >> (i & 7))) {166 this.drawPixel(x + i, y + j, color);167 } else if (bgcolor !== undefined) {168 this.drawPixel(x + i, y + j, bgcolor);169 }170 }171 }172 },173 //Draw XBitMap Files (*.xbm), exported from GIMP,174 //Usage: Export from GIMP to *.xbm, rename *.xbm to *.c and open in editor.175 //C Array can be directly used with this function176 //the byte order is just the reverse of drawBitmap; i.e, first bit of each byte corresponds to the rightmost pixel of the chunk it represents and the rightmost bit is the left most pixel177 drawXBitmap: function(x, y, bitmap, w, h, color) {178 var byteWidth = Math.floor((w + 7) / 8);179 for (var j = 0; j < h; j++) {180 for (var i = 0; i < w; i++) {181 if (bitmap[j * byteWidth + (i >> 3)] & (1 << (i & 7))) {182 this.drawPixel(x + i, y + j, color);183 }184 }185 }186 },187 drawLine: function(x0, y0, x1, y1, color) {188 var steep = Math.abs(y1 - y0) > Math.abs(x1 - x0);189 if (steep) {190 //swap x0 and y0 191 //thanks http://stackoverflow.com/questions/16201656/how-to-swap-two-variables-in-javascript192 x0 = [y0, y0 = x0][0]193 x1 = [y1, y1 = x1][0]194 }195 if (x0 > x1) {196 x0 = [x1, x1 = x0][0]197 y0 = [y1, y1 = y0][0]198 }199 var dx = x1 - x0;200 var dy = Math.abs(y1 - y0);201 var err = dx / 2;202 var ystep;203 if (y0 < y1) {204 ystep = 1;205 } else {206 ystep = -1;207 }208 for (; x0 <= x1; x0++) {209 if (steep) {210 this.drawPixel(y0, x0, color);211 } else {212 this.drawPixel(x0, y0, color);213 }214 err -= dy;215 if (err < 0) {216 y0 += ystep;217 err += dx;218 }219 }220 },221 drawFastHLine: function(x, y, w, color) {222 //implement native one223 this.drawLine(x, y, x + w - 1, y, color);224 },225 drawFastVLine: function(x, y, h, color) {226 this.drawLine(x, y, x, y + h - 1, color);227 },228 drawRect: function(x, y, w, h, color) {229 this.drawFastHLine(x, y, w, color);230 this.drawFastHLine(x, y + h - 1, w, color);231 this.drawFastVLine(x, y, h, color);232 this.drawFastVLine(x + w - 1, y, h, color);233 },234 fillRect: function(x, y, w, h, color) {235 for (var i = x; i < x + w; i++) {236 this.drawFastVLine(i, y, h, color);237 }238 },239 fillCircle: function(x0, y0, r, color) {240 this.drawFastVLine(x0, y0 - r, 2 * r + 1, color);241 this.fillCircleHelper(x0, y0, r, 3, 0, color);242 },243 fillCircleHelper: function(x0, y0, r, cornername, delta, color) {244 var f = 1 - r;245 var ddF_x = 1;246 var ddF_y = -2 * r;247 var x = 0;248 var y = r;249 while (x < y) {250 if (f >= 0) {251 y--;252 ddF_y += 2;253 f += ddF_y;254 }255 x++;256 ddF_x += 2;257 f += ddF_x;258 if (cornername & 0x1) {259 this.drawFastVLine(x0 + x, y0 - y, 2 * y + 1 + delta, color);260 this.drawFastVLine(x0 + y, y0 - x, 2 * x + 1 + delta, color);261 }262 if (cornername & 0x2) {263 this.drawFastVLine(x0 - x, y0 - y, 2 * y + 1 + delta, color);264 this.drawFastVLine(x0 - y, y0 - x, 2 * x + 1 + delta, color);265 }266 }267 },268 drawRoundRect: function(x, y, w, h, r, color) {269 // smarter version270 this.drawFastHLine(x + r, y, w - 2 * r, color); // Top271 this.drawFastHLine(x + r, y + h - 1, w - 2 * r, color); // Bottom272 this.drawFastVLine(x, y + r, h - 2 * r, color); // Left273 this.drawFastVLine(x + w - 1, y + r, h - 2 * r, color); // Right274 // draw four corners275 this.drawCircleHelper(x + r, y + r, r, 1, color);276 this.drawCircleHelper(x + w - r - 1, y + r, r, 2, color);277 this.drawCircleHelper(x + w - r - 1, y + h - r - 1, r, 4, color);278 this.drawCircleHelper(x + r, y + h - r - 1, r, 8, color);279 },280 drawCircleHelper: function(x0, y0, r, cornername, color) {281 var f = 1 - r;282 var ddF_x = 1;283 var ddF_y = -2 * r;284 var x = 0;285 var y = r;286 while (x < y) {287 if (f >= 0) {288 y--;289 ddF_y += 2;290 f += ddF_y;291 }292 x++;293 ddF_x += 2;294 f += ddF_x;295 if (cornername & 0x4) {296 this.drawPixel(x0 + x, y0 + y, color);297 this.drawPixel(x0 + y, y0 + x, color);298 }299 if (cornername & 0x2) {300 this.drawPixel(x0 + x, y0 - y, color);301 this.drawPixel(x0 + y, y0 - x, color);302 }303 if (cornername & 0x8) {304 this.drawPixel(x0 - y, y0 + x, color);305 this.drawPixel(x0 - x, y0 + y, color);306 }307 if (cornername & 0x1) {308 this.drawPixel(x0 - y, y0 - x, color);309 this.drawPixel(x0 - x, y0 - y, color);310 }311 }312 },313 fillRoundRect: function(x, y, w, h, r, color) {314 this.fillRect(x + r, y, w - 2 * r, h, color);315 // draw four corners316 this.fillCircleHelper(x + w - r - 1, y + r, r, 1, h - 2 * r - 1, color);317 this.fillCircleHelper(x + r, y + r, r, 2, h - 2 * r - 1, color);318 },319 drawTriangle: function(x0, y0, x1, y1, x2, y2, color) {320 this.drawLine(x0, y0, x1, y1, color);321 this.drawLine(x1, y1, x2, y2, color);322 this.drawLine(x2, y2, x0, y0, color);323 },...
index.js
Source: index.js
...58 if(grid[(y + 1)][x] == 0) {59 grid[y][x] = 0;60 grid[(y + 1)][x] = 1;61 clearPixel(x, y)62 drawPixel(x, (y + 1), sandColor);63 continue;64 }65 if(grid[(y + 1)][(x + 1)] == 0 && grid[(y + 1)][(x - 1)] == 0) {66 var random = Math.floor(Math.random() * (10 - 0 + 1)) + 1;67 if(random > 5) {68 grid[y][x] = 0;69 grid[(y + 1)][(x - 1)] = 1;70 71 clearPixel(x, y);72 drawPixel((x - 1), (y + 1), sandColor);73 } else {74 grid[y][x] = 0;75 grid[(y + 1)][(x + 1)] = 1;76 clearPixel(x, y);77 drawPixel((x + 1), (y + 1), sandColor);78 }79 continue;80 }81 if(grid[(y + 1)][(x + 1)] == 0) {82 grid[y][x] = 0;83 grid[(y + 1)][(x + 1)] = 1;84 clearPixel(x, y);85 drawPixel((x + 1), (y + 1), sandColor);86 continue;87 }88 if(grid[(y + 1)][(x - 1)] == 0) {89 grid[y][x] = 0;90 grid[(y + 1)][(x - 1)] = 1;91 clearPixel(x, y);92 drawPixel((x - 1), (y + 1), sandColor);93 continue;94 }95 //Sand in Water96 if(grid[(y + 1)][(x + 1)] == 2 && grid[(y + 1)][(x - 1)] == 2) {97 var random = Math.floor(Math.random() * (10 - 0 + 1)) + 1;98 if(random > 5) {99 grid[y][x] = 2;100 grid[(y + 1)][(x + 1)] = 1;101 clearPixel(x, y);102 drawPixel(x, y, waterColor);103 drawPixel((x + 1), (y + 1), sandColor);104 } else {105 grid[y][x] = 2;106 grid[(y + 1)][(x - 1)] = 1;107 108 clearPixel(x, y)109 drawPixel(x, y, waterColor);110 drawPixel((x - 1), (y + 1), sandColor);111 }112 continue;113 }114 if(grid[(y + 1)][x] == 2) {115 grid[y][x] = 2;116 grid[(y + 1)][x] = 1;117 drawPixel(x, y, waterColor);118 drawPixel(x, (y + 1), sandColor);119 continue;120 }121 if(grid[(y + 1)][(x + 1)] == 2) {122 grid[y][x] = 2;123 grid[(y + 1)][(x + 1)] = 1;124 drawPixel(x, y, waterColor);125 drawPixel((x + 1), (y + 1), sandColor);126 continue;127 }128 if(grid[(y + 1)][(x - 1)] == 2) {129 grid[y][x] = 2;130 grid[(y + 1)][(x - 1)] = 1;131 drawPixel(x, y, waterColor);132 drawPixel((x - 1), (y + 1), sandColor);133 continue;134 }135 }136 //WATER137 if(grid[y][x] == 2) {138 var waterColor = colors.get(2)[colorIndex];139 if(grid[(y + 1)][x] == 0) {140 grid[y][x] = 0;141 grid[(y + 1)][x] = 2;142 clearPixel(x, y)143 drawPixel(x, (y + 1), waterColor);144 continue;145 }146 if(grid[(y + 1)][(x + 1)] == 0 && grid[(y + 1)][(x - 1)] == 0) {147 var random = Math.floor(Math.random() * (10 - 0 + 1)) + 1;148 if(random > 5) {149 grid[y][x] = 0;150 grid[(y + 1)][(x - 1)] = 2;151 152 clearPixel(x, y);153 drawPixel((x - 1), (y + 1), waterColor);154 } else {155 grid[y][x] = 0;156 grid[(y + 1)][(x + 1)] = 2;157 clearPixel(x, y);158 drawPixel((x + 1), (y + 1), waterColor);159 }160 continue;161 }162 if(grid[(y + 1)][(x + 1)] == 0) {163 grid[y][x] = 0;164 grid[(y + 1)][(x + 1)] = 2;165 clearPixel(x, y);166 drawPixel((x + 1), (y + 1), waterColor);167 continue;168 }169 if(grid[(y + 1)][(x - 1)] == 0) {170 grid[y][x] = 0;171 grid[(y + 1)][(x - 1)] = 2;172 clearPixel(x, y);173 drawPixel((x - 1), (y + 1), waterColor);174 continue;175 }176 if(grid[y][(x + 1)] == 0) {177 grid[y][x] = 0;178 grid[y][(x + 1)] = 2;179 clearPixel(x, y);180 drawPixel((x + 1), y, waterColor);181 continue;182 }183 if(grid[y][(x - 1)] == 0) {184 grid[y][x] = 0;185 grid[y][(x - 1)] = 2;186 clearPixel(x, y);187 drawPixel((x - 1), y, waterColor);188 continue;189 }190 }191 //Fire192 if(grid[y][x] == 4) {193 var random = Math.floor(Math.random() * (10 - 0 + 1)) + 1;194 drawPixel(x, y, "#e56a12")195 if(grid[(y + 1)][x] == 3) {196 if(random > 8) {197 drawPixel(x, y + 1, "#e56a12");198 grid[(y + 1)][x] = 4;199 continue;200 } 201 }202 if(grid[y][(x - 1)] == 3) {203 if(random > 8) {204 drawPixel(x - 1, y, "#e56a12");205 grid[y][(x - 1)] = 4;206 continue;207 } 208 }209 if(grid[y][(x + 1)] == 3) {210 if(random > 8) {211 drawPixel(x + 1, y, "#e56a12");212 grid[y][(x + 1)] = 4;213 continue;214 } 215 }216 //Move Pixel Randomly217 218 var moveX = Math.floor(Math.random() * (2 - 1 + 1)) + 1;219 var moveY = Math.floor(Math.random() * (4 - 1 + 1)) + 1;220 if(random < 2) {221 grid[y][x] = 0;222 clearPixel(x, y);223 }224 }225 }226 }227 //Framerate228 var thisFrameTime = (thisLoop=new Date) - lastLoop;229 frameTime+= (thisFrameTime - frameTime) / filterStrength;230 lastLoop = thisLoop;231 //drawArray();232 document.getElementById("pixelCount").innerHTML = pixelCount;233} 234//Color Changer235/*setInterval(() => {236 for(var y = grid.length - 2; y > 1; y--) {237 for(var x = 0; x < grid[y].length; x++) {238 if(grid[y][x] == 2) {239 var colorIndex = Math.floor(Math.random() * (4 - 1 + 1)) + 1;240 var waterColor = colors.get(2)[colorIndex];241 drawPixel(x, y, waterColor)242 }243 }244 }245}, 200);246*/247function drawArray() {248 context.clearRect(0, 0, canvas.width, canvas.height);249 for(var y = 0; y < grid.length; y++) {250 grid[y].forEach(x => {251 drawPixel(x, y);252 });253 }254}255function drawPixel(x, y, color) {256 context.fillStyle = color || "#e0988d";257 context.fillRect(x*pixelSize, y*pixelSize, pixelSize, pixelSize);258}259function clearPixel(x, y) {260 context.clearRect(x*pixelSize, y*pixelSize, pixelSize, pixelSize);261}262function createPixel(x, y) {263 var id = currentMaterial;264 if(id == 0) {265 clearPixel(x, y);266 grid[y][x] = 0;267 return;268 }269 if(grid[y][x] != 0) return;270 grid[y][x] = id;271 if(id == 3) {272 drawPixel(x, y, "#331a14");273 }274 pixelCount++;275}276//Paint277//Running update278setInterval(updatePixels, refreshRate);279var fpsOut = document.getElementById('fps');280setInterval(function(){281 fpsOut.innerHTML = (1000/frameTime).toFixed(1) + " fps";282},1000);283//Utils284function shuffle(a) {285 for (let i = a.length - 1; i > 0; i--) {286 const j = Math.floor(Math.random() * (i + 1));...
canva.js
Source: canva.js
...10 let tail = [];11 12 //console.log("canvas element: ", canvasElement);13 14 function drawPixel(x, y, color) {15 let context = canvasElement.getContext('2d');16 var roundedX = Math.round(x);17 var roundedY = Math.round(y);18 19 context.beginPath();20 context.fillStyle = color || '#000';21 context.fillRect(roundedX, roundedY, brushSize, brushSize);22 context.fill();23 }24 function handleMouseMove(ev){25 if(mouseDown)26 {27 drawPixel(ev.pageX, ev.pageY, 'black')28 }29 30 }31 function drawLine(point1, point2)32 {33 let x0 = point1.x;34 let y0 = point1.y;35 let x1 = point2.x;36 let y1 = point2.y;37 var dx = Math.abs(x1 - x0);38 var dy = Math.abs(y1 - y0);39 var sx = (x0 < x1) ? 1 : -1;40 var sy = (y0 < y1) ? 1 : -1;41 var err = dx - dy;42 while(true) {43 drawPixel(x0, y0, 'black'); // Do what you need to for this44 if ((x0 === x1) && (y0 === y1)) break;45 var e2 = 2*err;46 if (e2 > -dy) { err -= dy; x0 += sx; }47 if (e2 < dx) { err += dx; y0 += sy; }48 }49 }50 function displayCircle(xc, yc, x, y)51 {52 drawPixel(xc+x, yc+y, 'black');53 drawPixel(xc-x, yc+y, 'black');54 drawPixel(xc+x, yc-y, 'black');55 drawPixel(xc-x, yc-y, 'black');56 drawPixel(xc+y, yc+x, 'black');57 drawPixel(xc-y, yc+x, 'black');58 drawPixel(xc+y, yc-x, 'black');59 drawPixel(xc-y, yc-x, 'black');60 }61 function drawCircle(radius, center)62 {63 if(((center.x + radius) > canvasWidth) || ((center.x - radius) < 0) || ((center.y + radius) > canvasHeight) || ((center.y - radius) < 0))64 {65 alert('Esse circulo não cabe no quadro!')66 return;67 }68 let x = 0;69 let y = radius;70 let xc = center.x;71 let yc = center.y;72 let decision = 3 - 2 * radius;73 displayCircle(xc, yc, x, y);74 while(y >= x)75 {76 x++77 if(decision > 0)78 {79 y--;80 decision = decision + 4 * (x-y) + 1081 }82 else {83 decision = decision + 4 * x + 6;84 }85 displayCircle(xc, yc, x, y);86 }87 }88 useEffect(() => {89 // if(mouseDown)90 // {91 // drawPixel((Math.floor(Math.random() * 100)), (Math.floor(Math.random() * 100)), 'black')92 // }93 // if(scaled == false)94 // {95 // canvasElement.width = window.innerWidth;96 // canvasElement.height = window.innerHeight;97 // setScaled(true)98 // }99 // let context = canvasElement.getContext('2d');100 // context.canvas.width = screenW;101 // context.canvas.height = screenH;102 //setScaled(false);103 104 }, []);105 return (106 <canvas107 style={{border: "2px solid gray"}}108 id="canvas-main"109 //onClick={() => {drawPixel((Math.floor(Math.random() * 100)), (Math.floor(Math.random() * 100)), 'black')}}110 onMouseDown={(ev) => {111 setMouseDown(true);112 config.addPoint(ev.pageX, ev.pageY);113 if(config.getBrushMode() == 1)114 {115 116 } 117 118 119 }}120 onMouseUp={(ev) => {121 setMouseDown(false); 122 if(config.getBrushMode() == 1)123 {124 config.addPoint(ev.pageX, ev.pageY);125 126 drawLine(config.getLastPoint(), config.getSecondLastPoint())127 }128 if(config.getBrushMode() == 2)129 {130 config.addPoint(ev.pageX, ev.pageY);131 const radius = Math.ceil(config.getRadiusLastClick());132 drawCircle(radius, config.getSecondLastPoint());133 }134 135 }}136 onMouseMove={(ev) => {137 if(mouseDown && config.getBrushMode() == 0) drawPixel(ev.pageX, ev.pageY, 'black');138 // if(mouseDown && config.getBrushMode() == 1) {tail.push(ev.pageX);}139 // if(!mouseDown && config.getBrushMode() == 1) {140 // console.log("tail: ",tail);141 142 // } 143 }}144 width={canvasWidth}145 height={canvasHeight}146 //onMouseDownCapture={() => {drawPixel((Math.floor(Math.random() * 100)), (Math.floor(Math.random() * 100)), 'black')}}147 >148 </canvas>149 )...
clock-blob.js
Source: clock-blob.js
...16function flip() {17 g.setColor(1,1,1);18 g.drawImage({width:buf.getWidth(),height:buf.getHeight(),buffer:buf.buffer},55,26);19}20function drawPixel(ox,oy,x,y,r,p) {21 let x1 = ox+x*(r*2);22 let y1 = oy+y*(r*2);23 let xmid = x1+r;24 let ymid = y1+r;25 let x2 = xmid+r;26 let y2 = ymid+r;27 if (p > 0) {28 if (p > 1) {29 buf.setColor(0,0,0);30 buf.fillPoly([x1,y1,x2,y1,x2,y2,x1,y2]);31 }32 buf.setColor(1,1,1);33 } else {34 buf.setColor(0,0,0);35 }36 if (p < 2) {37 buf.fillPoly([x1,y1,x2,y1,x2,y2,x1,y2]);38 } else if (p === 2) {39 buf.fillPoly([xmid,y1,x2,y1,x2,y2,x1,y2,x1,ymid]);40 } else if (p === 3) {41 buf.fillPoly([x1,y1,xmid,y1,x2,ymid,x2,y2,x1,y2]);42 } else if (p === 4) {43 buf.fillPoly([x1,y1,x2,y1,x2,ymid,xmid,y2,x1,y2]);44 } else if (p === 5) {45 buf.fillPoly([x1,y1,x2,y1,x2,y2,xmid,y2,x1,ymid]);46 }47}48function redraw() {49 let time = new Date();50 let hours = time.getHours();51 let mins = time.getMinutes();52 let secs = time.getSeconds();53 let newDigits = [Math.floor(hours/10),hours%10,Math.floor(mins/10),mins%10,Math.floor(secs/10),secs%10];54 for (var p = 0;p<25;p++) {55 var px = p%5;56 var py = Math.floor(p/5);57 if (digits[0] === -1 || NUMBERS[newDigits[0]][p] !== NUMBERS[digits[0]][p] ) {58 drawPixel(0,20,px,py,6,NUMBERS[newDigits[0]][p]);59 }60 if (digits[1] === -1 || NUMBERS[newDigits[1]][p] !== NUMBERS[digits[1]][p] ) {61 drawPixel(78,20,px,py,6,NUMBERS[newDigits[1]][p]);62 }63 if (digits[2] === -1 || NUMBERS[newDigits[2]][p] !== NUMBERS[digits[2]][p] ) {64 drawPixel(0,92,px,py,6,NUMBERS[newDigits[2]][p]);65 }66 if (digits[3] === -1 || NUMBERS[newDigits[3]][p] !== NUMBERS[digits[3]][p] ) {67 drawPixel(78,92,px,py,6,NUMBERS[newDigits[3]][p]);68 }69 if (digits[4] === -1 || NUMBERS[newDigits[4]][p] !== NUMBERS[digits[4]][p] ) {70 drawPixel(69,164,px,py,3,NUMBERS[newDigits[4]][p]);71 }72 if (digits[5] === -1 || NUMBERS[newDigits[5]][p] !== NUMBERS[digits[5]][p] ) {73 drawPixel(108,164,px,py,3,NUMBERS[newDigits[5]][p]);74 }75 }76 digits = newDigits;77 flip();78}79function clearTimers() {80 if(intervalRef) {81 clearInterval(intervalRef);82 intervalRef = undefined;83 }84}85function startTimers() {86 g.clear();87 Bangle.drawWidgets();...
app.js
Source: app.js
1import {createProgram, setupWebGL, pointsToBuffer} from 'GLHelper';2import {vec2} from 'gl-matrix';3import vertexShader from './shader.vert';4import fragmentShader from './shader.frag';5class DrawPixel {6 constructor() {7 this._points = [];8 this._drawType = '';9 this._initGl();10 }11 /**12 *13 * @param {Array} points éè¦ç»å¶çåæ æ°ç»14 */15 writePixel(points) {16 // æ¸
空åæ 17 this._points = [];18 if(!Array.isArray(points)) return;19 points.forEach((item) => {20 if(Array.isArray(item) && item.length === 2) {21 this._points.push(vec2(item[0], item[1]));22 }23 });24 }25 /**26 *27 * @param {String} type ç»å¶ç±»å28 */29 readPixel(type = 'LINE_STRIP') {30 this._drawType = type;31 this._render();32 }33 /**34 *35 * @param {Array} center åå¿åæ 36 * @param {Number} radius åå¾37 * @param {Number} segment åæ®µæ° (æ£æ´æ°)38 */39 drawCircle(center = [0, 0], radius = 0.2, segment = 10) {40 // æ¸
空åæ 41 this._points = [];42 // è·åå个å段ä½ç½®çåæ 43 for(let i = 0; i < segment; i++) {44 const x = center[0] + radius * Math.cos(Math.PI * 2 / segment * i);45 const y = center[1] + radius * Math.sin(Math.PI * 2 / segment * i);46 this._points.push(vec2(x, y));47 }48 this.readPixel('LINE_LOOP');49 }50 /**51 * å
é¨ç§ææ¹æ³ï¼åå§åwebGl52 */53 _initGl() {54 const canvas = document.getElementById('gl-canvas');55 const gl = setupWebGL(canvas);56 if(!gl) {57 console.error("WebGL isn't available");58 }59 gl.viewport(0, 0, canvas.width, canvas.height);60 gl.clearColor(1.0, 1.0, 1.0, 1.0);61 // Load shaders and initialize attribute buffers62 const program = createProgram(gl, vertexShader, fragmentShader);63 gl.useProgram(program);64 this._gl = gl;65 this._program = program;66 }67 /**68 * å
é¨æ¹æ³ï¼æ§è¡ç»å¶69 */70 _render() {71 const gl = this._gl;72 const bufferId = gl.createBuffer();73 gl.bindBuffer(gl.ARRAY_BUFFER, bufferId);74 gl.bufferData(gl.ARRAY_BUFFER, pointsToBuffer(this._points), gl.STATIC_DRAW);75 const vPosition = gl.getAttribLocation(this._program, 'vPosition');76 gl.vertexAttribPointer(vPosition, 2, gl.FLOAT, false, 0, 0);77 gl.enableVertexAttribArray(vPosition);78 // æ¯æ¬¡æ¸²æä¸æ¸
é¤ä¹åç79 // gl.clear(gl.COLOR_BUFFER_BIT);80 gl.drawArrays(gl[this._drawType], 0, this._points.length);81 }82}83const drawPixel = new DrawPixel();84drawPixel.writePixel([[-0.3, 0.8], [-0.7, 0.8], [-0.7, 0.3], [-0.3, 0.3], [-0.3, 0.5], [-0.5, 0.5]]);85drawPixel.readPixel('LINE_STRIP');86drawPixel.writePixel([[-0.1, 0.8], [-0.1, 0.3], [0.3, 0.3]]);87drawPixel.readPixel('LINE_STRIP');88drawPixel.drawCircle([0.0, -0.4], 0.5, 40);89drawPixel.drawCircle([0.0, -0.4], 0.4, 10);90drawPixel.drawCircle([0.0, -0.4], 0.3, 5);...
alg.js
Source: alg.js
...33 var m = (y1 - y0) / (x1 - x0);34 var y = 0;35 for (var x = x0; x <= x1; x++) {36 y = y0 + m * (x - x0);37 drawPixel(x, Math.round(y));38 }39}40function bresenham() {41 var dx, dy, incrE, incrNE, d, x, y;42 dx = x1 - x0;43 dy = y1 - y0;44 d = dy * 2 - dx;45 incrE = dy * 2;46 incrNE = (dy - dx) * 2;47 x = x0;48 y = y0;49 const m = dx > 0 ? dy / dx : 0;50 drawPixelBresenham(m, x, y);51 while (x < x1) {52 x++;53 if (d <= 0)54 d += incrE;55 else {56 d += incrNE;57 y = y + 1;58 }59 drawPixelBresenham(m, x, y);60 }61}62function desenharCirculo() {63 var x = 10;64 var y = +radius.value;65 var d = 1 - y;66 drawCirclePixel(x, y);67 while (y >= x) {68 if (d < 0) {69 d += (2 * x + 3);70 } else {71 d += 2 * (x - y) + 5;72 y--;73 }74 x++;75 drawCirclePixel(x, y);76 }77}78function drawCirclePixel(x, y) {79 drawPixel(x, y);80 drawPixel(y, x);81 drawPixel(y, -x);82 drawPixel(x, -y);83 drawPixel(-x, -y);84 drawPixel(-y, -x);85 drawPixel(-y, x);86 drawPixel(-x, y);87}88function drawPixelBresenham(m, x, y) {89 if (ehEsquadraoUm(m))90 drawPixel(x, y);91 else if (ehEsquadraoDois(m))92 drawPixel(y, x);93 else if (ehEsquadraoTres(m))94 drawPixel(-y, x);95 else if (ehEsquadraoQuatro(m))96 drawPixel(-x, y);97 else if (ehEsquadraoCinco(m))98 drawPixel(-x, -y);99 else if (ehEsquadraoSeis(m))100 drawPixel(-y, -x);101 else if (ehEsquadraoSete(m))102 drawPixel(y, -x);103 else if (ehEsquadraoOito(m))104 drawPixel(x, -y);105 else106 drawPixel(x, y);107}108function ehEsquadraoUm(m) { return m > 0 && m < 1 }109function ehEsquadraoDois(m) { return m > 1 }110function ehEsquadraoTres(m) { return m < -1 }111function ehEsquadraoQuatro(m) { return m > -1 && m < 0 }112function ehEsquadraoCinco(m) { return m > 0 && m < 1 }113function ehEsquadraoSeis(m) { return m > 1 }114function ehEsquadraoSete(m) { return m < -1 }115function ehEsquadraoOito(m) { return m > -1 && m < 0 }116function drawPixel(x, y) {117 const ctx = myCanvas.getContext('2d');118 ctx.fillRect(x, y, 1, 1);...
circle.js
Source: circle.js
...17}18async function drawCircle (x_center, y_center, r) {19 var x = r;20 var y = 0;21 await drawPixel(x_center, y_center);22 if(r>0){23 await drawPixel(x + x_center, -y + y_center);24 await drawPixel(y + x_center, x + y_center);25 await drawPixel(-y + x_center, x + y_center);26 }27 var p = 1 -r;28 while(x>y){29 y++;30 if(p <= 0){31 p += 2 * y + 1;32 }else{33 x--;34 p += 2 * (y - x) + 1;35 }36 if(x<y)break;37 await drawPixel(x + x_center, y + y_center);38 await drawPixel(-x + x_center, y + y_center);39 await drawPixel(x + x_center, -y + y_center);40 await drawPixel(-x + x_center, -y + y_center);41 if(x!=y){42 await drawPixel(y + x_center, x + y_center);43 await drawPixel(-y + x_center, x + y_center);44 await drawPixel(y + x_center, -x + y_center);45 await drawPixel(-y + x_center, -x + y_center);46 }47 }48}49draw.addEventListener('click',async function(){50 var x = parseInt(document.getElementById('x').value);51 var y = parseInt(document.getElementById('y').value);52 var r = parseInt(document.getElementById('radius').value);53 await drawCircle(x,y,r);54 console.log("draw clicked");55});56function clear(){57 ctx.clearRect(0, 0, canvasWidth, canvasHeight);58 ctx.beginPath();59 line(-canvasWidth,0,canvasWidth,0)...
map-radiotelescopes.js
Source: map-radiotelescopes.js
1/* map-radiotelescopes.js2 */3var data;4function drawPixel(x, y)5{6 var temp = document.createElement("div");7 temp.style.position = "absolute";8 temp.style.backgroundColor = "white";9 temp.style.left = x+"px";10 temp.style.top = y+"px";11 temp.style.width = "1px";12 temp.style.height = "1px";13 data.appendChild(temp);14}15function drawCircle(xpos, ypos, radius)16{17 data = document.createElement("div");18 drawPixel(xpos, ypos);19 var d = 3 - (2 * radius);20 var x = 0;21 var y = radius;22 while (x <= y)23 {24 drawPixel(xpos+x, ypos+y);25 drawPixel(xpos+x, ypos-y);26 drawPixel(xpos-x, ypos+y);27 drawPixel(xpos-x, ypos-y);28 29 drawPixel(xpos+y, ypos+x);30 drawPixel(xpos+y, ypos-x);31 drawPixel(xpos-y, ypos+x);32 drawPixel(xpos-y, ypos-x);33 if (d < 0)34 d += (4 * x) + 6;35 else36 {37 d += 4 * (x - y) + 10;38 y--;39 }40 x++;41 }42 document.getElementById("data").appendChild(data);...
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.screenshot({ path: 'screenshot.png' });7 await browser.close();8})();9const { chromium } = require('playwright');10(async () => {11 const browser = await chromium.launch();12 const context = await browser.newContext();13 const page = await context.newPage();14 await page.screenshot({ path: 'screenshot.png' });15 await browser.close();16})();17const { chromium } = require('playwright');18(async () => {19 const browser = await chromium.launch();20 const context = await browser.newContext();21 const page = await context.newPage();22 await page.screenshot({ path: 'screenshot.png' });23 await browser.close();24})();25const { chromium } = require('playwright');26(async () => {27 const browser = await chromium.launch();28 const context = await browser.newContext();29 const page = await context.newPage();30 await page.screenshot({ path: 'screenshot.png' });31 await browser.close();32})();33const { chromium } = require('playwright');34(async () => {35 const browser = await chromium.launch();36 const context = await browser.newContext();37 const page = await context.newPage();38 await page.screenshot({ path: 'screenshot.png' });39 await browser.close();40})();41const { chromium } = require('playwright');42(async () => {43 const browser = await chromium.launch();44 const context = await browser.newContext();45 const page = await context.newPage();
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.drawPixel(10, 10, { color: { r: 255, g: 0, b: 0, a: 1 } });7 await browser.close();8})();
Using AI Code Generation
1const {chromium} = require('playwright');2(async () => {3 const browser = await chromium.launch({headless: false});4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.drawPixel(100, 100);7 await browser.close();8})();9const {chromium} = require('playwright');10(async () => {11 const browser = await chromium.launch({headless: false});12 const context = await browser.newContext();13 const page = await context.newPage();14 await page.drawPixel(100, 100);15 await browser.close();16})();17const {chromium} = require('playwright');18(async () => {19 const browser = await chromium.launch({headless: false});20 const context = await browser.newContext();21 const page = await context.newPage();22 await page.drawPixel(100, 100);23 await browser.close();24})();25const {chromium} = require('playwright');26(async () => {27 const browser = await chromium.launch({headless: false});28 const context = await browser.newContext();29 const page = await context.newPage();30 await page.drawPixel(100, 100);31 await browser.close();32})();33const {chromium} = require('playwright');34(async () => {35 const browser = await chromium.launch({headless: false});36 const context = await browser.newContext();37 const page = await context.newPage();38 await page.drawPixel(100, 100);39 await browser.close();40})();41const {chromium} = require('playwright');42(async () => {43 const browser = await chromium.launch({headless: false});
Using AI Code Generation
1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.drawPixel({ x: 10, y: 10, color: { r: 255, g: 0, b: 0, a: 1 } });7 await page.screenshot({ path: 'screenshot.png' });8 await browser.close();9})();
Using AI Code Generation
1const {chromium} = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 await page.evaluate(() => {7 const canvas = document.createElement('canvas');8 canvas.width = 100;9 canvas.height = 100;10 canvas.style.position = 'absolute';11 canvas.style.top = '0';12 canvas.style.left = '0';13 document.body.appendChild(canvas);14 const ctx = canvas.getContext('2d');15 ctx.fillStyle = 'red';16 ctx.fillRect(0, 0, 100, 100);17 const imageData = ctx.getImageData(0, 0, 100, 100);18 const pixels = new Uint32Array(imageData.data.buffer);19 for (let i = 0; i < pixels.length; i++) {20 if (pixels[i] !== 4294901760) {21 console.log('Pixel at index ' + i + ' is not red');22 }23 }24 });25 await browser.close();26})();27const {chromium} = require('playwright');28(async () => {29 const browser = await chromium.launch();30 const context = await browser.newContext();31 const page = await context.newPage();32 await page.evaluate(() => {33 const canvas = document.createElement('canvas');34 canvas.width = 100;35 canvas.height = 100;36 canvas.style.position = 'absolute';37 canvas.style.top = '0';38 canvas.style.left = '0';39 document.body.appendChild(canvas);40 const ctx = canvas.getContext('2d');41 ctx.fillStyle = 'red';42 ctx.fillRect(0, 0, 100, 100);43 const imageData = ctx.getImageData(0, 0, 100, 100);44 const pixels = new Uint32Array(imageData.data.buffer);45 for (let i = 0; i < pixels.length; i++) {46 if (pixels[i] !== 4294901760) {47 console.log('Pixel at index ' + i + ' is not red');48 }49 }50 });51 await browser.close();52})();
Using AI Code Generation
1const {chromium} = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const page = await browser.newPage();5 await page.drawPixel(100, 100, 'red');6 await page.drawPixel(100, 101, 'green');7 await page.drawPixel(100, 102, 'blue');8 await page.drawPixel(100, 103, 'yellow');9 await page.drawPixel(100, 104, 'purple');10 await page.drawPixel(100, 105, 'cyan');11 await browser.close();12})();
Using AI Code Generation
1const { drawPixel } = require('playwright-core/lib/server/screencast/recorder');2drawPixel(100, 100, [255, 0, 0]);3const { drawRect } = require('playwright-core/lib/server/screencast/recorder');4drawRect(100, 100, 200, 200, [255, 0, 0]);5const { drawCircle } = require('playwright-core/lib/server/screencast/recorder');6drawCircle(100, 100, 50, [255, 0, 0]);7const { drawText } = require('playwright-core/lib/server/screencast/recorder');8drawText(100, 100, 'Hello World', [255, 0, 0]);
Jest + Playwright - Test callbacks of event-based DOM library
firefox browser does not start in playwright
Is it possible to get the selector from a locator object in playwright?
How to run a list of test suites in a single file concurrently in jest?
Running Playwright in Azure Function
firefox browser does not start in playwright
This question is quite close to a "need more focus" question. But let's try to give it some focus:
Does Playwright has access to the cPicker object on the page? Does it has access to the window object?
Yes, you can access both cPicker and the window object inside an evaluate call.
Should I trigger the events from the HTML file itself, and in the callbacks, print in the DOM the result, in some dummy-element, and then infer from that dummy element text that the callbacks fired?
Exactly, or you can assign values to a javascript variable:
const cPicker = new ColorPicker({
onClickOutside(e){
},
onInput(color){
window['color'] = color;
},
onChange(color){
window['result'] = color;
}
})
And then
it('Should call all callbacks with correct arguments', async() => {
await page.goto(`http://localhost:5000/tests/visual/basic.html`, {waitUntil:'load'})
// Wait until the next frame
await page.evaluate(() => new Promise(requestAnimationFrame))
// Act
// Assert
const result = await page.evaluate(() => window['color']);
// Check the value
})
Check out the latest blogs from LambdaTest on this topic:
Native apps are developed specifically for one platform. Hence they are fast and deliver superior performance. They can be downloaded from various app stores and are not accessible through browsers.
One of the essential parts when performing automated UI testing, whether using Selenium or another framework, is identifying the correct web elements the tests will interact with. However, if the web elements are not located correctly, you might get NoSuchElementException in Selenium. This would cause a false negative result because we won’t get to the actual functionality check. Instead, our test will fail simply because it failed to interact with the correct element.
Smartphones have changed the way humans interact with technology. Be it travel, fitness, lifestyle, video games, or even services, it’s all just a few touches away (quite literally so). We only need to look at the growing throngs of smartphone or tablet users vs. desktop users to grasp this reality.
As part of one of my consulting efforts, I worked with a mid-sized company that was looking to move toward a more agile manner of developing software. As with any shift in work style, there is some bewilderment and, for some, considerable anxiety. People are being challenged to leave their comfort zones and embrace a continuously changing, dynamic working environment. And, dare I say it, testing may be the most ‘disturbed’ of the software roles in agile development.
LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!