rafx
Version:
RequestAnimationFrame (rAF) Based Promise-Like Implementation
75 lines (70 loc) • 2.38 kB
JavaScript
describe('Testing skipFrames', () => {
var VERSION = process.env.npm_package_version;
var TYPE = process.env.RAFX_TYPE;
beforeAll(async () => {
await page.addScriptTag({path:'./dist/rafx.v' + VERSION + '.' + TYPE + '.js'})
});
test('does it return a thenable', async () => {
const result = await page.evaluate(function(){
return new Promise(function(resolve){
resolve([
rafx.skipFrames(60) instanceof rafx.Thenable,
rafx.async().then((v)=>v) instanceof rafx.Thenable
]);
});
});
expect(result).toEqual([true,true]);
});
test('how long does it take for 60 frames', async () => {
expect.assertions(2);
const result = await page.evaluate(function(){
return new Promise(async function(resolve){
let start = performance.now();
let end = await new Promise(function(res){
rafx
.skipFrames(60)
.then(function(){res(performance.now())});
});
resolve(end - start);
});
});
expect(result).toBeGreaterThan(1000 - 2 * 17);
expect(result).toBeLessThan(1000 + 2 * 17);
});
test('passing negative frame count should be same as passing 1 or 0', async () => {
expect.assertions(6);
const result = await page.evaluate(function(){
return new Promise(async function(resolve){
let negative = await new Promise(function(res){
const start = performance.now();
rafx
.skipFrames(-1)
.then(function(){res(performance.now() - start)});
});;
let zero = await new Promise(function(res){
const start = performance.now();
rafx
.skipFrames(0)
.then(function(){res(performance.now() - start)});
});
let positive = await new Promise(function(res){
const start = performance.now();
rafx
.skipFrames(1)
.then(function(){res(performance.now() - start)});
});
resolve([negative - zero, zero - positive, positive - negative]);
});
}),
between = function(min,max){
const between = function(v){
expect(v).toBeGreaterThan(min);
expect(v).toBeLessThan(max);
return between;
}
return between;
},
step = 16; //a bit less then an average frame, 17/3 makes Travis CI fail on master branch
between(-step,step)(result[0])(result[1])(result[2]);
});
});