lambdatest/agent-skills
mocha-skill
Generates Mocha tests in JavaScript with Chai assertions and Sinon mocking. Use when user mentions "Mocha", "Chai", "sinon", "describe/it (not Jest)". Triggers on: "Mocha", "Chai", "sinon", "mocha test".
Agent workflows
Testing
Use judgment
Installs
198
Stars
366
Security
No audit
Freshness
Unknown
Updated
—
First seen Mar 5, 2026
Installation
Project
Global
Entire repo
Entire repo (global)
$
npx skills add lambdatest/agent-skills --skill mocha-skill
Copy
SKILL.md
Mocha Testing Skill
Core Patterns
Basic Test with Chai
const { expect } = require('chai');
describe('Calculator', () => {
let calc;
beforeEach(() => { calc = new Calculator(); });
it('should add two numbers', () => {
expect(calc.add(2, 3)).to.equal(5);
});
it('should throw on divide by zero', () => {
expect(() => calc.divide(10, 0)).to.throw('Division by zero');
});
});
Chai Assertions
expect(value).to.equal(5);
expect(arr).to.have.lengthOf(3);
expect(obj).to.have.property('name');
expect(str).to.include('hello');
expect(fn).to.throw(Error);
expect(arr).to.deep.equal([1, 2, 3]);
expect(obj).to.deep.include({ name: 'Alice' });
Sinon Mocking
const sinon = require('sinon');
describe('UserService', () => {
let sandbox;
beforeEach(() => { sandbox = sinon.createSandbox(); });
afterEach(() => { sandbox.restore(); });
it('fetches user from API', async () => {
const stub = sandbox.stub(api, 'get').resolves({ name: 'Alice' });
const user = await userService.getUser(1);
expect(user.name).to.equal('Alice');
expect(stub.calledOnce).to.be.true;
});
});
Async Testing
it('should fetch data', async () => {
const data = await fetchData();
expect(data).to.have.property('id');
});
it('callback style', (done) => {
fetchData((err, data) => {
expect(err).to.be.null;
done();
});
});
Anti-Patterns
Bad
Good
Why
Missing done()
Use async/await
Hanging tests
No sandbox
sinon.createSandbox()
Stubs leak
Arrow in describe
Regular function for this.timeout()
Context
Quick Reference
Task
Command
Run all
npx mocha
Watch
npx mocha --watch
Grep
npx mocha --grep "login"
Timeout
npx mocha --timeout 10000
Recursive
npx mocha --recursive
Setup: npm install mocha chai sinon --save-dev
Deep Patterns → reference/playbook.md
§
Section
Lines
1
Production Configuration
mocharc, NYC coverage, TypeScript
2
Testing with Chai + Sinon
Stubs, spies, assertions
3
Advanced Sinon Patterns
Fake timers, nock HTTP, sequential
4
Async Patterns
Promise, await, callback, events
5
Hooks & Test Organization
Lifecycle, nesting, grep tags
6
Custom Reporters & Plugins
Reporter class, root hooks
7
Express/API Testing
Supertest integration
8
CI/CD Integration
GitHub Actions, services
9
Debugging Quick-Reference
10 common problems
10
Best Practices Checklist
13 items