| // Only test a subset of tests with, e.g., ?1-10 in the URL. |
| // Can be used together with <meta name="variant" content="..."> |
| // Sample usage: |
| // for (const test of tests) { |
| // subsetTest(async_test, test.fn, test.name); |
| // } |
| (function() { |
| var subTestStart = 0; |
| var subTestEnd = Infinity; |
| var match; |
| if (location.search) { |
| match = /(?:^\?|&)(\d+)-(\d+|last)(?:&|$)/.exec(location.search); |
| if (match) { |
| subTestStart = parseInt(match[1], 10); |
| if (match[2] !== "last") { |
| subTestEnd = parseInt(match[2], 10); |
| } |
| } |
| // Below is utility code to generate <meta> for copy/paste into tests. |
| // Sample usage: |
| // test.html?split=1000 |
| match = /(?:^\?|&)split=(\d+)(?:&|$)/.exec(location.search); |
| if (match) { |
| var testsPerVariant = parseInt(match[1], 10); |
| add_completion_callback(tests => { |
| var total = tests.length; |
| var template = '<meta name="variant" content="?%s-%s">'; |
| var metas = []; |
| for (var i = 1; i < total - testsPerVariant; i = i + testsPerVariant) { |
| metas.push(template.replace("%s", i).replace("%s", i + testsPerVariant - 1)); |
| } |
| metas.push(template.replace("%s", i).replace("%s", "last")); |
| var pre = document.createElement('pre'); |
| pre.textContent = metas.join('\n'); |
| document.body.insertBefore(pre, document.body.firstChild); |
| document.getSelection().selectAllChildren(pre); |
| }); |
| } |
| } |
| function shouldRunSubTest(currentSubTest) { |
| return currentSubTest >= subTestStart && currentSubTest <= subTestEnd; |
| } |
| var currentSubTest = 0; |
| function subsetTest(testFunc, ...args) { |
| currentSubTest++; |
| if (shouldRunSubTest(currentSubTest)) { |
| return testFunc(...args); |
| } |
| return null; |
| } |
| self.shouldRunSubTest = shouldRunSubTest; |
| self.subsetTest = subsetTest; |
| })(); |