Research
Security News
Quasar RAT Disguised as an npm Package for Detecting Vulnerabilities in Ethereum Smart Contracts
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
excalibur-jasmine
Advanced tools
This library is built to help test excalibur, and games made with excalibur.
These matchers are only supported in a browser context.
npm install excalibur-jasmine --save-dev --save-exact
In your jasmine test file
import { ExcaliburMatchers, ExcaliburAsyncMatchers } from 'excalibur-jasmine';
import * as ex from 'excalibur';
describe('A new thingy', () => {
beforeAll(() => {
jasmine.addMatchers(ExcaliburMatchers);
jasmine.addAsyncMatchers(ExcaliburAsyncMatchers);
});
it('should be fast', () => {
...
});
});
Using image matchers with karma, you will want to add a proxy to smooth over /base/
this repo is a good example of how to configure it.
proxies: {
// smooths over loading files because karma prepends '/base/' to everything
'/src/' : '/base/src/',
'/test-images/': '/base/test-images/'
},
Now with jasmine async matchers you can remove a lot of the old boilerplate need to match images!
import { ExcaliburAsyncMatchers } from 'excalibur-jasmine'
describe('A new thingy', () => {
beforeAll(() => {
jasmine.addAsyncMatchers(ExcaliburAsyncMatchers);
});
it('should match images', async () => {
let engine = new ex.Engine({width: 100, height: 100});
await expectAsync(engine.canvas).toEqualImage('images/expectedcanvas.png', .99);
});
});
For loading images, there is a helper called ensureImagesLoaded
that will ensure that any image resources are loaded into the test before comparing them.
import { ExcaliburMatchers, ExcaliburAsyncMatchers, ensureImagesLoaded } from 'excalibur-jasmine'
import * as ex from 'excalibur';
describe('A new thingy', () => {
beforeAll(() => {
jasmine.addMatchers(ExcaliburMatchers);
jasmine.addAsyncMatchers(ExcaliburAsyncMatchers);
});
it('should match images', (done) => {
let engine = new ex.Engine({width: 100, height: 100});
ensureImagesLoaded(engine.canvas, 'images/expectedcanvas.png').then(([canvasImage, expectedImage]) => {
expect(canvasImage).toEqualImage(expectedImage, .99);
done()
})
});
});
This matcher is useful for comparing positions or velocities on objects in excalibur
import { ExcaliburMatchers, ensureImagesLoaded }
import * as ex from 'excalibur';
describe('A new thingy', () => {
beforeAll(() => {
jasmine.addMatchers(ExcaliburMatchers)
});
it('should be at position', () => {
let actor = new ex.Actor({
x: 1,
y: 10
});
expect(actor.pos).toBeVector(new ex.Vector(1, 10));
});
});
This matcher is useful for checking bespoke properties on an actor
import { ExcaliburMatchers, ensureImagesLoaded }
import * as ex from 'excalibur';
describe('A new thingy', () => {
beforeAll(() => {
jasmine.addMatchers(ExcaliburMatchers)
});
it('should have values', () => {
let actor = new ex.Actor({
x: 1,
y: 10,
collisionType: ex.CollisionType.Fixed,
color: ex.Color.Red
});
expect(actor).toHaveValues({
x: 1,
y: 10,
collisionType: ex.CollisionType.Fixed,
color: ex.Color.Red
});
});
});
FAQs
Jasmine matchers for testing excalibur
The npm package excalibur-jasmine receives a total of 56 weekly downloads. As such, excalibur-jasmine popularity was classified as not popular.
We found that excalibur-jasmine demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover a malicious npm package posing as a tool for detecting vulnerabilities in Etherium smart contracts.
Security News
Research
A supply chain attack on Rspack's npm packages injected cryptomining malware, potentially impacting thousands of developers.
Research
Security News
Socket researchers discovered a malware campaign on npm delivering the Skuld infostealer via typosquatted packages, exposing sensitive data.