@cloudflare/puppeteer
Version:
Puppeteer fork for Cloudflare Browser Run (formerly Browser Rendering)
65 lines • 2.32 kB
JavaScript
;
/**
* @license
* Copyright 2023 Google Inc.
* SPDX-License-Identifier: Apache-2.0
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const node_test_1 = require("node:test");
const expect_1 = __importDefault(require("expect"));
const sinon_1 = __importDefault(require("sinon"));
const Deferred_js_1 = require("./Deferred.js");
(0, node_test_1.describe)('DeferredPromise', function () {
(0, node_test_1.it)('should catch errors', async () => {
// Async function before try/catch.
async function task() {
await new Promise(resolve => {
return setTimeout(resolve, 50);
});
}
// Async function that fails.
function fails() {
const deferred = Deferred_js_1.Deferred.create();
setTimeout(() => {
deferred.reject(new Error('test'));
}, 25);
return deferred;
}
const expectedToFail = fails();
await task();
let caught = false;
try {
await expectedToFail.valueOrThrow();
}
catch (err) {
(0, expect_1.default)(err.message).toEqual('test');
caught = true;
}
(0, expect_1.default)(caught).toBeTruthy();
});
(0, node_test_1.it)('Deferred.race should cancel timeout', async function () {
const clock = sinon_1.default.useFakeTimers();
try {
const deferred = Deferred_js_1.Deferred.create();
const deferredTimeout = Deferred_js_1.Deferred.create({
message: 'Race did not stop timer',
timeout: 100,
});
clock.tick(50);
await Promise.all([
Deferred_js_1.Deferred.race([deferred, deferredTimeout]),
deferred.resolve(),
]);
clock.tick(150);
(0, expect_1.default)(deferredTimeout.value()).toBeInstanceOf(Error);
(0, expect_1.default)(deferredTimeout.value()?.message).toContain('Timeout cleared');
}
finally {
clock.restore();
}
});
});
//# sourceMappingURL=Deferred.test.js.map