diff options
Diffstat (limited to 'tooling/talertest/selenium/testhost.html')
-rw-r--r-- | tooling/talertest/selenium/testhost.html | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tooling/talertest/selenium/testhost.html b/tooling/talertest/selenium/testhost.html new file mode 100644 index 000000000..01641547d --- /dev/null +++ b/tooling/talertest/selenium/testhost.html @@ -0,0 +1,63 @@ +<!doctype html> +<html> + <head> + <title>Browser Test Host</title> + + <script src="/testlib/selenium/esprima.js"></script> + <script src="/testlib/selenium/escodegen.browser.js"></script> + <script src="/testlib/selenium/instrumenter.js"></script> + + <script src="/src/vendor/URI.js"></script> + + <!-- for instrumentation to work, we have to use the non-csp version --> + <script src="/testlib/selenium/system.js"></script> + + </head> + <body> + <script> + document.body.appendChild(document.createTextNode(`starting test`)); + document.body.appendChild(document.createElement("br")); + + var requestCoverage = false; + + let parser = document.createElement('a'); + + let oldTranslate = System.translate.bind(System); + System.translate = (load) => { + let srcP = oldTranslate(load); + if (!requestCoverage) { + return srcP; + } + + parser.href = load.name; + let modName = parser.pathname.substring(1); + + if (/.*\/?taler-emscripten-lib.js/.test(load.name)) { + // don't instrument emscripten + document.body.appendChild(document.createTextNode(`not instrumenting ${modName}`)); + document.body.appendChild(document.createElement("br")); + return srcP; + } + + let inst = new Instrumenter(); + document.body.appendChild(document.createTextNode(`instrumenting ${modName}`)); + document.body.appendChild(document.createElement("br")); + + return Promise.resolve(srcP).then((src) => { + return inst.instrumentSync(src, modName); + }); + } + + System.config({ + baseURL: "/", + defaultJSExtensions: true, + meta: { + "src/emscripten/taler-emscripten-lib": { + format: "global", + exports: "Module", + }, + }, + }); + </script> + </body> +</html> |