babelacc

compare different implementations of the text alternative computation  https://p.ce9e.org/babelacc/
git clone https://git.ce9e.org/babelacc.git

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 });