| /** |
| * AUTO-GENERATED - DO NOT EDIT. Source: https://github.com/gpuweb/cts |
| **/ |
| |
| import { DefaultTestFileLoader } from '../framework/file_loader.js'; |
| import { Logger } from '../framework/logging/logger.js'; |
| import { parseQuery } from '../framework/query/parseQuery.js'; |
| import { AsyncMutex } from '../framework/util/async_mutex.js'; |
| import { assert } from '../framework/util/util.js'; |
| import { optionEnabled } from './helper/options.js'; |
| import { TestWorker } from './helper/test_worker.js'; |
| |
| (async () => { |
| const loader = new DefaultTestFileLoader(); |
| const qs = new URLSearchParams(window.location.search).getAll('q'); |
| assert(qs.length === 1, 'currently, there must be exactly one ?q='); |
| const testcases = await loader.loadCases(parseQuery(qs[0])); |
| await addWPTTests(testcases); |
| })(); // Note: `async_test`s must ALL be added within the same task. This function *must not* be async. |
| |
| |
| function addWPTTests(testcases) { |
| const worker = optionEnabled('worker') ? new TestWorker(false) : undefined; |
| const log = new Logger(false); |
| const mutex = new AsyncMutex(); |
| const running = []; |
| |
| for (const testcase of testcases) { |
| const name = testcase.query.toString(); |
| |
| const wpt_fn = function () { |
| const p = mutex.with(async () => { |
| const [rec, res] = log.record(name); |
| |
| if (worker) { |
| await worker.run(rec, name); |
| } else { |
| await testcase.run(rec); |
| } |
| |
| this.step(() => { |
| // Unfortunately, it seems not possible to surface any logs for warn/skip. |
| if (res.status === 'fail') { |
| throw (res.logs || []).map(s => s.toJSON()).join('\n\n'); |
| } |
| }); |
| this.done(); |
| }); |
| running.push(p); |
| return p; |
| }; |
| |
| async_test(wpt_fn, name); |
| } |
| |
| return Promise.all(running).then(() => log); |
| } |
| //# sourceMappingURL=wpt.js.map |