worker-test.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. describe('Worker', function () {
  2. var workerErrorEventToError = function (errorEvent) {
  3. var errorText = 'Error in Worker';
  4. if (errorEvent.filename !== undefined) {
  5. errorText += ' ' + errorEvent.filename;
  6. }
  7. if (errorEvent.lineno !== undefined) {
  8. errorText += '(' + errorEvent.lineno + ')';
  9. }
  10. if (errorEvent.message !== undefined) {
  11. errorText += ': ' + errorEvent.message;
  12. }
  13. return new Error(errorText);
  14. };
  15. var canRunWorkerTestInCurrentContext = function () {
  16. var workerConstructorExists = typeof Worker !== 'undefined';
  17. var locationPropertyExists = typeof location !== 'undefined';
  18. var runningOnFileUriScheme = locationPropertyExists && location.protocol === 'file:';
  19. // The Worker constructor doesn't exist in some older browsers nor does it exist in non-browser contexts like Node.
  20. // Additionally some browsers (at least Chrome) don't allow Workers over file URIs.
  21. // To prevent false negative test failures in the cases where Workers are unavailable for either of those reasons
  22. // we skip this test.
  23. return workerConstructorExists && !runningOnFileUriScheme;
  24. };
  25. if (canRunWorkerTestInCurrentContext()) {
  26. it('can import es6-shim', function (done) {
  27. var worker = new Worker('worker-runner.workerjs');
  28. worker.addEventListener('error', function (errorEvent) { throw workerErrorEventToError(errorEvent); });
  29. worker.addEventListener('message', function (messageEvent) {
  30. expect(messageEvent.data).to.eql('ready');
  31. done();
  32. });
  33. });
  34. }
  35. });