diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..a4c01892 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,57 @@ +defaults: &defaults + steps: + - checkout + - run: + name: Checkout submodule + command: | + git submodule sync + git submodule update --init --recursive + + - restore_cache: + keys: + - npm-deps-{{ checksum "package.json" }} + - npm-deps- + - run: + name: Install npm dependencies + command: npm install + - save_cache: + key: npm-deps-{{ checksum "package.json" }} + paths: + - node_modules + + - run: + name: Verify screenshots and generate diff + command: node dockers/Screenshotter/screenshotter.js --seleniumIP localhost -b $CIRCLE_JOB --verify --diff + - run: + name: Generate new screenshots + when: always + command: | + rm -rf test/screenshotter/images/* + node dockers/Screenshotter/screenshotter.js --seleniumIP localhost -b $CIRCLE_JOB + + - store_artifacts: + path: test/screenshotter/images + destination: image + - store_artifacts: + path: test/screenshotter/diff + destination: diff + +version: 2 +jobs: + firefox: + docker: + - image: circleci/node:6 + - image: selenium/standalone-firefox:2.48.2 + <<: *defaults + chrome: + docker: + - image: circleci/node:6 + - image: selenium/standalone-chrome:2.48.2 + <<: *defaults + +workflows: + version: 2 + screenshotter: + jobs: + - firefox + - chrome diff --git a/dockers/Screenshotter/README.md b/dockers/Screenshotter/README.md index 217c7e0a..fa724d9d 100644 --- a/dockers/Screenshotter/README.md +++ b/dockers/Screenshotter/README.md @@ -48,6 +48,11 @@ fashion are well suited for visual inspection, but for exact binary comparisons it would be neccessary to carefully set up the environment to match the one used by the Docker approach. +You can also verify and generate screenshots online using a CI(continuous +integration) service. Fork the project, enable [CircleCI](https://circleci.com/) on your repository, +and push your changes. Diffs and generated screenshots are available at +build artifacts. + ## Choosing the list of test cases Both `screenshotter.js` and `screenshotter.sh` will accept