Merge pull request #11048 from openlayers/test-action
Run tests as a GitHub CI workflow
This commit is contained in:
@@ -2,7 +2,7 @@ version: 2
|
|||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
docker:
|
docker:
|
||||||
- image: circleci/node:current-browsers
|
- image: circleci/node:current
|
||||||
|
|
||||||
working_directory: ~/repo
|
working_directory: ~/repo
|
||||||
|
|
||||||
@@ -13,16 +13,6 @@ jobs:
|
|||||||
keys:
|
keys:
|
||||||
- v2-dependencies-{{ checksum "package-lock.json" }}
|
- v2-dependencies-{{ checksum "package-lock.json" }}
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Install Headless Chrome Dependencies
|
|
||||||
command: |
|
|
||||||
sudo apt-get install -yq \
|
|
||||||
gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 \
|
|
||||||
libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 \
|
|
||||||
libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 \
|
|
||||||
libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates \
|
|
||||||
fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget
|
|
||||||
|
|
||||||
- run:
|
- run:
|
||||||
name: Install Dependencies
|
name: Install Dependencies
|
||||||
command: npm install
|
command: npm install
|
||||||
@@ -32,21 +22,6 @@ jobs:
|
|||||||
- node_modules
|
- node_modules
|
||||||
key: v2-dependencies-{{ checksum "package-lock.json" }}
|
key: v2-dependencies-{{ checksum "package-lock.json" }}
|
||||||
|
|
||||||
- run:
|
|
||||||
name: Run Tests
|
|
||||||
command: npm test
|
|
||||||
|
|
||||||
- store_artifacts:
|
|
||||||
path: /home/circleci/.npm/_logs
|
|
||||||
|
|
||||||
- store_artifacts:
|
|
||||||
path: coverage/
|
|
||||||
destination: coverage
|
|
||||||
|
|
||||||
- store_artifacts:
|
|
||||||
path: rendering/cases/
|
|
||||||
destination: rendering
|
|
||||||
|
|
||||||
- run:
|
- run:
|
||||||
name: Build Examples
|
name: Build Examples
|
||||||
command: npm run build-examples
|
command: npm run build-examples
|
||||||
|
|||||||
50
.github/workflows/test.yml
vendored
Normal file
50
.github/workflows/test.yml
vendored
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
name: Test
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
env:
|
||||||
|
CI: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
run:
|
||||||
|
name: Node ${{ matrix.node }} / ${{ matrix.os }}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os:
|
||||||
|
- ubuntu-latest
|
||||||
|
node:
|
||||||
|
- 14
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Clone Repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: Set Node.js Version
|
||||||
|
uses: actions/setup-node@v1
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node }}
|
||||||
|
|
||||||
|
- run: node --version
|
||||||
|
- run: npm --version
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Run Tests
|
||||||
|
run: npm test
|
||||||
|
|
||||||
|
- name: Store Rendering Test Artifacts
|
||||||
|
if: ${{ always() }}
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: rendering-tests
|
||||||
|
path: rendering/cases/
|
||||||
@@ -27,5 +27,5 @@ new Map({
|
|||||||
|
|
||||||
render({
|
render({
|
||||||
message: 'Vector tile layer renders with vector render mode',
|
message: 'Vector tile layer renders with vector render mode',
|
||||||
tolerance: 0.01,
|
tolerance: 0.02,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -48,4 +48,7 @@ new Map({
|
|||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
render({message: 'Vector tile layer rotates with vector layer on top'});
|
render({
|
||||||
|
message: 'Vector tile layer rotates with vector layer on top',
|
||||||
|
tolerance: 0.01,
|
||||||
|
});
|
||||||
|
|||||||
@@ -24,4 +24,4 @@ const map = new Map({
|
|||||||
});
|
});
|
||||||
|
|
||||||
map.getView().setRotation(Math.PI / 4);
|
map.getView().setRotation(Math.PI / 4);
|
||||||
render({message: 'Vector tile layer rotates'});
|
render({message: 'Vector tile layer rotates', tolerance: 0.01});
|
||||||
|
|||||||
@@ -25,5 +25,5 @@ new Map({
|
|||||||
|
|
||||||
render({
|
render({
|
||||||
message: 'Vector tile layer renders',
|
message: 'Vector tile layer renders',
|
||||||
tolerance: 0.01,
|
tolerance: 0.02,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -46,4 +46,4 @@ const unmanaged = new VectorLayer({
|
|||||||
});
|
});
|
||||||
unmanaged.setMap(map);
|
unmanaged.setMap(map);
|
||||||
|
|
||||||
render();
|
render({tolerance: 0.01});
|
||||||
|
|||||||
@@ -381,7 +381,7 @@ if (require.main === module) {
|
|||||||
.option('headless', {
|
.option('headless', {
|
||||||
describe: 'Launch Puppeteer in headless mode',
|
describe: 'Launch Puppeteer in headless mode',
|
||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
default: false,
|
default: !!process.env.CI,
|
||||||
})
|
})
|
||||||
.option('puppeteer-args', {
|
.option('puppeteer-args', {
|
||||||
describe: 'Additional args for Puppeteer',
|
describe: 'Additional args for Puppeteer',
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ const path = require('path');
|
|||||||
|
|
||||||
module.exports = function (karma) {
|
module.exports = function (karma) {
|
||||||
karma.set({
|
karma.set({
|
||||||
browsers: ['Chrome'],
|
browsers: [process.env.CI ? 'ChromeHeadless' : 'Chrome'],
|
||||||
browserDisconnectTolerance: 2,
|
browserDisconnectTolerance: 2,
|
||||||
frameworks: ['mocha'],
|
frameworks: ['mocha'],
|
||||||
client: {
|
client: {
|
||||||
|
|||||||
Reference in New Issue
Block a user