diff --git a/.editorconfig b/.editorconfig index e3b84d0..58b359a 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,7 +11,7 @@ insert_final_newline = true indent_style = space indent_size = 4 -[{azure-pipelines.yml,package.json, ci/*.yml}] +[{*.yml,package.json}] # The indent size used in the `package.json` file cannot be changed # https://github.com/npm/npm/pull/3180#issuecomment-16336516 indent_size = 2 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0c7ba71..514f7d8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,81 +7,81 @@ on: - 'test*' pull_request: branches: [ master ] - + jobs: build: runs-on: ubuntu-latest name: Build steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 12 - - name: Cache node modules - uses: actions/cache@v2 - env: - cache-name: cache-node-modules - with: - # npm cache files are stored in `~/.npm` on Linux/macOS - path: ~/.npm - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - name: Npm install - run: npm ci - - name: Build - run: npm run build - - name: Pack - run: | - npm pack - mv html2canvas-*.tgz html2canvas.tgz - tar --list --verbose --file=html2canvas.tgz - - name: Upload npm pack - uses: actions/upload-artifact@v2 - with: - name: npm - path: html2canvas.tgz - - name: Upload dist - uses: actions/upload-artifact@v2 - with: - name: dist - path: dist - - name: Upload build - uses: actions/upload-artifact@v2 - with: - name: build - path: build - + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: 12 + - name: Cache node modules + uses: actions/cache@v2 + env: + cache-name: cache-node-modules + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + - name: Npm install + run: npm ci + - name: Build + run: npm run build + - name: Pack + run: | + npm pack + mv html2canvas-*.tgz html2canvas.tgz + tar --list --verbose --file=html2canvas.tgz + - name: Upload npm pack + uses: actions/upload-artifact@v2 + with: + name: npm + path: html2canvas.tgz + - name: Upload dist + uses: actions/upload-artifact@v2 + with: + name: dist + path: dist + - name: Upload build + uses: actions/upload-artifact@v2 + with: + name: build + path: build + test: runs-on: ubuntu-latest name: Test steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 - with: - node-version: 12 - - name: Cache node modules - uses: actions/cache@v2 - env: - cache-name: cache-node-modules - with: - # npm cache files are stored in `~/.npm` on Linux/macOS - path: ~/.npm - key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-${{ env.cache-name }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - name: Npm install - run: npm ci - - name: Build - run: npm run build - - name: Lint - run: npm run lint - - name: Unit tests - run: npm run unittest + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: 12 + - name: Cache node modules + uses: actions/cache@v2 + env: + cache-name: cache-node-modules + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + - name: Npm install + run: npm ci + - name: Build + run: npm run build + - name: Lint + run: npm run lint + - name: Unit tests + run: npm run unittest browser-test: strategy: fail-fast: false @@ -91,22 +91,22 @@ jobs: name: Linux Firefox Stable targetBrowser: Firefox_Stable xvfb: true - - os: ubuntu-latest + - os: ubuntu-latest name: Linux Chrome Stable targetBrowser: Chrome_Stable xvfb: true - - os: macos-latest + - os: macos-latest name: OSX Safari Stable targetBrowser: Safari_Stable - - os: macos-latest + - os: macos-latest name: iOS Simulator Safari 12 targetBrowser: Safari_IOS_12 xcode: /Applications/Xcode_10.3.app - - os: macos-latest + - os: macos-latest name: iOS Simulator Safari 13 targetBrowser: Safari_IOS_13 xcode: /Applications/Xcode_11.6_beta.app - - os: macos-latest + - os: macos-latest name: iOS Simulator Safari 14 targetBrowser: Safari_IOS_14 xcode: /Applications/Xcode_12_beta.app @@ -115,7 +115,7 @@ jobs: targetBrowser: IE_9 - os: windows-latest name: Windows Internet Explorer 10 (Emulated) - targetBrowser: IE_10 + targetBrowser: IE_10 - os: windows-latest name: Windows Internet Explorer 11 targetBrowser: IE_11 @@ -168,10 +168,11 @@ jobs: - name: Upload screenshots uses: actions/upload-artifact@v2 with: - name: ReftestResults - path: tmp/reftests - publish: + name: reftest-results + path: tmp/reftests + publish: runs-on: ubuntu-latest + name: Publish if: startsWith(github.ref, 'refs/tags/test') needs: browser-test steps: @@ -199,7 +200,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - upload_url: ${{ steps.create_release.outputs.upload_url }} + upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./dist/html2canvas.js asset_name: html2canvas.js asset_content_type: text/javascript @@ -208,7 +209,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - upload_url: ${{ steps.create_release.outputs.upload_url }} + upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./dist/html2canvas.min.js asset_name: html2canvas.min.js asset_content_type: text/javascript @@ -217,7 +218,79 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - upload_url: ${{ steps.create_release.outputs.upload_url }} + upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: ./dist/html2canvas.esm.js asset_name: html2canvas.esm.js asset_content_type: text/javascript + docs: + runs-on: ubuntu-latest + name: Build docs + needs: browser-test + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v1 + with: + node-version: 12 + - name: Cache node modules + uses: actions/cache@v2 + env: + cache-name: cache-node-modules + with: + # npm cache files are stored in `~/.npm` on Linux/macOS + path: ~/.npm + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-${{ env.cache-name }}- + ${{ runner.os }}-build- + ${{ runner.os }}- + - name: Npm install + run: npm ci + - name: Download library + uses: actions/download-artifact@v2 + with: + name: dist + path: www/static/dist + - name: Download test results + uses: actions/download-artifact@v2 + with: + name: reftest-results + path: www/static/results + - name: Copy reftests to docs website + run: cp -R tests/reftests www/static/tests/reftests && cp -R tests/assets www/static/tests/assets && cp tests/test.js www/static/tests/test.js + - name: Create reftest result index + run: npm run build:reftest-result-list www/static/results/metadata www/src/results.json + - name: Create reftest previewer + run: npm run build:reftest-preview + - name: Clean metadata folder + run: rm -rf www/static/results/metadata + - name: Build docs + run: npm run build && cd www && npm install && npm run build && cd .. + - name: Upload docs + uses: actions/upload-artifact@v2 + with: + name: docs + path: www/public + - name: Echo + run: echo ${{ github.ref }} + publish-docs: + runs-on: ubuntu-latest + name: Publish Docs + if: ${{ github.ref == 'master' }} + needs: docs + steps: + - uses: actions/checkout@v2 + with: + persist-credentials: false + - name: Download docs + uses: actions/download-artifact@v2 + with: + name: docs + path: docs + - name: Publish docs + uses: JamesIves/github-pages-deploy-action@3.5.9 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + BRANCH: gh-pages-test + FOLDER: docs + SINGLE_COMMIT: true + CLEAN: true