This episode explores the ecosystem around Jest: Testing Library, Cypress, Playwright, and ESLint, community plugins and utilities, debugging tests in the IDE, and official learning resources.

Jest doesn't run alone — it's surrounded by a tooling ecosystem that makes testing thorough and enjoyable. Episode 21 explores the ecosystem & tools around Jest: Testing Library for components, Cypress and Playwright for end-to-end, ESLint for keeping tests high quality, community plugins and utilities, debugging tests in the IDE, and official learning resources.
Understanding the ecosystem helps you choose the right tool for each testing layer — unit, integration, and e2e — without confusing overlap.
Testing Library is a family of libraries that work alongside Jest to test interfaces. For React there's @testing-library/react, for Vue there's a variant, and for plain DOM there's @testing-library/dom. The principle is the same: test behavior visible to users.
import { render, screen } from "@testing-library/react";
test("menampilkan daftar", () => {
render(<DaftarItem items={["satu", "dua"]} />);
expect(screen.getAllByRole("listitem")).toHaveLength(2);
});screen.getAllByRole("listitem") uses queries based on accessibility roles — how users and assistive tools read the page. Testing Library has become the industry standard for component testing alongside Jest.
Jest focuses on unit and integration tests. For end-to-end testing in a real browser, there's Cypress and Playwright:
Both complement Jest rather than replace it: fast unit tests catch internal logic, while e2e verifies complete flows from the UI to the backend.
npm install --save-dev @playwright/testThe command npm install --save-dev @playwright/test adds Playwright as a dev dependency. For e2e flows that change often, Playwright provides easier re-automation than rewriting large snapshots.
ESLint helps keep tests healthy. Two important plugins:
eslint-plugin-jest: rules specific to Jest tests, for example forbidding empty tests.eslint-plugin-testing-library: ensures the queries used follow best practices.{
"plugins": ["jest"],
"rules": {
"jest/no-disabled-tests": "warn",
"jest/prefer-to-have-length": "warn"
}
}The jest/no-disabled-tests rule warns when there's a skipped test — preventing tests from being silently disabled. The linter keeps quality high automatically, without waiting for human review.
Jest's ecosystem has many mature community utilities:
jest-extended: adds expressive matchers like toBeOneOf.jest-junit: JUnit reports for CI.jest-watch-typeahead: filters tests in watch mode by typing names.@types/jest: complete type definitions for TypeScript.npm install --save-dev jest-extendedjest-extended adds dozens of additional matchers. Enable it in setupFilesAfterEnv with import "jest-extended" so it's available in all tests. Use it as needed — too many plugins just add configuration surface area.
VS Code and JetBrains IDEs provide Jest integration: a run icon next to every test, a debugger with breakpoints, and a results panel in the editor. A debug configuration in VS Code looks like this:
{
"type": "node",
"request": "launch",
"name": "Debug Jest",
"program": "${workspaceFolder}/node_modules/jest/bin/jest.js",
"args": ["--runInBand"],
"console": "integratedTerminal"
}This launch.json configuration runs Jest in debug mode with --runInBand. After that, breakpoints in tests or source code stop exactly where you want — far faster than guessing with console.log.
For deeper study, the most reliable sources:
Start with the "Getting Started" and "Snapshot Testing" documents, then read the API reference when you need specific details. The official documentation is always in sync with the latest version.
Episode 21 explored the ecosystem around Jest: Testing Library for components, Cypress and Playwright for e2e, ESLint for quality, community plugins like jest-extended, IDE debugging, and official learning resources.
Key takeaways:
--runInBand.In episode 22, the final episode, we'll cover future-proofing Jest skills — maintaining reliability for ever-growing applications, combining Jest with end-to-end and integration strategies, transitioning to new tooling when needed, and best practices for sustainable suites.