Agent skill · software engineering · github
javascript-typescript-jest
Best practices for writing JavaScript/TypeScript tests using Jest, including mocking strategies, test structure, and common patterns.
Why this skill is useful
Codifies best practices for structuring and writing tests in JavaScript/TypeScript with Jest, which the AI could infer but now has clear guidelines.
What it needs
About 1k tokens when loaded. Last updated 2026-08-07. 37,534 stars on the source repository.
What this skill does
Test Structure Name test files with .test.ts or .test.js suffix Place test files next to the code they test or in a dedicated tests directory Use descriptive test names that explain the expected behavior Use nested describe blocks to organize related tests Follow the pattern: describe('Component/Function/Class', () => { it('should do something', () => {}) }) Effective Mocking Mock external dependencies (APIs, databases, etc.) to isolate your tests Use jest.mock() for module-level mocks Use jest.spyOn() for specific function mocks Use mockImplementation() or mockReturnValue() to define mock behavior Reset mocks between tests with jest.resetAllMocks() in afterEach Testing Async Code Always return promises or use async/await syntax in tests Use resolves/rejects matchers for promises Set appropriate timeouts for slow tests with jest.setTimeout() Snapshot Testing Use snapshot tests for UI components or complex objects that change infrequently Keep snapshots small and focused Review snapshot changes carefully before committing Testing React Components Use React Testing Library over Enzyme for testing components Test user behavior and component accessibility Query elements by accessibility roles, labels, or text content Use userEvent over fireEvent for more realistic user interactions Common Jest Matchers Basic: expect(value).toBe(expected), expect(value).toEqual(expected) Truthiness: expect(value).toBeTruthy(), expect(value).toBeFalsy() Numbers: expect(value).toBeGreaterThan(3), expect(value).toBeLessThanOrEqual(3) Strings: expect(value).toMatch(/pattern/), expect(value).toContain('substring') Arrays: expect(array).toContain(item), expect(array).toHaveLength(3) Objects: expect(object).toHaveProperty('key', value) Exceptions: expect(fn).toThrow(), expect(fn).toThrow(Error) Mock functions: expect(mockFn).toHaveBeenCalled(), expect(mockFn).toHaveBeenCalledWith(arg1, arg2)
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills github/javascript-typescript-jest