To run tests ------------ Make sure your environment is set up with: `yarn` In a separate process, run the WebSockets server: `yarn ws-server` Run the browser tests using Karma: `yarn test` Run the node.js tests: `yarn test-node` Run tslint: `yarn lint` Run format with clang-format: `yarn format` Run all checks (lint/format/browser test/test-node): `yarn ci` Before Commit ------------ Please make sure you pass all following checks before commit - gulp lint (tslint) - gulp format:enforce (clang-format) - gulp promisetest (promise a+ test) - yarn test (karma browser test) - gulp test-node (node test) You can run `yarn ci` to do all those checks for you. You can also add the script into your git pre-commit hook ``` echo -e 'exec npm run ci' > .git/hooks/pre-commit chmod u+x .git/hooks/pre-commit ``` Webdriver Test -------------- `zone.js` also supports running webdriver e2e tests. 1. run locally ``` yarn webdriver-start yarn webdriver-http yarn webdriver-test ``` 2. run locally with sauce connect ``` // export SAUCE_USERNAME and SAUCE_ACCESS_KEY export SAUCE_USERNAME=XXXX export SAUCE_ACCESS_KEY=XXX sc -u $SAUCE_USERNAME -k $SAUCE_ACCESS_KEY yarn webdriver-http yarn webdriver-sauce-test ``` Releasing --------- Releasing `zone.js` is a two step process. 1. Create a PR which updates the changelog, and get it merged using normal merge process. 2. Once the PR is merged check out the merge SHA of the PR and release `zone.js` from that SHA and tag it. #### 1. Creating a PR for release ``` export PREVIOUS_ZONE_TAG=`git tag -l 'zone.js-*' | tail -n1` export VERSION=`(cd packages/zone.js; npm version patch --no-git-tag-version)` export VERSION=${VERSION#v} export TAG="zone.js-${VERSION}" echo "Releasing zone.js version ${TAG}. Last release was ${PREVIOUS_ZONE_TAG}." yarn gulp changelog:zonejs ``` Inspect the `packages/zone.js/CHANGELOG.md` for any issues and than commit it with this command. Create a dry run build to make sure everything is ready. ``` yarn bazel --output_base=$(mktemp -d) run //packages/zone.js:npm_package.pack --workspace_status_command="echo BUILD_SCM_VERSION $VERSION" ``` If everything looks good commit the changes and push them to your origin to create a PR. ``` git co -b "release_${TAG}" git add packages/zone.js/CHANGELOG.md packages/zone.js/package.json git ci -m "release: cut the ${TAG} release" git push origin "release_${TAG}" ``` #### 2. Cutting a release Check out the SHA on master which has the changelog commit of the zone.js ``` git fetch upstream export VERSION=`(node -e "console.log(require('./packages/zone.js/package.json').version)")` export TAG="zone.js-${VERSION}" export SHA=`git log upstream/master --oneline -n 1000 | grep "release: cut the ${TAG} release" | cut -f 1 -d " "` git co ${SHA} yarn bazel \ --output_base=$(mktemp -d) run //packages/zone.js:npm_package.publish \ --workspace_status_command="echo BUILD_SCM_VERSION $VERSION" git tag ${TAG} ${SHA} git push upstream ${TAG} ```