- commit
- 5124749dff42b89baf1d0d1f3f8d41a9842b453d
- parent
- 395d1260d86312f594ee3d956f33ca5df33be9ed
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2019-03-25 19:40
combine into concrete fuzzer
Diffstat
| M | Makefile | 5 | +++++ |
| A | fuzz.html | 38 | ++++++++++++++++++++++++++++++++++++++ |
| A | fuzz/index.js | 66 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
3 files changed, 109 insertions, 0 deletions
diff --git a/Makefile b/Makefile
@@ -1,7 +1,12 @@ -1 1 all: babel.js fuzz.js -1 2 1 3 babel.js: src/babel.js src/axs.js src/eval.patch 2 4 browserify $< -o $@ 3 5 patch $@ src/eval.patch 4 6 -1 7 fuzz.js: fuzz/index.js fuzz/*.js node_modules/aria-api/instrumented.js node_modules/aria-api/lib/name-inst.js -1 8 browserify $< -o $@ -1 9 5 10 node_modules/aria-api/instrumented.js: node_modules/aria-api/index.js 6 11 cat $< | sed 's/name\.js/name-inst\.js/' > $@ 7 12
diff --git a/fuzz.html b/fuzz.html
@@ -0,0 +1,38 @@ -1 1 <!DOCTYPE html> -1 2 <html> -1 3 <head> -1 4 <meta charset="utf-8" /> -1 5 <title>Babelacc fuzzer</title> -1 6 <link rel="stylesheet" href="style.css" /> -1 7 </head> -1 8 <body> -1 9 <table> -1 10 <thead> -1 11 <tr> -1 12 <th>tested paths</th> -1 13 <th>errors found</th> -1 14 </tr> -1 15 </thead> -1 16 <tbody> -1 17 <tr> -1 18 <td id="ba-fingerprints">0</td> -1 19 <td id="ba-errors">0</td> -1 20 </tr> -1 21 </tbody> -1 22 </table> -1 23 -1 24 <table> -1 25 <thead> -1 26 <tr> -1 27 <th>HTML</th> -1 28 <th>accdc</th> -1 29 <th>aria-api</th> -1 30 </tr> -1 31 </thead> -1 32 <tbody id="ba-reports"></tbody> -1 33 </table> -1 34 <div id="ba-preview"></div> -1 35 -1 36 <script src="fuzz.js"></script> -1 37 </body> -1 38 </html>
diff --git a/fuzz/index.js b/fuzz/index.js
@@ -0,0 +1,66 @@
-1 1 var ariaApi = require('aria-api/instrumented.js');
-1 2 var accdc = require('w3c-alternative-text-computation');
-1 3
-1 4 var fuzzer = require('./fuzzer');
-1 5 var html = require('./html');
-1 6
-1 7 var preview = document.querySelector('#ba-preview');
-1 8 var fingerprints = document.querySelector('#ba-fingerprints');
-1 9 var errors = document.querySelector('#ba-errors');
-1 10 var reports = document.querySelector('#ba-reports');
-1 11
-1 12 var oracle = function(input) {
-1 13 preview.innerHTML = input.toString();
-1 14 var el = preview.querySelector('#test') || preview.children[0] || preview;
-1 15 var v1, v2;
-1 16
-1 17 try {
-1 18 v1 = accdc.calcNames(el).name;
-1 19 } catch (error) {
-1 20 v1 = error;
-1 21 }
-1 22
-1 23 try {
-1 24 v2 = ariaApi.getName(el);
-1 25 } catch (error) {
-1 26 v2 = error;
-1 27 }
-1 28
-1 29 if (v1 !== v2) {
-1 30 return {
-1 31 'html': preview.innerHTML,
-1 32 'v1': v1,
-1 33 'v2': v2,
-1 34 };
-1 35 }
-1 36 };
-1 37
-1 38 var renderReport = function(report) {
-1 39 var tr = document.createElement('tr');
-1 40 var td1 = document.createElement('td');
-1 41 td1.textContent = report.html;
-1 42 tr.append(td1);
-1 43 var td2 = document.createElement('td');
-1 44 td2.textContent = report.v1;
-1 45 tr.append(td2);
-1 46 var td3 = document.createElement('td');
-1 47 td3.textContent = report.v2;
-1 48 tr.append(td3);
-1 49 return tr;
-1 50 };
-1 51
-1 52 document.addEventListener('DOMContentLoaded', function() {
-1 53 var covPath = 'node_modules/aria-api/lib/name.js';
-1 54 var corpus = [];
-1 55 for (var i = 0; i < 10; i++) {
-1 56 corpus.push(new html.Element(10));
-1 57 }
-1 58 fuzzer.run(corpus, oracle, covPath, function(fingerprint, c) {
-1 59 fingerprints.textContent = c;
-1 60 }, function(report) {
-1 61 reports.append(renderReport(report));
-1 62 errors.textContent = reports.children.length;
-1 63 }, function() {
-1 64 preview.innerHTML = 'DONE';
-1 65 });
-1 66 });