diff --git a/packages/driver/src/cypress/script_utils.ts b/packages/driver/src/cypress/script_utils.ts index 7af8b90d8a52..1d6f2ea9dee3 100644 --- a/packages/driver/src/cypress/script_utils.ts +++ b/packages/driver/src/cypress/script_utils.ts @@ -17,7 +17,11 @@ const extractSourceMap = ([script, contents]) => { const sourceMap = $sourceMapUtils.extractSourceMap(script, contents) return $sourceMapUtils.initializeSourceMapConsumer(script, sourceMap) - .return([script, contents]) + .catch((_err) => { + // if WebAssembly is missing, we can't consume source maps, but it shouldn't block Cy + // like in WebKit on Windows: https://github.com/microsoft/playwright/issues/2876 + }) + .then(() => [script, contents]) } const evalScripts = (specWindow, scripts: any = []) => { diff --git a/packages/driver/src/cypress/source_map_utils.ts b/packages/driver/src/cypress/source_map_utils.ts index 24adc14faf74..5b78e1ff3c5c 100644 --- a/packages/driver/src/cypress/source_map_utils.ts +++ b/packages/driver/src/cypress/source_map_utils.ts @@ -1,6 +1,5 @@ import _ from 'lodash' import { SourceMapConsumer } from 'source-map' -import Promise from 'bluebird' // @ts-ignore import mappingsWasm from 'source-map/lib/mappings.wasm' @@ -12,19 +11,19 @@ const regexDataUrl = /data:[^;\n]+(?:;charset=[^;\n]+)?;base64,([a-zA-Z0-9+/]+={ let sourceMapConsumers = {} -const initializeSourceMapConsumer = (file, sourceMap) => { - if (!sourceMap) return Promise.resolve(null) +const initializeSourceMapConsumer = async (file, sourceMap) => { + if (!sourceMap) return null // @ts-ignore SourceMapConsumer.initialize({ 'lib/mappings.wasm': mappingsWasm, }) - return Promise.resolve(new SourceMapConsumer(sourceMap)).then((consumer) => { - sourceMapConsumers[file.fullyQualifiedUrl] = consumer + const consumer = await new SourceMapConsumer(sourceMap) - return consumer - }) + sourceMapConsumers[file.fullyQualifiedUrl] = consumer + + return consumer } const extractSourceMap = (file, fileContents) => {