Jasmine skill
Skill Pyfagorass/bookofspells/skills/lambdatest/jasmine-skill
Generates Jasmine tests in JavaScript. BDD-style framework with spies and async support. Use when user mentions "Jasmine", "jasmine.createSpy", "toHaveBeenCalled". Triggers on: "Jasmine", "jasmine test", "createSpy", "Jasmine spec".From its SKILL.md
npx -y skills add Pyfagorass/bookofspells --skill jasmine-skillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
3.5 KB, 770 tokens by cl100k_base, as published. Nobody here has run it
Jasmine Testing Skill
Core Patterns
Basic Test
describe('Calculator', () => {
let calc;
beforeEach(() => { calc = new Calculator(); });
it('should add two numbers', () => {
expect(calc.add(2, 3)).toBe(5);
});
it('should throw on divide by zero', () => {
expect(() => calc.divide(10, 0)).toThrowError('Division by zero');
});
});
Matchers
expect(value).toBe(exact); // === strict
expect(value).toEqual(object); // Deep equality
expect(value).toBeTruthy();
expect(value).toBeFalsy();
expect(value).toBeNull();
expect(value).toBeUndefined();
expect(value).toBeDefined();
expect(value).toBeNaN();
expect(value).toBeGreaterThan(3);
expect(value).toBeCloseTo(0.3, 5);
expect(str).toContain('sub');
expect(str).toMatch(/pattern/);
expect(arr).toContain(item);
expect(fn).toThrow();
expect(fn).toThrowError('message');
// Negation
expect(value).not.toBe(other);
Spies
describe('UserService', () => {
let service, api;
beforeEach(() => {
api = jasmine.createSpyObj('api', ['get', 'post']);
service = new UserService(api);
});
it('fetches user from API', async () => {
api.get.and.returnValue(Promise.resolve({ name: 'Alice' }));
const user = await service.getUser(1);
expect(user.name).toBe('Alice');
expect(api.get).toHaveBeenCalledWith('/users/1');
expect(api.get).toHaveBeenCalledTimes(1);
});
});
// Spy on existing method
spyOn(obj, 'method').and.returnValue(42);
spyOn(obj, 'method').and.callThrough(); // Call original
spyOn(obj, 'method').and.throwError('err');
Async Testing
it('fetches data', async () => {
const data = await fetchData();
expect(data).toBeDefined();
});
// With done callback
it('fetches data', (done) => {
fetchData().then(data => {
expect(data).toBeDefined();
done();
});
});
// Clock control
beforeEach(() => { jasmine.clock().install(); });
afterEach(() => { jasmine.clock().uninstall(); });
it('handles timeout', () => {
const callback = jasmine.createSpy();
setTimeout(callback, 1000);
jasmine.clock().tick(1001);
expect(callback).toHaveBeenCalled();
});
Setup: npm install jasmine --save-dev && npx jasmine init
Run: npx jasmine or npx jasmine spec/calculatorSpec.js
Deep Patterns
See reference/playbook.md for production-grade patterns:
| Section | What You Get |
|---|---|
| §1 Project Setup | jasmine.json, TypeScript, spec reporter config |
| §2 Spies — Complete API | spyOn, createSpyObj, callFake, returnValues, call tracking |
| §3 Async Testing | async/await, expectAsync, promise matchers |
| §4 Custom Matchers | Domain-specific matchers, asymmetric matchers |
| §5 Test Organization | Nested describe, shared state, focused/excluded |
| §6 Fetch & Module Mocking | globalThis.fetch spy, HTTP error handling |
| §7 Browser Testing | DOM creation, keyboard events, focus trapping with Karma |
| §8 CI/CD Integration | GitHub Actions with coverage, browser testing |
| §9 Debugging Table | 12 common problems with causes and fixes |
| §10 Best Practices | 14-item checklist for production Jasmine testing |
What ships with it: 2 files
21.1 KB alongside SKILL.md
reference/
- advanced-patterns.md2.9 KB
- playbook.md18.1 KB