diff --git a/packages/wasm/package.json b/packages/wasm/package.json index 3553e8bb5efa..3575e9b5da26 100644 --- a/packages/wasm/package.json +++ b/packages/wasm/package.json @@ -55,7 +55,7 @@ "lint:eslint": "eslint . --cache --cache-location '../../eslintcache/' --format stylish", "lint:prettier": "prettier --check \"{src,test}/**/*.ts\"", "pack": "npm pack", - "test": "cross-env PORT=1337 jest", + "test": "node test/scripts/ensure-browser-bundle.js && cross-env PORT=1337 jest", "test:watch": "jest --watch" }, "volta": { diff --git a/packages/wasm/test/integration.test.js b/packages/wasm/test/integration.test.js index b36c8a0c36d4..5e92cfb1f854 100644 --- a/packages/wasm/test/integration.test.js +++ b/packages/wasm/test/integration.test.js @@ -1,15 +1,7 @@ /* global page, window */ -const fs = require('fs'); -const path = require('path'); const HOST = `http://localhost:${process.env.PORT}`; -if (!fs.existsSync(path.resolve(__dirname, '../../browser/build/bundle.js'))) { - throw new Error( - 'ERROR: No browser bundle found in `packages/browser/build/`. Please run `yarn build` in the browser package before running wasm tests.', - ); -} - describe('Wasm', () => { it('captured exception should include modified frames and debug_meta attribute', async () => { await page.goto(HOST); diff --git a/packages/wasm/test/scripts/ensure-browser-bundle.js b/packages/wasm/test/scripts/ensure-browser-bundle.js new file mode 100644 index 000000000000..6a8e1a6beb2e --- /dev/null +++ b/packages/wasm/test/scripts/ensure-browser-bundle.js @@ -0,0 +1,14 @@ +const fs = require('fs'); +const path = require('path'); +const { execSync } = require('child_process'); + +function ensureBrowserBundle() { + const browserPackageDir = path.resolve(__dirname, '../../../browser'); + if (!fs.existsSync(path.resolve(browserPackageDir, 'build/bundle.js'))) { + // eslint-disable-next-line no-console + console.warn('\nWARNING: Missing browser bundle. Bundle will be created before running wasm integration tests.'); + execSync(`pushd ${browserPackageDir} && yarn build:bundle && popd`); + } +} + +ensureBrowserBundle();