import expect from 'expect'; import type {WebWorker} from 'puppeteer-core/internal/api/WebWorker.js'; import type {ConsoleMessage} from 'puppeteer-core/internal/common/ConsoleMessage.js';
import {getTestState, setupTestBrowserHooks} from './mocha-utils.js'; import {waitEvent} from './utils.js';
describe('Workers', function () {
setupTestBrowserHooks();
let result = ''; // TODO: Chrome is flaky and workerFunction is sometimes not yet // defined. Generally, it should not be the case but it look like // there is a race condition between Runtime.evaluate and the // worker's main script execution. for (let i = 0; i < 5; i++) { try {
result = await worker.evaluate(() => { return (globalThis as any).workerFunction();
}); break;
} catch {}
await new Promise(resolve => { return setTimeout(resolve, 200);
});
}
expect(result).toBe('worker function result');
await page.goto(server.EMPTY_PAGE);
expect(page.workers()).toHaveLength(0);
});
it('should emit created and destroyed events', async () => { const {page} = await getTestState();
// Navigate to a page with a worker.
await Promise.all([
waitEvent(page, 'workercreated'),
page.goto(server.PREFIX + '/worker/worker.html', {
waitUntil: 'networkidle0',
}),
]);
await expect(testResponse!.text()).resolves.toContain( 'hello from the worker',
);
});
});
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.