dockerfiles/Dockerfile.browser
# CI test image for unit/lint/type tests
FROM node:14-alpine as browser-feature-builder
RUN apk add --update bash python3 make gcc g++ musl-dev xvfb-run
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY babel.config.js lerna.json .eslintignore .eslintrc.js jest.config.js tsconfig.json ./
ADD min_packages.tar .
COPY bin ./bin
COPY packages ./packages
RUN npx lerna bootstrap
RUN npm run build
RUN npm pack --verbose packages/js/
RUN npm pack --verbose packages/browser/
RUN npm pack --verbose packages/node/
RUN npm pack --verbose packages/plugin-angular/
RUN npm pack --verbose packages/plugin-react/
RUN npm pack --verbose packages/plugin-vue/
RUN npm pack --verbose packages/web-worker/
COPY test/browser/features test/browser/features
WORKDIR /app/test/browser/features/fixtures
RUN npm install --no-package-lock --no-save ../../../../bugsnag-browser-*.tgz
RUN npm install --no-package-lock --no-save ../../../../bugsnag-plugin-react-*.tgz
RUN npm install --no-package-lock --no-save ../../../../bugsnag-plugin-vue-*.tgz
RUN npm install --no-package-lock --no-save ../../../../bugsnag-web-worker-*.tgz
WORKDIR plugin_angular/ng
RUN npm install --no-package-lock --no-save \
../../../../../../bugsnag-plugin-angular-*.tgz \
../../../../../../bugsnag-node-*.tgz \
../../../../../../bugsnag-browser-*.tgz \
../../../../../../bugsnag-js-*.tgz
# install the dependencies and build each fixture
WORKDIR /app/test/browser/features/fixtures
RUN find . -name package.json -type f -mindepth 2 -maxdepth 3 ! -path "./node_modules/*" | \
xargs -I % bash -c 'cd `dirname %` && npm install --no-package-lock && npm run build'
# once the fixtures are built we no longer need node_modules and
# it makes the COPY later on much faster if we don't have them
RUN rm -fr **/*/node_modules/
# The maze-runner browser tests (W3C protocol)
FROM 855461928731.dkr.ecr.us-west-1.amazonaws.com/maze-runner-releases:latest-v8-cli as browser-maze-runner
COPY --from=browser-feature-builder /app/test/browser /app/test/browser/
WORKDIR /app/test/browser