Compare commits

...

16 Commits

Author SHA1 Message Date
Jeffrey Warren
7715fa2716 xvfb-run --auto-servernum npm run core-tests 2021-01-18 17:09:32 -05:00
jywarren
db180e9570 add recommended deps for tape-run 2021-01-18 21:56:43 +00:00
jywarren
0d38f0c2df name change for brevity 2021-01-18 21:47:34 +00:00
Barun Acharya
ade797d39b GitHub actions running parallel (#1787)
* try running tests parallely

* setup composite actions

* Update continuous-integration.yml

* setup all jobs

* just install instead of setup

* trying ci without ubuntu package deps

* cache node modules in ci

* remove action.yml
2021-01-13 16:18:44 -05:00
Harsh Khandeparkar
88df59a2ee fix<actions>: include more dependencies 2021-01-13 02:40:11 +05:30
Harsh Khandeparkar
f094457f17 fix<actions>: merge dependency installs in one command 2021-01-13 02:35:14 +05:30
Harsh Khandeparkar
a9cf52e9e5 fix: try more changes
- fix: install `libcairo2-dev` explicitly with apt.
- fix: use Ubuntu 18.04
2021-01-13 02:27:32 +05:30
Barun Acharya
89435c868d Update .github/workflows/continuous-integration.yml 2021-01-13 02:24:13 +05:30
Harsh Khandeparkar
d4d442557b fix: use ubuntu latest for github actions
Co-authored-by: Barun Acharya <47106543+daemon1024@users.noreply.github.com>
2021-01-13 02:11:11 +05:30
Jeffrey Warren
68f82f6847 trying npm run setup 2021-01-12 15:09:43 -05:00
daemon1024
cd1aeda639 use resemblejs in gif-tests 2021-01-11 15:21:00 +05:30
Jeffrey Warren
6c63cc7fc7 Update .github/workflows/continuous-integration.yml
Co-authored-by: Barun Acharya <47106543+daemon1024@users.noreply.github.com>
2021-01-05 17:39:56 -05:00
Jeffrey Warren
474a3f8547 Update continuous-integration.yml 2021-01-05 16:51:44 -05:00
Jeffrey Warren
b42249f471 add apt-get prereqs 2021-01-05 16:01:16 -05:00
Jeffrey Warren
78620c77e5 npm install 2020-12-29 19:03:30 -05:00
Jeffrey Warren
1fcc522c2b try moving to Github Actions from Travis for CI 2020-12-29 19:01:42 -05:00
3 changed files with 236 additions and 6 deletions

209
.github/workflows/tests.yml vendored Normal file
View File

@@ -0,0 +1,209 @@
name: tests
on: [pull_request]
jobs:
base-tests:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: '12'
check-latest: true
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
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: Install Dependencies
run: npm install
- name: "Base istanbul/tape node tests"
run: npm test
benchmark-tests:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: '12'
check-latest: true
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
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: Install Dependencies
run: npm install
- name: "Benchmark tests"
run: npm run benchmark
gif-tests:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: '12'
check-latest: true
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
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: Install Dependencies
run: npm install
- name: "Gif tests"
run: npm run gif-test
browserify-core-tests:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: '12'
check-latest: true
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
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: Install Dependencies
run: npm install
- run: sudo apt-get install xvfb
- name: "Browserify core tests and run"
run: grunt tests && xvfb-run --auto-servernum npm run core-tests
jsmine-ui-tests:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: '12'
check-latest: true
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
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: Install Dependencies
run: npm install
- name: "Jasmine UI tests (mocked browser env)"
run: npm run test-ui
jest-ui-tests:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: '12'
check-latest: true
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
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: Install Dependencies
run: npm install
- name: "jest-puppeteer UI tests (full browser env)"
run: npm run test-ui-2
cli-tests:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: '12'
check-latest: true
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
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: Install Dependencies
run: npm install
- name: "CLI tests"
run: npm run test-cli
grunt-build-test:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v2
- name: Setup node
uses: actions/setup-node@v2
with:
node-version: '12'
check-latest: true
- name: Cache node modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
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: Install Dependencies
run: npm install
- name: "Grunt build test of dev environment"
run: grunt build
## Cache NPM folder
# cache:
# directories:
# - ~/.npm
# - ~/.cache

View File

@@ -14,7 +14,7 @@
"test-ui-2": "node ./node_modules/.bin/jest",
"test-cli": "node test/cli/*.js | tap-spec",
"setup": "npm i && npm i -g grunt grunt-cli && npm rebuild --build-from-source && grunt build",
"start": "grunt serve"
"start": "grunt serve"
},
"lint-staged": {
"*.js": [
@@ -106,6 +106,7 @@
"lint-staged": "^10.0.3",
"looks-same": "^7.0.0",
"matchdep": "^2.0.0",
"resemblejs": "^3.2.5",
"tap-spec": "^5.0.0",
"tape": "^4.9.2",
"tape-run": "^8.0.0",

View File

@@ -1,6 +1,8 @@
const test = require('tape'),
base64Img = require('base64-img');
const compare = require('resemblejs').compare;
const ImageSequencer = require('../../../src/ImageSequencer');
const test_gif = require('../images/test.gif.js');
@@ -15,19 +17,37 @@ target = 'test_outputs';
* @param {String} [input="test_gif"] optional input image. Default is a test gif.
*/
module.exports = (moduleName, options, benchmark, input) => {
let sequencer = ImageSequencer({ui: false});
let sequencer = ImageSequencer({ ui: false });
sequencer.loadImages(input || test_gif);
sequencer.addSteps(moduleName, options);
test(`${moduleName} module works correctly`, t => {
sequencer.run({mode: 'test'}, () => {
test(`${moduleName} module works correctly`, (t) => {
sequencer.run({ mode: 'test' }, () => {
let result = sequencer.steps[1].output.src;
base64Img.imgSync(result, target, `${moduleName}-result`);
base64Img.imgSync(benchmark, target, `${moduleName}-benchmark`);
t.equal(result === benchmark, true, `${moduleName} module works correctly with Gif`);
let mismatch = 100;
compare(
result,
benchmark,
{ returnEarlyThreshold: 5 },
(err, { rawMisMatchPercentage }) => {
if (err) {
console.log('An error while comparing!');
} else {
mismatch = rawMisMatchPercentage;
}
}
);
t.equal(
mismatch < 5,
true,
`${moduleName} module works correctly with Gif`
);
sequencer = null;
t.end();
});
});
};
};