How to use flushAsyncEvents method in wpt

Best JavaScript code snippet using wpt

aborting.js

Source:aborting.js Github

copy

Full Screen

...120 }121 });122 const writer = ws.getWriter();123 writer.write().catch(() => {});124 return flushAsyncEvents().then(() => {125 const abortPromise = writer.abort(undefined);126 resolveWritePromise();127 return promise_rejects(t, error1, abortPromise,128 'rejection reason of abortPromise must be the error thrown by abort');129 });130}, 'WritableStream if sink\'s abort throws, for an abort performed during a write, the promise returned by ' +131 'ws.abort() rejects');132promise_test(() => {133 const ws = recordingWritableStream();134 const writer = ws.getWriter();135 return writer.abort(error1).then(() => {136 assert_array_equals(ws.events, ['abort', error1]);137 });138}, 'Aborting a WritableStream passes through the given reason');139promise_test(t => {140 const ws = new WritableStream();141 const writer = ws.getWriter();142 const abortPromise = writer.abort(error1);143 const events = [];144 writer.ready.catch(() => {145 events.push('ready');146 });147 writer.closed.catch(() => {148 events.push('closed');149 });150 return Promise.all([151 abortPromise,152 promise_rejects(t, new TypeError(), writer.write(), 'writing should reject with a TypeError'),153 promise_rejects(t, new TypeError(), writer.close(), 'closing should reject with a TypeError'),154 promise_rejects(t, new TypeError(), writer.abort(), 'aborting should reject with a TypeError'),155 promise_rejects(t, new TypeError(), writer.ready, 'ready should reject with a TypeError'),156 promise_rejects(t, new TypeError(), writer.closed, 'closed should reject with a TypeError')157 ]).then(() => {158 assert_array_equals(['ready', 'closed'], events, 'ready should reject before closed');159 });160}, 'Aborting a WritableStream puts it in an errored state, with a TypeError as the stored error');161promise_test(t => {162 const ws = new WritableStream();163 const writer = ws.getWriter();164 const writePromise = promise_rejects(t, new TypeError(), writer.write('a'),165 'writing should reject with a TypeError');166 writer.abort(error1);167 return writePromise;168}, 'Aborting a WritableStream causes any outstanding write() promises to be rejected with a TypeError');169promise_test(t => {170 const ws = recordingWritableStream();171 const writer = ws.getWriter();172 const closePromise = writer.close();173 const abortPromise = writer.abort(error1);174 return Promise.all([175 promise_rejects(t, new TypeError(), writer.closed, 'closed should reject with a TypeError'),176 promise_rejects(t, new TypeError(), closePromise, 'close() should reject with a TypeError'),177 abortPromise178 ]).then(() => {179 assert_array_equals(ws.events, ['abort', error1]);180 });181}, 'Closing but then immediately aborting a WritableStream causes the stream to error');182promise_test(() => {183 let resolveClose;184 const ws = new WritableStream({185 close() {186 return new Promise(resolve => {187 resolveClose = resolve;188 });189 }190 });191 const writer = ws.getWriter();192 const closePromise = writer.close();193 return delay(0).then(() => {194 const abortPromise = writer.abort(error1);195 resolveClose();196 return Promise.all([197 writer.closed,198 abortPromise,199 closePromise200 ]);201 });202}, 'Closing a WritableStream and aborting it while it closes causes the stream to ignore the abort attempt');203promise_test(() => {204 const ws = new WritableStream();205 const writer = ws.getWriter();206 writer.close();207 return delay(0).then(() => writer.abort());208}, 'Aborting a WritableStream after it is closed is a no-op');209promise_test(t => {210 // Testing that per https://github.com/whatwg/streams/issues/620#issuecomment-263483953 the fallback to close was211 // removed.212 // Cannot use recordingWritableStream since it always has an abort213 let closeCalled = false;214 const ws = new WritableStream({215 close() {216 closeCalled = true;217 }218 });219 const writer = ws.getWriter();220 writer.abort();221 return promise_rejects(t, new TypeError(), writer.closed, 'closed should reject with a TypeError').then(() => {222 assert_false(closeCalled, 'close must not have been called');223 });224}, 'WritableStream should NOT call underlying sink\'s close if no abort is supplied (historical)');225promise_test(() => {226 let thenCalled = false;227 const ws = new WritableStream({228 abort() {229 return {230 then(onFulfilled) {231 thenCalled = true;232 onFulfilled();233 }234 };235 }236 });237 const writer = ws.getWriter();238 return writer.abort().then(() => assert_true(thenCalled, 'then() should be called'));239}, 'returning a thenable from abort() should work');240promise_test(t => {241 const ws = new WritableStream({242 write() {243 return flushAsyncEvents();244 }245 });246 const writer = ws.getWriter();247 return writer.ready.then(() => {248 const writePromise = writer.write('a');249 writer.abort(error1);250 let closedRejected = false;251 return Promise.all([252 writePromise.then(() => assert_false(closedRejected, '.closed should not resolve before write()')),253 promise_rejects(t, new TypeError(), writer.closed, '.closed should reject').then(() => {254 closedRejected = true;255 })256 ]);257 });258}, '.closed should not resolve before fulfilled write()');259promise_test(t => {260 const ws = new WritableStream({261 write() {262 return Promise.reject(error1);263 }264 });265 const writer = ws.getWriter();266 return writer.ready.then(() => {267 const writePromise = writer.write('a');268 const abortPromise = writer.abort(error2);269 let closedRejected = false;270 return Promise.all([271 promise_rejects(t, error1, writePromise, 'write() should reject')272 .then(() => assert_false(closedRejected, '.closed should not resolve before write()')),273 promise_rejects(t, new TypeError(), writer.closed, '.closed should reject')274 .then(() => {275 closedRejected = true;276 }),277 abortPromise278 ]);279 });280}, '.closed should not resolve before rejected write(); write() error should not overwrite abort() error');281promise_test(t => {282 const ws = new WritableStream({283 write() {284 return flushAsyncEvents();285 }286 }, new CountQueuingStrategy(4));287 const writer = ws.getWriter();288 return writer.ready.then(() => {289 const settlementOrder = [];290 return Promise.all([291 writer.write('1').then(() => settlementOrder.push(1)),292 promise_rejects(t, new TypeError(), writer.write('2'), 'first queued write should be rejected')293 .then(() => settlementOrder.push(2)),294 promise_rejects(t, new TypeError(), writer.write('3'), 'second queued write should be rejected')295 .then(() => settlementOrder.push(3)),296 writer.abort(error1)297 ]).then(() => assert_array_equals([1, 2, 3], settlementOrder, 'writes should be satisfied in order'));298 });299}, 'writes should be satisfied in order when aborting');300promise_test(t => {301 const ws = new WritableStream({302 write() {303 return Promise.reject(error1);304 }305 }, new CountQueuingStrategy(4));306 const writer = ws.getWriter();307 return writer.ready.then(() => {308 const settlementOrder = [];309 return Promise.all([310 promise_rejects(t, error1, writer.write('1'), 'in-flight write should be rejected')311 .then(() => settlementOrder.push(1)),312 promise_rejects(t, new TypeError(), writer.write('2'), 'first queued write should be rejected')313 .then(() => settlementOrder.push(2)),314 promise_rejects(t, new TypeError(), writer.write('3'), 'second queued write should be rejected')315 .then(() => settlementOrder.push(3)),316 writer.abort(error2)317 ]).then(() => assert_array_equals([1, 2, 3], settlementOrder, 'writes should be satisfied in order'));318 });319}, 'writes should be satisfied in order after rejected write when aborting');320promise_test(t => {321 const ws = new WritableStream({322 write() {323 return Promise.reject(error1);324 }325 });326 const writer = ws.getWriter();327 return writer.ready.then(() => {328 return Promise.all([329 promise_rejects(t, error1, writer.write('a'), 'writer.write() should reject with error from underlying write()'),330 promise_rejects(t, new TypeError(), writer.close(),331 'writer.close() should reject with error from underlying write()'),332 writer.abort()333 ]);334 });335}, 'close() should reject with TypeError when abort() is first error');336promise_test(() => {337 let resolveWrite;338 const ws = recordingWritableStream({339 write() {340 return new Promise(resolve => {341 resolveWrite = resolve;342 });343 }344 });345 const writer = ws.getWriter();346 return writer.ready.then(() => {347 writer.write('a');348 const abortPromise = writer.abort('b');349 return flushAsyncEvents().then(() => {350 assert_array_equals(ws.events, ['write', 'a'], 'abort should not be called while write is in-flight');351 resolveWrite();352 return abortPromise.then(() => {353 assert_array_equals(ws.events, ['write', 'a', 'abort', 'b'], 'abort should be called after the write finishes');354 });355 });356 });357}, 'underlying abort() should not be called until underlying write() completes');358promise_test(() => {359 let resolveClose;360 const ws = recordingWritableStream({361 close() {362 return new Promise(resolve => {363 resolveClose = resolve;364 });365 }366 });367 const writer = ws.getWriter();368 return writer.ready.then(() => {369 writer.close();370 const abortPromise = writer.abort();371 return flushAsyncEvents().then(() => {372 assert_array_equals(ws.events, ['close'], 'abort should not be called while close is in-flight');373 resolveClose();374 return abortPromise.then(() => {375 assert_array_equals(ws.events, ['close'], 'abort should not be called');376 });377 });378 });379}, 'underlying abort() should not be called if underlying close() has started');380promise_test(t => {381 let rejectClose;382 let abortCalled = false;383 const ws = new WritableStream({384 close() {385 return new Promise((resolve, reject) => {386 rejectClose = reject;387 });388 },389 abort() {390 abortCalled = true;391 }392 });393 const writer = ws.getWriter();394 return writer.ready.then(() => {395 const closePromise = writer.close();396 const abortPromise = writer.abort();397 return flushAsyncEvents().then(() => {398 assert_false(abortCalled, 'underlying abort should not be called while close is in-flight');399 rejectClose(error1);400 return promise_rejects(t, error1, abortPromise, 'abort should reject with the same reason').then(() => {401 return promise_rejects(t, error1, closePromise, 'close should reject with the same reason');402 }).then(() => {403 assert_false(abortCalled, 'underlying abort should not be called after close completes');404 });405 });406 });407}, 'if underlying close() has started and then rejects, the abort() and close() promises should reject with the ' +408 'underlying close rejection reason');409promise_test(t => {410 let resolveWrite;411 const ws = recordingWritableStream({412 write() {413 return new Promise(resolve => {414 resolveWrite = resolve;415 });416 }417 });418 const writer = ws.getWriter();419 return writer.ready.then(() => {420 writer.write('a');421 const closePromise = writer.close();422 const abortPromise = writer.abort('b');423 return flushAsyncEvents().then(() => {424 assert_array_equals(ws.events, ['write', 'a'], 'abort should not be called while write is in-flight');425 resolveWrite();426 return abortPromise.then(() => {427 assert_array_equals(ws.events, ['write', 'a', 'abort', 'b'], 'abort should be called after write completes');428 return promise_rejects(t, new TypeError(), closePromise, 'promise returned by close() should be rejected');429 });430 });431 });432}, 'an abort() that happens during a write() should trigger the underlying abort() even with a close() queued');433promise_test(t => {434 const ws = new WritableStream({435 write() {436 return new Promise(() => {});437 }438 });439 const writer = ws.getWriter();440 return writer.ready.then(() => {441 writer.write('a');442 writer.abort();443 writer.releaseLock();444 const writer2 = ws.getWriter();445 return promise_rejects(t, new TypeError(), writer2.ready,446 'ready of the second writer should be rejected with a TypeError');447 });448}, 'if a writer is created for a stream with a pending abort, its ready should be rejected with a TypeError');449promise_test(() => {450 const ws = new WritableStream();451 const writer = ws.getWriter();452 return writer.ready.then(() => {453 const closePromise = writer.close();454 const abortPromise = writer.abort();455 const events = [];456 return Promise.all([457 closePromise.then(() => { events.push('close'); }),458 abortPromise.then(() => { events.push('abort'); })459 ]).then(() => {460 assert_array_equals(events, ['close', 'abort']);461 });462 });463}, 'writer close() promise should resolve before abort() promise');464promise_test(t => {465 const ws = new WritableStream({466 write(chunk, controller) {467 controller.error(error1);468 return new Promise(() => {});469 }470 });471 const writer = ws.getWriter();472 return writer.ready.then(() => {473 writer.write('a');474 return promise_rejects(t, error1, writer.ready, 'writer.ready should reject');475 });476}, 'writer.ready should reject on controller error without waiting for underlying write');477promise_test(t => {478 let rejectWrite;479 const ws = new WritableStream({480 write() {481 return new Promise((resolve, reject) => {482 rejectWrite = reject;483 });484 }485 });486 let writePromise;487 let abortPromise;488 const events = [];489 const writer = ws.getWriter();490 writer.closed.catch(() => {491 events.push('closed');492 });493 // Wait for ws to start494 return flushAsyncEvents().then(() => {495 writePromise = writer.write('a');496 writePromise.catch(() => {497 events.push('writePromise');498 });499 abortPromise = writer.abort(error1);500 abortPromise.then(() => {501 events.push('abortPromise');502 });503 const writePromise2 = writer.write('a');504 return Promise.all([505 promise_rejects(t, new TypeError(), writePromise2, 'writePromise2 must reject with an error indicating abort'),506 promise_rejects(t, new TypeError(), writer.ready, 'writer.ready must reject with an error indicating abort'),507 flushAsyncEvents()508 ]);509 }).then(() => {510 assert_array_equals(events, [], 'writePromise, abortPromise and writer.closed must not be rejected yet');511 rejectWrite(error2);512 return Promise.all([513 promise_rejects(t, error2, writePromise,514 'writePromise must reject with the error returned from the sink\'s write method'),515 abortPromise,516 promise_rejects(t, new TypeError(), writer.closed,517 'writer.closed must reject with an error indicating abort'),518 flushAsyncEvents()519 ]);520 }).then(() => {521 assert_array_equals(events, ['writePromise', 'abortPromise', 'closed'],522 'writePromise, abortPromise and writer.closed must settle');523 const writePromise3 = writer.write('a');524 return Promise.all([525 promise_rejects(t, new TypeError(), writePromise3,526 'writePromise3 must reject with an error indicating abort'),527 promise_rejects(t, new TypeError(), writer.ready,528 'writer.ready must be still rejected with the error indicating abort')529 ]);530 }).then(() => {531 writer.releaseLock();532 return Promise.all([533 promise_rejects(t, new TypeError(), writer.ready,534 'writer.ready must be rejected with an error indicating release'),535 promise_rejects(t, new TypeError(), writer.closed,536 'writer.closed must be rejected with an error indicating release')537 ]);538 });539}, 'writer.abort() while there is an in-flight write, and then finish the write with rejection');540promise_test(t => {541 let resolveWrite;542 let controller;543 const ws = new WritableStream({544 write(chunk, c) {545 controller = c;546 return new Promise(resolve => {547 resolveWrite = resolve;548 });549 }550 });551 let writePromise;552 let abortPromise;553 const events = [];554 const writer = ws.getWriter();555 writer.closed.catch(() => {556 events.push('closed');557 });558 // Wait for ws to start559 return flushAsyncEvents().then(() => {560 writePromise = writer.write('a');561 writePromise.then(() => {562 events.push('writePromise');563 });564 abortPromise = writer.abort(error1);565 abortPromise.then(() => {566 events.push('abortPromise');567 });568 const writePromise2 = writer.write('a');569 return Promise.all([570 promise_rejects(t, new TypeError(), writePromise2, 'writePromise2 must reject with an error indicating abort'),571 promise_rejects(t, new TypeError(), writer.ready, 'writer.ready must reject with an error indicating abort'),572 flushAsyncEvents()573 ]);574 }).then(() => {575 assert_array_equals(events, [], 'writePromise, abortPromise and writer.closed must not be fulfilled/rejected yet');576 // This error is too late to change anything. abort() has already changed the stream state to 'erroring'.577 controller.error(error2);578 const writePromise3 = writer.write('a');579 return Promise.all([580 promise_rejects(t, new TypeError(), writePromise3,581 'writePromise3 must reject with an error indicating abort'),582 promise_rejects(t, new TypeError(), writer.ready,583 'writer.ready must be still rejected with the error indicating abort'),584 flushAsyncEvents()585 ]);586 }).then(() => {587 assert_array_equals(588 events, [],589 'writePromise, abortPromise and writer.closed must not be fulfilled/rejected yet even after ' +590 'controller.error() call');591 resolveWrite();592 return Promise.all([593 writePromise,594 abortPromise,595 promise_rejects(t, new TypeError(), writer.closed,596 'writer.closed must reject with an error indicating abort'),597 flushAsyncEvents()598 ]);599 }).then(() => {600 assert_array_equals(events, ['writePromise', 'abortPromise', 'closed'],601 'writePromise, abortPromise and writer.closed must settle');602 const writePromise4 = writer.write('a');603 return Promise.all([604 writePromise,605 promise_rejects(t, new TypeError(), writePromise4,606 'writePromise4 must reject with an error indicating abort'),607 promise_rejects(t, new TypeError(), writer.ready,608 'writer.ready must be still rejected with the error indicating abort')609 ]);610 }).then(() => {611 writer.releaseLock();612 return Promise.all([613 promise_rejects(t, new TypeError(), writer.ready,614 'writer.ready must be rejected with an error indicating release'),615 promise_rejects(t, new TypeError(), writer.closed,616 'writer.closed must be rejected with an error indicating release')617 ]);618 });619}, 'writer.abort(), controller.error() while there is an in-flight write, and then finish the write');620promise_test(t => {621 let resolveClose;622 let controller;623 const ws = new WritableStream({624 start(c) {625 controller = c;626 },627 close() {628 return new Promise(resolve => {629 resolveClose = resolve;630 });631 }632 });633 let closePromise;634 let abortPromise;635 const events = [];636 const writer = ws.getWriter();637 writer.closed.then(() => {638 events.push('closed');639 });640 // Wait for ws to start641 return flushAsyncEvents().then(() => {642 closePromise = writer.close();643 closePromise.then(() => {644 events.push('closePromise');645 });646 abortPromise = writer.abort(error1);647 abortPromise.then(() => {648 events.push('abortPromise');649 });650 return Promise.all([651 promise_rejects(t, new TypeError(), writer.close(),652 'writer.close() must reject with an error indicating already closing'),653 promise_rejects(t, new TypeError(), writer.ready, 'writer.ready must reject with an error indicating abort'),654 flushAsyncEvents()655 ]);656 }).then(() => {657 assert_array_equals(events, [], 'closePromise, abortPromise and writer.closed must not be fulfilled/rejected yet');658 controller.error(error2);659 return Promise.all([660 promise_rejects(t, new TypeError(), writer.close(),661 'writer.close() must reject with an error indicating already closing'),662 promise_rejects(t, new TypeError(), writer.ready,663 'writer.ready must be still rejected with the error indicating abort'),664 flushAsyncEvents()665 ]);666 }).then(() => {667 assert_array_equals(668 events, [],669 'closePromise, abortPromise and writer.closed must not be fulfilled/rejected yet even after ' +670 'controller.error() call');671 resolveClose();672 return Promise.all([673 closePromise,674 abortPromise,675 writer.closed,676 flushAsyncEvents()677 ]);678 }).then(() => {679 assert_array_equals(events, ['closePromise', 'abortPromise', 'closed'],680 'closedPromise, abortPromise and writer.closed must fulfill');681 return Promise.all([682 promise_rejects(t, new TypeError(), writer.close(),683 'writer.close() must reject with an error indicating already closing'),684 promise_rejects(t, new TypeError(), writer.ready,685 'writer.ready must be still rejected with the error indicating abort')686 ]);687 }).then(() => {688 writer.releaseLock();689 return Promise.all([690 promise_rejects(t, new TypeError(), writer.close(),691 'writer.close() must reject with an error indicating release'),692 promise_rejects(t, new TypeError(), writer.ready,693 'writer.ready must be rejected with an error indicating release'),694 promise_rejects(t, new TypeError(), writer.closed,695 'writer.closed must be rejected with an error indicating release')696 ]);697 });698}, 'writer.abort(), controller.error() while there is an in-flight close, and then finish the close');699promise_test(t => {700 let resolveWrite;701 let controller;702 const ws = recordingWritableStream({703 write(chunk, c) {704 controller = c;705 return new Promise(resolve => {706 resolveWrite = resolve;707 });708 }709 });710 let writePromise;711 let abortPromise;712 const events = [];713 const writer = ws.getWriter();714 writer.closed.catch(() => {715 events.push('closed');716 });717 // Wait for ws to start718 return flushAsyncEvents().then(() => {719 writePromise = writer.write('a');720 writePromise.then(() => {721 events.push('writePromise');722 });723 controller.error(error2);724 const writePromise2 = writer.write('a');725 return Promise.all([726 promise_rejects(t, error2, writePromise2,727 'writePromise2 must reject with the error passed to the controller\'s error method'),728 promise_rejects(t, error2, writer.ready,729 'writer.ready must reject with the error passed to the controller\'s error method'),730 flushAsyncEvents()731 ]);732 }).then(() => {733 assert_array_equals(events, [], 'writePromise and writer.closed must not be fulfilled/rejected yet');734 abortPromise = writer.abort(error1);735 abortPromise.catch(() => {736 events.push('abortPromise');737 });738 const writePromise3 = writer.write('a');739 return Promise.all([740 promise_rejects(t, error2, writePromise3,741 'writePromise3 must reject with the error passed to the controller\'s error method'),742 flushAsyncEvents()743 ]);744 }).then(() => {745 assert_array_equals(746 events, [],747 'writePromise and writer.closed must not be fulfilled/rejected yet even after writer.abort()');748 resolveWrite();749 return Promise.all([750 promise_rejects(t, error2, abortPromise,751 'abort() must reject with the error passed to the controller\'s error method'),752 promise_rejects(t, error2, writer.closed,753 'writer.closed must reject with the error passed to the controller\'s error method'),754 flushAsyncEvents()755 ]);756 }).then(() => {757 assert_array_equals(events, ['writePromise', 'abortPromise', 'closed'],758 'writePromise, abortPromise and writer.closed must fulfill/reject');759 assert_array_equals(ws.events, ['write', 'a'], 'sink abort() should not be called');760 const writePromise4 = writer.write('a');761 return Promise.all([762 writePromise,763 promise_rejects(t, error2, writePromise4,764 'writePromise4 must reject with the error passed to the controller\'s error method'),765 promise_rejects(t, error2, writer.ready,766 'writer.ready must be still rejected with the error passed to the controller\'s error method')767 ]);768 }).then(() => {769 writer.releaseLock();770 return Promise.all([771 promise_rejects(t, new TypeError(), writer.ready,772 'writer.ready must be rejected with an error indicating release'),773 promise_rejects(t, new TypeError(), writer.closed,774 'writer.closed must be rejected with an error indicating release')775 ]);776 });777}, 'controller.error(), writer.abort() while there is an in-flight write, and then finish the write');778promise_test(t => {779 let resolveClose;780 let controller;781 const ws = new WritableStream({782 start(c) {783 controller = c;784 },785 close() {786 return new Promise(resolve => {787 resolveClose = resolve;788 });789 }790 });791 let closePromise;792 let abortPromise;793 const events = [];794 const writer = ws.getWriter();795 writer.closed.then(() => {796 events.push('closed');797 });798 // Wait for ws to start799 return flushAsyncEvents().then(() => {800 closePromise = writer.close();801 closePromise.then(() => {802 events.push('closePromise');803 });804 controller.error(error2);805 return flushAsyncEvents();806 }).then(() => {807 assert_array_equals(events, [], 'closePromise must not be fulfilled/rejected yet');808 abortPromise = writer.abort(error1);809 abortPromise.then(() => {810 events.push('abortPromise');811 });812 return Promise.all([813 promise_rejects(t, error2, writer.ready,814 'writer.ready must reject with the error passed to the controller\'s error method'),815 flushAsyncEvents()816 ]);817 }).then(() => {818 assert_array_equals(819 events, [],820 'closePromise and writer.closed must not be fulfilled/rejected yet even after writer.abort()');821 resolveClose();822 return Promise.all([823 closePromise,824 promise_rejects(t, error2, writer.ready,825 'writer.ready must be still rejected with the error passed to the controller\'s error method'),826 writer.closed,827 flushAsyncEvents()828 ]);829 }).then(() => {830 assert_array_equals(events, ['closePromise', 'abortPromise', 'closed'],831 'abortPromise, closePromise and writer.closed must fulfill/reject');832 }).then(() => {833 writer.releaseLock();834 return Promise.all([835 promise_rejects(t, new TypeError(), writer.ready,836 'writer.ready must be rejected with an error indicating release'),837 promise_rejects(t, new TypeError(), writer.closed,838 'writer.closed must be rejected with an error indicating release')839 ]);840 });841}, 'controller.error(), writer.abort() while there is an in-flight close, and then finish the close');842promise_test(t => {843 let resolveWrite;844 const ws = new WritableStream({845 write() {846 return new Promise(resolve => {847 resolveWrite = resolve;848 });849 }850 });851 const writer = ws.getWriter();852 return writer.ready.then(() => {853 const writePromise = writer.write('a');854 const closed = writer.closed;855 const abortPromise = writer.abort();856 writer.releaseLock();857 resolveWrite();858 return Promise.all([859 writePromise,860 abortPromise,861 promise_rejects(t, new TypeError(), closed, 'closed should reject')]);862 });863}, 'releaseLock() while aborting should reject the original closed promise');864// TODO(ricea): Consider removing this test if it is no longer useful.865promise_test(t => {866 let resolveWrite;867 let resolveAbort;868 let resolveAbortStarted;869 const abortStarted = new Promise(resolve => {870 resolveAbortStarted = resolve;871 });872 const ws = new WritableStream({873 write() {874 return new Promise(resolve => {875 resolveWrite = resolve;876 });877 },878 abort() {879 resolveAbortStarted();880 return new Promise(resolve => {881 resolveAbort = resolve;882 });883 }884 });885 const writer = ws.getWriter();886 return writer.ready.then(() => {887 const writePromise = writer.write('a');888 const closed = writer.closed;889 const abortPromise = writer.abort();890 resolveWrite();891 return abortStarted.then(() => {892 writer.releaseLock();893 assert_equals(writer.closed, closed, 'closed promise should not have changed');894 resolveAbort();895 return Promise.all([896 writePromise,897 abortPromise,898 promise_rejects(t, new TypeError(), closed, 'closed should reject')]);899 });900 });901}, 'releaseLock() during delayed async abort() should reject the writer.closed promise');902promise_test(() => {903 let resolveStart;904 const ws = recordingWritableStream({905 start() {906 return new Promise(resolve => {907 resolveStart = resolve;908 });909 }910 });911 const abortPromise = ws.abort('done');912 return flushAsyncEvents().then(() => {913 assert_array_equals(ws.events, [], 'abort() should not be called during start()');914 resolveStart();915 return abortPromise.then(() => {916 assert_array_equals(ws.events, ['abort', 'done'], 'abort() should be called after start() is done');917 });918 });919}, 'sink abort() should not be called until sink start() is done');920promise_test(() => {921 let resolveStart;922 let controller;923 const ws = recordingWritableStream({924 start(c) {925 controller = c;926 return new Promise(resolve => {...

Full Screen

Full Screen

start.js

Source:start.js Github

copy

Full Screen

...17 assert_equals(writer.desiredSize, 1, 'desiredSize should be 1');18 writer.write('a');19 assert_equals(writer.desiredSize, 0, 'desiredSize should be 0 after writer.write()');20 // Wait and verify that write isn't called.21 return flushAsyncEvents()22 .then(() => {23 assert_array_equals(ws.events, [], 'write should not be called until start promise resolves');24 resolveStartPromise();25 return writer.ready;26 })27 .then(() => assert_array_equals(ws.events, ['write', 'a'],28 'write should not be called until start promise resolves'));29}, 'underlying sink\'s write should not be called until start finishes');30promise_test(() => {31 let resolveStartPromise;32 const ws = recordingWritableStream({33 start() {34 return new Promise(resolve => {35 resolveStartPromise = resolve;36 });37 }38 });39 const writer = ws.getWriter();40 writer.close();41 assert_equals(writer.desiredSize, 1, 'desiredSize should be 1');42 // Wait and verify that write isn't called.43 return flushAsyncEvents().then(() => {44 assert_array_equals(ws.events, [], 'close should not be called until start promise resolves');45 resolveStartPromise();46 return writer.closed;47 });48}, 'underlying sink\'s close should not be called until start finishes');49test(() => {50 const passedError = new Error('horrible things');51 let writeCalled = false;52 let closeCalled = false;53 assert_throws(passedError, () => {54 // recordingWritableStream cannot be used here because the exception in the55 // constructor prevents assigning the object to a variable.56 new WritableStream({57 start() {58 throw passedError;59 },60 write() {61 writeCalled = true;62 },63 close() {64 closeCalled = true;65 }66 });67 }, 'constructor should throw passedError');68 assert_false(writeCalled, 'write should not be called');69 assert_false(closeCalled, 'close should not be called');70}, 'underlying sink\'s write or close should not be called if start throws');71promise_test(() => {72 const ws = recordingWritableStream({73 start() {74 return Promise.reject();75 }76 });77 // Wait and verify that write or close aren't called.78 return flushAsyncEvents()79 .then(() => assert_array_equals(ws.events, [], 'write and close should not be called'));80}, 'underlying sink\'s write or close should not be invoked if the promise returned by start is rejected');81promise_test(t => {82 const rejection = { name: 'this is checked' };83 const ws = new WritableStream({84 start() {85 return {86 then(onFulfilled, onRejected) { onRejected(rejection); }87 };88 }89 });90 return promise_rejects(t, rejection, ws.getWriter().closed, 'closed promise should be rejected');91}, 'returning a thenable from start() should work');92done();

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1var wptDriver = require('wptdriver');2wptDriver.flushAsyncEvents();3var wptDriver = require('wptdriver');4wptDriver.flushAsyncEvents();5var wptDriver = require('wptdriver');6wptDriver.flushAsyncEvents();7var wptDriver = require('wptdriver');8wptDriver.flushAsyncEvents();9var wptDriver = require('wptdriver');10wptDriver.flushAsyncEvents();11var wptDriver = require('wptdriver');12wptDriver.flushAsyncEvents();13var wptDriver = require('wptdriver');14wptDriver.flushAsyncEvents();15var wptDriver = require('wptdriver');16wptDriver.flushAsyncEvents();17var wptDriver = require('wptdriver');18wptDriver.flushAsyncEvents();19var wptDriver = require('wptdriver');20wptDriver.flushAsyncEvents();21var wptDriver = require('wptdriver');22wptDriver.flushAsyncEvents();23var wptDriver = require('wptdriver');24wptDriver.flushAsyncEvents();25var wptDriver = require('wptdriver');26wptDriver.flushAsyncEvents();27var wptDriver = require('wptdriver');28wptDriver.flushAsyncEvents();29var wptDriver = require('wptdriver');30wptDriver.flushAsyncEvents();

Full Screen

Using AI Code Generation

copy

Full Screen

1var wpt = require('webpagetest');2var wpt = new WebPageTest('www.webpagetest.org');3var options = {4};5wpt.runTest(options, function(err, data) {6 if (err) return console.log(err);7 wpt.getTestResults(data.data.testId, function(err, data) {8 if (err) return console.log(err);9 console.log(data.data.runs[1].firstView.TTFB);10 });11});12var WebPageTest = require('webpagetest');13var wpt = new WebPageTest('www.webpagetest.org');14module.exports = wpt;15Your name to display (optional):16Your name to display (optional):17var wpt = require('webpagetest');18var wpt = new WebPageTest('www.webpagetest.org');19var options = {20};21wpt.runTest(options, function(err, data) {22 if (err) return console.log(err);23 wpt.getTestResults(data.data.testId, function(err, data) {24 if (err) return console.log(err);25 console.log(data.data.runs[1].firstView.TTFB);26 });27});28Your name to display (optional):

Full Screen

Using AI Code Generation

copy

Full Screen

1var wpt = require('webpagetest');2var wpt = new WebPageTest('www.webpagetest.org');3 if (err) {4 console.log(err);5 } else {6 console.log(data);7 }8});9 if (err) {10 console.log(err);11 } else {12 console.log(data);13 }14});15 if (err) {16 console.log(err);17 } else {18 console.log(data);19 }20});21 if (err) {22 console.log(err);23 } else {24 console.log(data);25 }26});27 if (err) {28 console.log(err);29 } else {30 console.log(data);31 }32});33 if (err) {34 console.log(err);35 } else {36 console.log(data);37 }38});39 if (err) {40 console.log(err);41 } else {42 console.log(data);43 }44});45 if (err) {46 console.log(err);47 } else {48 console.log(data);49 }50});51 if (err) {52 console.log(err);53 } else {54 console.log(data

Full Screen

Using AI Code Generation

copy

Full Screen

1var wptdriver = require('wptdriver');2wptdriver.flushAsyncEvents(function() {3});4var wptdriver = require('wptdriver');5wptdriver.flushAsyncEvents(function() {6});7var wptdriver = require('wptdriver');8wptdriver.flushAsyncEvents(function() {9});10var wptdriver = require('wptdriver');11wptdriver.flushAsyncEvents(function() {12});13var wptdriver = require('wptdriver');14wptdriver.flushAsyncEvents(function() {15});16var wptdriver = require('wptdriver');17wptdriver.flushAsyncEvents(function() {18});19var wptdriver = require('wptdriver');20wptdriver.flushAsyncEvents(function() {21});22var wptdriver = require('wptdriver');23wptdriver.flushAsyncEvents(function() {24});25var wptdriver = require('wptdriver');26wptdriver.flushAsyncEvents(function() {27});28var wptdriver = require('wptdriver');29wptdriver.flushAsyncEvents(function() {30});31var wptdriver = require('wptdriver');32wptdriver.flushAsyncEvents(function() {33});

Full Screen

Using AI Code Generation

copy

Full Screen

1const wpt = require('webpagetest');2wpt.flushAsyncEvents(function () {3 console.log('flushed all async events');4});5const wpt = require('webpagetest');6wpt.flushAsyncEvents().then(function () {7 console.log('flushed all async events');8});9flushAsyncEvents(callback)10flushAsyncEvents(callback)11flushAsyncEvents()12flushAsyncEvents()13const wpt = require('webpagetest');14wpt.flushAsyncEvents(function () {15 console.log('flushed all async events');16});17const wpt = require('webpagetest');18wpt.flushAsyncEvents().then(function () {19 console.log('flushed all async events');20});21flushAsyncEvents(callback)22flushAsyncEvents(callback)23flushAsyncEvents()24flushAsyncEvents()25const wpt = require('webpagetest');26wpt.flushAsyncEvents(function () {27 console.log('flushed all async events');28});29const wpt = require('webpagetest');30wpt.flushAsyncEvents().then(function () {31 console.log('flushed all async events');32});33flushAsyncEvents(callback)34flushAsyncEvents(callback)35flushAsyncEvents()36flushAsyncEvents()37const wpt = require('webpagetest');

Full Screen

Automation Testing Tutorials

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.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run wpt automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful