version: 2 workflows: version: 2 full_test: jobs: - prep-deps - prep-scss: requires: - prep-deps - test-lint: requires: - prep-deps - test-unit: requires: - prep-deps - test-integration-mascara: requires: - prep-deps - prep-scss - test-integration-flat: requires: - prep-deps - prep-scss jobs: prep-deps: docker: - image: circleci/node:8-browsers steps: - checkout - run: name: Update npm command: 'sudo npm install -g npm@latest' - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - run: name: Install npm command: npm install - save_cache: key: dependency-cache-{{ checksum "package-lock.json" }} paths: - node_modules prep-scss: docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - run: name: Get Cache key # this allows us to checksum against a whole directory command: ls -laR ui/app/css/ > scss_checksum - restore_cache: key: scss-cache-{{ checksum "scss_checksum" }} - run: name: Build for integration tests command: npm run test:integration:build - save_cache: key: scss-cache-{{ checksum "scss_checksum" }} paths: - ui/app/css/output test-lint: docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - run: name: Test command: npm run lint test-unit: docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - run: name: test:coverage command: npm run test:coverage test-integration-flat: docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - restore_cache: key: scss-cache-{{ checksum "scss_checksum" }} - run: name: test:integration:flat command: npm run test:flat test-integration-mascara: docker: - image: circleci/node:8-browsers steps: - checkout - restore_cache: key: dependency-cache-{{ checksum "package-lock.json" }} - restore_cache: key: scss-cache-{{ checksum "scss_checksum" }} - run: name: test:integration:mascara command: npm run test:mascara