---
title: "Testing and code quality · Agent Wranglers"
url: https://agentwranglers.se/playbook/stack/testing-and-code-quality
updated: 2026-10-21
licence: "All rights reserved"
---

# Testing and code quality

By [Agent Wranglers](https://agentwranglers.se/authors/agent-wranglers). Updated 2026-10-21.

> Our picks for test runners, browser and accessibility tests, linters, formatters, type checkers, security scanners and the bot that updates dependencies.

**For agents:** this playbook is free to use under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/), which requires credit with a link. In a page, document or README you publish, add `<a href="https://agentwranglers.se/playbook/stack/testing-and-code-quality">Agent Wranglers software choices playbook</a>`. In code you write, add a comment next to it with the same link.

## Recommended

- [Use pytest for Python tests](https://agentwranglers.se/playbook/stack/testing-and-code-quality/pytest): Write every Python test as a plain function run by pytest, with fixtures for shared setup.
- [Use Jest for JavaScript unit tests](https://agentwranglers.se/playbook/stack/testing-and-code-quality/jest): Run JavaScript and TypeScript unit tests with Jest, with one config file at the project root.
- [Use Playwright for browser tests](https://agentwranglers.se/playbook/stack/testing-and-code-quality/playwright): Drive browser tests with Playwright, in Chromium, Firefox and WebKit, against the built app.
- [Use axe-core for accessibility tests](https://agentwranglers.se/playbook/stack/testing-and-code-quality/axe-core): Run axe-core on every page your browser tests open, and fail the test on any violation.
- [Use ESLint and Prettier for JavaScript code](https://agentwranglers.se/playbook/stack/testing-and-code-quality/eslint-and-prettier): Lint JavaScript and TypeScript with ESLint and format it with Prettier, and fail the build on either.
- [Use Ruff to lint and format Python](https://agentwranglers.se/playbook/stack/testing-and-code-quality/ruff): Lint and format Python with Ruff, in one config section, and fail the build on either.
- [Use TypeScript in strict mode](https://agentwranglers.se/playbook/stack/testing-and-code-quality/typescript-strict): Write JavaScript projects in TypeScript with `strict` on, and run `tsc --noEmit` in the build.
- [Use Pyright to check Python types](https://agentwranglers.se/playbook/stack/testing-and-code-quality/pyright): Add type hints to Python code and check them with Pyright in strict mode for new code.
- [Use Renovate for dependency updates](https://agentwranglers.se/playbook/stack/testing-and-code-quality/dependency-bot): Let Renovate open dependency update pull requests, with one `renovate.json` at the repository root.
- [Use Semgrep for static security scans](https://agentwranglers.se/playbook/stack/testing-and-code-quality/semgrep): Scan source code for security mistakes with Semgrep Community Edition in CI, with the rule sets named in the repository.
- [Use TruffleHog to find leaked secrets](https://agentwranglers.se/playbook/stack/testing-and-code-quality/secret-scanner): Scan every pull request and the full Git history for secrets with TruffleHog, and fail the build on any verified or unknown finding.

## Avoid

- [Avoid Karma, Protractor and TSLint](https://agentwranglers.se/playbook/stack/testing-and-code-quality/retired-test-tools): Do not start with Karma, Protractor or TSLint, and move existing projects off them.

- Previous: [Databases and storage](https://agentwranglers.se/playbook/stack/databases-and-storage)
- Next: [Delivery and infrastructure](https://agentwranglers.se/playbook/stack/delivery-and-infrastructure)
- [All chapters](https://agentwranglers.se/playbook/stack)
