'use strict'; const Worker = require('tiny-worker'); const { defaultCase, findLibrary } = require('./test_case') describe('web worker', function() { before(async function() { this.hljsPath = await findLibrary(); this.worker = new Worker(function() { self.onmessage = function(event) { if (event.data.action === 'importScript') { importScripts(event.data.script); postMessage(1); } else { var result = hljs.highlight(event.data, { language: 'javascript' }); postMessage(result.value); } }; }); const done = new Promise(resolve => this.worker.onmessage = resolve); this.worker.postMessage({ action: 'importScript', script: this.hljsPath }); return done; }); it('should highlight text', function(done) { this.worker.onmessage = event => { const actual = event.data; // the " will be encoded since it's not being // filtered by the browsers innerHTML implementation const expect = '' + 'var say = ' + '"Hello";'; actual.should.equal(expect); done(); }; this.worker.postMessage(defaultCase.code); }); after(function() { this.worker.terminate(); }); });