Best JavaScript code snippet using wpt
WritableStream.js
Source:WritableStream.js
...222 const writer = stream[_writer];223 if (writer !== undefined) {224 WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);225 }226 if (!WritableStreamHasOperationMarkedInFlight(stream) &&227 controller[_started]) {228 WritableStreamFinishErroring(stream);229 }230 }231 function WritableStreamFinishErroring(stream) {232 // assert((stream[_stateAndFlags] & STATE_MASK) === ERRORING,233 // '_stream_.[[state]] is `"erroring"`');234 // assert(!WritableStreamHasOperationMarkedInFlight(stream),235 // '! WritableStreamHasOperationMarkedInFlight(_stream_) is ' +236 // '*false*');237 stream[_stateAndFlags] = (stream[_stateAndFlags] & ~STATE_MASK) | ERRORED;238 WritableStreamDefaultControllerErrorSteps(239 stream[_writableStreamController]);240 const storedError = stream[_storedError];241 rejectPromises(stream[_writeRequests], storedError);242 stream[_writeRequests] = new binding.SimpleQueue();243 if (stream[_pendingAbortRequest] === undefined) {244 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);245 return;246 }247 const abortRequest = stream[_pendingAbortRequest];248 stream[_pendingAbortRequest] = undefined;249 if (abortRequest.wasAlreadyErroring === true) {250 rejectPromise(abortRequest.promise, storedError);251 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);252 return;253 }254 const promise = WritableStreamDefaultControllerAbortSteps(255 stream[_writableStreamController], abortRequest.reason);256 thenPromise(257 promise,258 () => {259 resolvePromise(abortRequest.promise, undefined);260 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);261 },262 reason => {263 rejectPromise(abortRequest.promise, reason);264 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);265 });266 }267 function WritableStreamFinishInFlightWrite(stream) {268 // assert(stream[_inFlightWriteRequest] !== undefined,269 // '_stream_.[[inFlightWriteRequest]] is not *undefined*.');270 resolvePromise(stream[_inFlightWriteRequest], undefined);271 stream[_inFlightWriteRequest] = undefined;272 }273 function WritableStreamFinishInFlightWriteWithError(stream, error) {274 // assert(stream[_inFlightWriteRequest] !== undefined,275 // '_stream_.[[inFlightWriteRequest]] is not *undefined*.');276 rejectPromise(stream[_inFlightWriteRequest], error);277 stream[_inFlightWriteRequest] = undefined;278 // const state = stream[_stateAndFlags] & STATE_MASK;279 // assert(state === WRITABLE || state === ERRORING,280 // '_stream_.[[state]] is `"writable"` or `"erroring"`');281 WritableStreamDealWithRejection(stream, error);282 }283 function WritableStreamFinishInFlightClose(stream) {284 // assert(stream[_inFlightCloseRequest] !== undefined,285 // '_stream_.[[inFlightCloseRequest]] is not *undefined*.');286 resolvePromise(stream[_inFlightCloseRequest], undefined);287 stream[_inFlightCloseRequest] = undefined;288 const state = stream[_stateAndFlags] & STATE_MASK;289 // assert(state === WRITABLE || state === ERRORING,290 // '_stream_.[[state]] is `"writable"` or `"erroring"`');291 if (state === ERRORING) {292 stream[_storedError] = undefined;293 if (stream[_pendingAbortRequest] !== undefined) {294 resolvePromise(stream[_pendingAbortRequest].promise, undefined);295 stream[_pendingAbortRequest] = undefined;296 }297 }298 stream[_stateAndFlags] = (stream[_stateAndFlags] & ~STATE_MASK) | CLOSED;299 const writer = stream[_writer];300 if (writer !== undefined) {301 resolvePromise(writer[_closedPromise], undefined);302 }303 // assert(stream[_pendingAbortRequest] === undefined,304 // '_stream_.[[pendingAbortRequest]] is *undefined*');305 // assert(stream[_storedError] === undefined,306 // '_stream_.[[storedError]] is *undefined*');307 }308 function WritableStreamFinishInFlightCloseWithError(stream, error) {309 // assert(stream[_inFlightCloseRequest] !== undefined,310 // '_stream_.[[inFlightCloseRequest]] is not *undefined*.');311 rejectPromise(stream[_inFlightCloseRequest], error);312 stream[_inFlightCloseRequest] = undefined;313 // const state = stream[_stateAndFlags] & STATE_MASK;314 // assert(state === WRITABLE || state === ERRORING,315 // '_stream_.[[state]] is `"writable"` or `"erroring"`');316 if (stream[_pendingAbortRequest] !== undefined) {317 rejectPromise(stream[_pendingAbortRequest].promise, error);318 stream[_pendingAbortRequest] = undefined;319 }320 WritableStreamDealWithRejection(stream, error);321 }322 function WritableStreamCloseQueuedOrInFlight(stream) {323 return stream[_closeRequest] !== undefined ||324 stream[_inFlightCloseRequest] !== undefined;325 }326 function WritableStreamHasOperationMarkedInFlight(stream) {327 return stream[_inFlightWriteRequest] !== undefined ||328 stream[_inFlightCloseRequest] !== undefined;329 }330 function WritableStreamMarkCloseRequestInFlight(stream) {331 // assert(stream[_inFlightCloseRequest] === undefined,332 // '_stream_.[[inFlightCloseRequest]] is *undefined*.');333 // assert(stream[_closeRequest] !== undefined,334 // '_stream_.[[closeRequest]] is not *undefined*.');335 stream[_inFlightCloseRequest] = stream[_closeRequest];336 stream[_closeRequest] = undefined;337 }338 function WritableStreamMarkFirstWriteRequestInFlight(stream) {339 // assert(stream[_inFlightWriteRequest] === undefined,340 // '_stream_.[[inFlightWriteRequest]] is *undefined*.');...
writable-streams.js
Source:writable-streams.js
...178}179function WritableStreamFinishErroring(stream) {180 verbose('WritableStreamFinishErroring()');181 assert(stream._state === 'erroring');182 assert(WritableStreamHasOperationMarkedInFlight(stream) === false);183 stream._state = 'errored';184 stream._controller[ErrorSteps]();185 const storedError = stream._storedError;186 for (const writeRequest of stream._writeRequests) {187 rejectPromise(writeRequest, storedError);188 }189 stream._writeRequests = [];190 if (stream._pendingAbortRequest === undefined) {191 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);192 return;193 }194 const abortRequest = stream._pendingAbortRequest;195 stream._pendingAbortRequest = undefined;196 if (abortRequest.wasAlreadyErroring === true) {197 rejectPromise(abortRequest.promise, storedError);198 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);199 return;200 }201 const promise = stream._controller[AbortSteps](abortRequest.reason);202 uponPromise(203 promise,204 () => {205 resolvePromise(abortRequest.promise);206 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);207 },208 reason => {209 rejectPromise(abortRequest.promise, reason);210 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);211 });212}213function WritableStreamFinishInFlightClose(stream) {214 assert(stream._inFlightCloseRequest !== undefined);215 resolvePromise(stream._inFlightCloseRequest, undefined);216 stream._inFlightCloseRequest = undefined;217 const state = stream._state;218 assert(state === 'writable' || state === 'erroring');219 if (state === 'erroring') {220 // The error was too late to do anything, so it is ignored.221 stream._storedError = undefined;222 if (stream._pendingAbortRequest !== undefined) {223 resolvePromise(stream._pendingAbortRequest.promise, undefined);224 stream._pendingAbortRequest = undefined;225 }226 }227 stream._state = 'closed';228 const writer = stream._writer;229 if (writer !== undefined) {230 resolvePromise(writer._closedPromise, undefined);231 }232 assert(stream._pendingAbortRequest === undefined);233 assert(stream._storedError === undefined);234}235function WritableStreamFinishInFlightCloseWithError(stream, error) {236 assert(stream._inFlightCloseRequest !== undefined);237 rejectPromise(stream._inFlightCloseRequest, error);238 stream._inFlightCloseRequest = undefined;239 assert(stream._state === 'writable' || stream._state === 'erroring');240 // Never execute sink abort() after sink close().241 if (stream._pendingAbortRequest !== undefined) {242 rejectPromise(stream._pendingAbortRequest.promise, error);243 stream._pendingAbortRequest = undefined;244 }245 WritableStreamDealWithRejection(stream, error);246}247function WritableStreamFinishInFlightWrite(stream) {248 assert(stream._inFlightWriteRequest !== undefined);249 resolvePromise(stream._inFlightWriteRequest, undefined);250 stream._inFlightWriteRequest = undefined;251}252function WritableStreamFinishInFlightWriteWithError(stream, error) {253 assert(stream._inFlightWriteRequest !== undefined);254 rejectPromise(stream._inFlightWriteRequest, error);255 stream._inFlightWriteRequest = undefined;256 assert(stream._state === 'writable' || stream._state === 'erroring');257 WritableStreamDealWithRejection(stream, error);258}259function WritableStreamHasOperationMarkedInFlight(stream) {260 if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {261 verbose('WritableStreamHasOperationMarkedInFlight() is false');262 return false;263 }264 verbose('WritableStreamHasOperationMarkedInFlight() is true');265 return true;266}267function WritableStreamMarkCloseRequestInFlight(stream) {268 assert(stream._inFlightCloseRequest === undefined);269 assert(stream._closeRequest !== undefined);270 stream._inFlightCloseRequest = stream._closeRequest;271 stream._closeRequest = undefined;272}273function WritableStreamMarkFirstWriteRequestInFlight(stream) {274 assert(stream._inFlightWriteRequest === undefined);275 assert(stream._writeRequests.length !== 0);276 stream._inFlightWriteRequest = stream._writeRequests.shift();277}278function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {279 verbose('WritableStreamRejectCloseAndClosedPromiseIfNeeded()');280 assert(stream._state === 'errored');281 if (stream._closeRequest !== undefined) {282 assert(stream._inFlightCloseRequest === undefined);283 rejectPromise(stream._closeRequest, stream._storedError);284 stream._closeRequest = undefined;285 }286 const writer = stream._writer;287 if (writer !== undefined) {288 rejectPromise(writer._closedPromise, stream._storedError);289 setPromiseIsHandledToTrue(writer._closedPromise);290 }291}292function WritableStreamStartErroring(stream, reason) {293 verbose('WritableStreamStartErroring(stream, %o)', reason);294 assert(stream._storedError === undefined);295 assert(stream._state === 'writable');296 const controller = stream._controller;297 assert(controller !== undefined);298 stream._state = 'erroring';299 stream._storedError = reason;300 const writer = stream._writer;301 if (writer !== undefined) {302 WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);303 }304 if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {305 WritableStreamFinishErroring(stream);306 }307}308function WritableStreamUpdateBackpressure(stream, backpressure) {309 assert(stream._state === 'writable');310 assert(WritableStreamCloseQueuedOrInFlight(stream) === false);311 const writer = stream._writer;312 if (writer !== undefined && backpressure !== stream._backpressure) {313 if (backpressure === true) {314 writer._readyPromise = newPromise();315 } else {316 assert(backpressure === false);317 resolvePromise(writer._readyPromise, undefined);318 }...
writable_stream.ts
Source:writable_stream.ts
...188 const { writer } = stream;189 if (writer !== void 0) {190 WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);191 }192 if (!WritableStreamHasOperationMarkedInFlight(stream) && controller.started) {193 WritableStreamFinishErroring(stream);194 }195}196export function WritableStreamFinishErroring(stream: WritableStream) {197 Assert(stream.state === "erroring");198 Assert(!WritableStreamHasOperationMarkedInFlight(stream));199 stream.state = "errored";200 stream.writableStreamController[ErrorSteps]();201 const { storedError } = stream;202 stream.writeRequests.forEach(p => p.reject(storedError));203 stream.writeRequests = [];204 if (stream.pendingAbortRequest === void 0) {205 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);206 return;207 }208 const abortRequest = stream.pendingAbortRequest;209 stream.pendingAbortRequest = void 0;210 if (abortRequest.wasAlreadyErroring) {211 abortRequest.promise.reject(storedError);212 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);213 return;214 }215 const promise = stream.writableStreamController[AbortSteps](216 abortRequest.reason217 );218 promise219 .then(() => {220 abortRequest.promise.resolve(void 0);221 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);222 })223 .catch(r => {224 abortRequest.promise.reject(r);225 WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);226 });227}228export function WritableStreamFinishInFlightWrite(stream: WritableStream) {229 Assert(stream.inFlightWriteRequest !== void 0);230 stream.inFlightWriteRequest.resolve(void 0);231 stream.inFlightWriteRequest = void 0;232}233export function WritableStreamFinishInFlightWriteWithError(234 stream: WritableStream,235 error236) {237 Assert(stream.inFlightWriteRequest !== void 0);238 stream.inFlightWriteRequest.resolve(void 0);239 stream.inFlightWriteRequest = void 0;240 Assert(stream.state === "writable" || stream.state === "erroring");241 WritableStreamDealWithRejection(stream, error);242}243export function WritableStreamFinishInFlightClose(stream: WritableStream) {244 Assert(stream.inFlightCloseRequest !== void 0);245 stream.inFlightCloseRequest.resolve(void 0);246 stream.inFlightCloseRequest = void 0;247 const { state } = stream;248 Assert(stream.state === "writable" || stream.state === "erroring");249 if (state === "erroring") {250 stream.storedError = void 0;251 if (stream.pendingAbortRequest !== void 0) {252 stream.pendingAbortRequest.promise.resolve(void 0);253 stream.pendingAbortRequest = void 0;254 }255 }256 stream.state = "closed";257 const { writer } = stream;258 if (writer !== void 0) {259 writer.closedPromise.resolve(void 0);260 }261 Assert(stream.pendingAbortRequest === void 0);262 Assert(stream.storedError === void 0);263}264export function WritableStreamFinishInFlightCloseWithError(265 stream: WritableStream,266 error267) {268 Assert(stream.inFlightCloseRequest !== void 0);269 stream.inFlightCloseRequest.resolve(void 0);270 stream.inFlightCloseRequest = void 0;271 Assert(stream.state === "writable" || stream.state === "erroring");272 if (stream.pendingAbortRequest !== void 0) {273 stream.pendingAbortRequest.promise.reject(error);274 stream.pendingAbortRequest = void 0;275 }276 WritableStreamDealWithRejection(stream, error);277}278export function WritableStreamCloseQueuedOrInFlight(stream: WritableStream) {279 return !(280 stream.closeRequest === void 0 || stream.inFlightCloseRequest === void 0281 );282}283export function WritableStreamHasOperationMarkedInFlight(284 stream: WritableStream285) {286 return !(287 stream.inFlightWriteRequest === void 0 &&288 stream.inFlightCloseRequest === void 0289 );290}291export function WritableStreamMarkCloseRequestInFlight(stream: WritableStream) {292 Assert(stream.inFlightCloseRequest === void 0);293 Assert(stream.closeRequest !== void 0);294 stream.inFlightCloseRequest = stream.closeRequest;295 stream.closeRequest = void 0;296}297export function WritableStreamMarkFirstWriteRequestInFlight(...
Using AI Code Generation
1test(function() {2 var ws = new WritableStream();3 assert_false(WritableStreamHasOperationMarkedInFlight(ws));4 var writer = ws.getWriter();5 writer.write();6 assert_true(WritableStreamHasOperationMarkedInFlight(ws));7 writer.releaseLock();8}, 'WritableStreamHasOperationMarkedInFlight should return true when write is called');9test(function() {10 var ws = new WritableStream({11 write() { }12 });13 var writer = ws.getWriter();14 writer.write('a');15 var controller = writer._ownerWritableStream._writableStreamController;16 assert_equals(WritableStreamDefaultControllerGetDesiredSize(controller), 0, 'desired size should be 0');17 writer.releaseLock();18}, 'WritableStreamDefaultControllerGetDesiredSize should return the desired size');19test(function() {20 var theError = new Error('boe');21 var ws = new WritableStream({22 start(c) {23 c.error(theError);24 }25 });26 var writer = ws.getWriter();27 var closedPromise = writer.closed.catch(r => r);28 writer.releaseLock();29 return closedPromise.then(30 r => assert_equals(r, theError, 'closed should be rejected with the error'));31}, 'closing a WritableStream should reject closed with any previously signaled error');32test(function() {33 var theError = new Error('boo');34 var ws = new WritableStream({35 start(c) {36 c.error(theError);37 }38 });39 var writer = ws.getWriter();40 var closedPromise = writer.closed.catch(r => r);41 writer.releaseLock();42 return closedPromise.then(43 r => assert_equals(r, theError, 'closed should be rejected with the error'));44}, 'erroring a WritableStream should reject closed with any previously signaled error');45test(function() {46 var ws = new WritableStream({47 write() { }48 });49 var writer = ws.getWriter();50 var closedPromise = writer.closed;51 writer.write('a');52 writer.releaseLock();53 return closedPromise.then(54 r => assert_equals(r
Using AI Code Generation
1function testWritableStreamHasOperationMarkedInFlight() {2 const ws = new WritableStream();3 assert_true(WritableStreamHasOperationMarkedInFlight(ws) === false, 'WritableStreamHasOperationMarkedInFlight should return false');4 const writer = ws.getWriter();5 writer.write('a');6 assert_true(WritableStreamHasOperationMarkedInFlight(ws) === true, 'WritableStreamHasOperationMarkedInFlight should return true');7 writer.releaseLock();8 assert_true(WritableStreamHasOperationMarkedInFlight(ws) === false, 'WritableStreamHasOperationMarkedInFlight should return false');9}10function assert_true(actual, description) {11 if (actual !== true) {12 throw new Error(description);13 }14}15function WritableStream() {16 this._state = 'writable';17 this._storedError = undefined;18 this._writer = undefined;19 this._writeRequests = [];20 this._inFlightWriteRequest = undefined;21 this._closeRequest = undefined;22 this._inFlightCloseRequest = undefined;23 this._pendingAbortRequest = undefined;24 this._backpressure = false;25}26WritableStream.prototype.getWriter = function() {27 if (this._writer !== undefined) {28 throw new Error('Cannot obtain a writer when already locked to a writer');29 }30 return new WritableStreamDefaultWriter(this);31};32function WritableStreamDefaultWriter(stream) {33 this._ownerWritableStream = stream;34 stream._writer = this;35 const state = stream._state;36 if (state === 'writable') {37 if (!WritableStreamCloseQueuedOrInFlight(stream) && stream._backpressure) {38 this._readyPromise = new Promise(resolve => {39 this._readyPromise_resolve = resolve;40 });41 } else {42 this._readyPromise = Promise.resolve(undefined);43 }44 this._closedPromise = new Promise((resolve, reject) => {45 this._closedPromise_resolve = resolve;46 this._closedPromise_reject = reject;47 });48 } else if (state === 'erroring') {49 this._readyPromise = Promise.reject(stream._storedError);50 setPromiseIsHandledToTrue(this._readyPromise);51 this._closedPromise = new Promise((resolve, reject) => {
Using AI Code Generation
1const assert = require('assert');2const { WritableStream, WritableStreamDefaultWriter } = require('stream/web');3const { WritableStreamHasOperationMarkedInFlight } = require('stream/web').wpt;4const ws = new WritableStream();5const writer = new WritableStreamDefaultWriter(ws);6writer.write('a');7assert(WritableStreamHasOperationMarkedInFlight(ws));8writer.close();9assert(WritableStreamHasOperationMarkedInFlight(ws));10assert(!WritableStreamHasOperationMarkedInFlight(ws));11assert(!WritableStreamHasOperationMarkedInFlight(ws));12const assert = require('assert');13const { WritableStream, WritableStreamDefaultWriter } = require('web-streams-polyfill/ponyfill');14const ws = new WritableStream();15const writer = new WritableStreamDefaultWriter(ws);16writer.write('a');17assert(WritableStreamHasOperationMarkedInFlight(ws));18writer.close();19assert(WritableStreamHasOperationMarkedInFlight(ws));20assert(!WritableStreamHasOperationMarkedInFlight(ws));21assert(!WritableStreamHasOperationMarkedInFlight(ws));
Using AI Code Generation
1var ws = new WritableStream();2var writer = ws.getWriter();3writer.write('a');4writer.close();5var isMarked = WritableStreamHasOperationMarkedInFlight(ws);6if (isMarked === true) {7 console.log('WritableStreamHasOperationMarkedInFlight is true');8} else {9 console.log('WritableStreamHasOperationMarkedInFlight is false');10}11var ws = new WritableStream();12var writer = ws.getWriter();13writer.write('a');14writer.close();15var isMarked = WritableStreamHasOperationMarkedInFlight(ws);16if (isMarked === true) {17 console.log('WritableStreamHasOperationMarkedInFlight is true');18} else {19 console.log('WritableStreamHasOperationMarkedInFlight is false');20}
Using AI Code Generation
1var wpt = require("wpt");2var w = new wpt.WritableStream();3w.write("a");4w.write("b");5w.close();6var result = wpt.WritableStreamHasOperationMarkedInFlight(w);7console.log(result);8wpt.WritableStreamHasOperationMarkedInFlight(writableStream);9var wpt = require("wpt");10var w = new wpt.WritableStream();11w.write("a");12w.write("b");13w.close();14var result = wpt.WritableStreamHasOperationMarkedInFlight(w);15console.log(result);16Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari Basic support Not supported Not supported Not supported Not supported Not supported Not supported17Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Basic support Not supported Not supported Not supported Not supported Not supported Not supported
Using AI Code Generation
1const { WritableStream, WritableStreamDefaultWriter } = require('@open-web-perf/wpt-adapter')2const stream = new WritableStream()3const writer = new WritableStreamDefaultWriter(stream)4console.log(writer.WritableStreamHasOperationMarkedInFlight())5writer.write('a')6console.log(writer.WritableStreamHasOperationMarkedInFlight())7writer.write('b')8console.log(writer.WritableStreamHasOperationMarkedInFlight())9writer.close()10console.log(writer.WritableStreamHasOperationMarkedInFlight())11writer.releaseLock()12console.log(writer.WritableStreamHasOperationMarkedInFlight())13const { WritableStream, WritableStreamDefaultWriter } = require('@open-web-perf/wpt-adapter')14const stream = new WritableStream()15const writer = new WritableStreamDefaultWriter(stream)16console.log(writer.WritableStreamDefaultWriterGetDesiredSize())17writer.write('a')18console.log(writer.WritableStreamDefaultWriterGetDesiredSize())19writer.write('b')20console.log(writer.WritableStreamDefaultWriterGetDesiredSize())21writer.close()22console.log(writer.WritableStreamDefaultWriterGetDesiredSize())23writer.releaseLock()24console.log(writer.WritableStreamDefaultWriterGetDesiredSize())25const { WritableStream, WritableStreamDefaultWriter } = require('@open-web-perf/wpt-adapter')26const stream = new WritableStream({27 write(chunk) {28 return new Promise((resolve, reject) => {29 setTimeout(() => {30 reject(new Error('error'))31 }, 1000)32 })33 }34})35const writer = new WritableStreamDefaultWriter(stream)36writer.write('a')37writer.write('b')38writer.write('c')39writer.WritableStreamDefaultWriterCloseWithErrorPropagation()40const { WritableStream, WritableStreamDefaultWriter } = require('@open-web-perf/wpt-adapter')41const stream = new WritableStream()
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!