Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add --no-sandbox argument to Puppeteer when metal-a11y is called with --ci-mode #17

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

enjikaka
Copy link

@enjikaka enjikaka commented Apr 19, 2018

Fix for #16. Published this on npm under karlsson-metal-a11y-checker to test.

Changes:

  • Add --no-sandbox argument to Puppeteer when metal-a11y is called with --ci-mode
  • Correct some JSDocs

To test with docker;

Dockerfile:

FROM node:8-slim

# See https://crbug.com/795759
RUN apt-get update && apt-get install -yq libgconf-2-4

# Install latest chrome dev package and fonts to support major charsets (Chinese, Japanese, Arabic, Hebrew, Thai and a few others)
# Note: this installs the necessary libs to make the bundled version of Chromium that Puppeteer
# installs, work.
RUN apt-get update && apt-get install -y wget --no-install-recommends \
    && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
    && apt-get update \
    && apt-get install -y google-chrome-unstable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst ttf-freefont \
      --no-install-recommends \
    && rm -rf /var/lib/apt/lists/* \
    && apt-get purge --auto-remove -y curl \
    && rm -rf /src/*.deb

# It's a good idea to use dumb-init to help prevent zombie chrome processes.
ADD https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64 /usr/local/bin/dumb-init
RUN chmod +x /usr/local/bin/dumb-init

# Uncomment to skip the chromium download when installing puppeteer. If you do,
# you'll need to launch puppeteer with:
#     browser.launch({executablePath: 'google-chrome-unstable'})
# ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true

RUN mkdir -p /home/pptruser/app
WORKDIR /home/pptruser/app

# Install puppeteer so it's available in the container.
RUN yarn add puppeteer

# Add user so we don't need --no-sandbox.
RUN groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \
    && mkdir -p /home/pptruser/Downloads \
    && chown -R pptruser:pptruser /home/pptruser

# Run everything after as non-privileged user.
USER pptruser

RUN yarn add karlsson-metal-a11y-checker
RUN echo '{ "scripts": { "start": "metal-a11y --ci-mode --root ./test --content index.html" } }' > package.json
ENTRYPOINT [ "npm", "start" ]

docker-compose.yml:

version: '3'

services:
  axe:
    build:
      context: .
      dockerfile: Dockerfile
    working_dir: /home/pptruser/app
    volumes:
      - "./build:/home/pptruser/app/test"

Run docker-compose up axe to run metal-a11y on build folder on host.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant