{"id":21076,"url":"https://github.com/MarcL/awesome-javascript-testing","name":"awesome-javascript-testing","description":"🔧 Awesome JavaScript testing resources","projects_count":38,"last_synced_at":"2026-03-30T20:00:20.148Z","repository":{"id":71372406,"uuid":"81500211","full_name":"MarcL/awesome-javascript-testing","owner":"MarcL","description":"🔧 Awesome JavaScript testing resources","archived":false,"fork":false,"pushed_at":"2017-11-06T16:00:01.000Z","size":11,"stargazers_count":32,"open_issues_count":0,"forks_count":6,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-03-17T01:24:02.652Z","etag":null,"topics":["ava","integration-testing","javascript","jest","mocha","nodejs","tape","testing","unit-testing"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MarcL.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","funding":null,"license":null,"code_of_conduct":"code-of-conduct.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2017-02-09T22:13:30.000Z","updated_at":"2023-07-29T14:40:35.000Z","dependencies_parsed_at":"2023-03-11T10:25:11.763Z","dependency_job_id":null,"html_url":"https://github.com/MarcL/awesome-javascript-testing","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MarcL/awesome-javascript-testing","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcL%2Fawesome-javascript-testing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcL%2Fawesome-javascript-testing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcL%2Fawesome-javascript-testing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcL%2Fawesome-javascript-testing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarcL","download_url":"https://codeload.github.com/MarcL/awesome-javascript-testing/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcL%2Fawesome-javascript-testing/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31207704,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-30T15:24:02.938Z","status":"ssl_error","status_checked_at":"2026-03-30T15:23:44.804Z","response_time":138,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"readme":"# Awesome JavaScript Testing [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)\n\n\u003e Awesome JavaScript testing resources and tips\n\n*Please read the [contribution guidelines](contributing.md) before contributing.*\n\n## Contents\n\n- [Articles](#articles)\n- [Tools](#tools)\n- [Videos](#videos)\n- [Tips](#tips)\n- [FAQ](#faq)\n- [Documentation](#documentation)\n\n## Articles\n\n- [JavaScript Testing for Beginners Course](https://www.marclittlemore.com/courses/javascript-testing-beginners-course/?signup=github-mini-course)\n- [Introduction To JavaScript Unit Testing](https://www.smashingmagazine.com/2012/06/introduction-to-javascript-unit-testing/)\n- [How To Write High Quality Unit Tests](http://www.marclittlemore.com/how-to-write-high-quality-unit-tests/)\n- [Test Double](https://www.martinfowler.com/bliki/TestDouble.html)\n- [Mocks Aren't Stubs](https://martinfowler.com/articles/mocksArentStubs.html)\n- [Migrating To Jest](https://medium.com/@kentcdodds/migrating-to-jest-881f75366e7e#.lgwnxihkn)\n- [5 Questions Every Unit Test Must Answer](https://medium.com/javascript-scene/what-every-unit-test-needs-f6cd34d9836d#.22w7tm5rq)\n- [How To Unit Test Express Routes](http://www.marclittlemore.com/how-to-unit-test-express-routes/)\n- [The Outrageous Cost Of Skipping TDD \u0026 Code Reviews](https://medium.com/javascript-scene/the-outrageous-cost-of-skipping-tdd-code-reviews-57887064c412#.82dalpsq2)\n- [5 Common Misconceptions About TDD \u0026 Unit Tests](https://medium.com/javascript-scene/5-common-misconceptions-about-tdd-unit-tests-863d5beb3ce9#.kewnnyeo1)\n- [Why I Use Tape Instead Of Mocha \u0026 So Should You](https://medium.com/javascript-scene/why-i-use-tape-instead-of-mocha-so-should-you-6aa105d8eaf4#.uhlgy4nwu)\n- [Where To Put Code In Mocha/Jasmine Tests](https://medium.com/@kentcdodds/where-to-put-code-in-mocha-jasmine-tests-24aade62fd7e#.o6ma53itg)\n- [React Unit Testing With Mocha And Enzyme](https://medium.freecodecamp.com/react-unit-testing-with-mocha-and-enzyme-77d18b6875cb#.g5vbt63j6)\n- [Is TDD Dead?](https://martinfowler.com/articles/is-tdd-dead/)\n- [Testing Asynchronous JavaScript](https://martinfowler.com/articles/asyncJS.html)\n- [JavaScript Testing Tools Showdown: Sinon.js vs TestDouble.js](https://gist.github.com/searls/646d68bfb284af3956a294b55f14bad9)\n- [Complete Guide To Testing JavaScript In 2017](https://medium.com/powtoon-engineering/a-complete-guide-to-testing-javascript-in-2017-a217b4cd5a2a?imm_mid=0f12fb\u0026cmp=em-web-na-na-newsltr_20170426)\n- [How To Structure Your Tests](https://codeutopia.net/blog/2017/05/15/quick-javascript-testing-tip-how-to-structure-your-tests/)\n- [Migrating From Mocha To Jest](https://ebaytech.berlin/into-the-great-unknown-migrating-from-mocha-to-jest-3baced083c7e)\n- [Chapter 3: Testing, in Refactoring JavaScript](http://refactoringjs.com/files/refactoring-javascript.pdf)\n- [Chapter 4: Testing in Action, in Refactoring JavaScript](http://refactoringjs.com/files/refactoring-javascript.pdf)\n\n## Videos\n\n- [React + Ava Workshop](https://www.youtube.com/watch?v=UmDNx06472I\u0026feature=youtu.be)\n- [Introduction To Jest Testing Framework](https://www.youtube.com/watch?v=tvy0bSgwtTo)\n- [Test JavaScript with Jest (egghead.io)](https://egghead.io/lessons/javascript-test-javascript-with-jest)\n- [Testing JavaScript Applications Workshop](https://www.youtube.com/watch?v=DdqiXcYDv-8) by [Kent C Dodds](https://github.com/kentcdodds)\n\n## Test Library Documentation\n\n- [Mocha](https://mochajs.org/)\n- [Sinon](http://sinonjs.org/docs/)\n- [Chai](http://chaijs.com/api/)\n- [Chai-as-promised](https://github.com/domenic/chai-as-promised)\n- [Jest](https://facebook.github.io/jest/)\n- [Ava](https://github.com/avajs/ava)\n- [Tape](https://github.com/substack/tape)\n- [TestDouble](https://github.com/testdouble/testdouble.js)\n- [Enzyme](https://github.com/airbnb/enzyme/)\n- [Supertest](https://github.com/visionmedia/supertest)\n- [Nock](https://github.com/node-nock/nock)\n\n## License\n\n[![CC0](http://mirrors.creativecommons.org/presskit/buttons/88x31/svg/cc-zero.svg)](https://creativecommons.org/publicdomain/zero/1.0/)\n\nTo the extent possible under law, [Marc Littlemore](http://marclittlemore.com) has waived all copyright and related or neighboring rights to this work.\n","created_at":"2024-01-13T12:55:59.970Z","updated_at":"2026-03-30T20:00:20.149Z","primary_language":null,"list_of_lists":false,"displayable":true,"categories":["Test Library Documentation","Articles","Videos","License"],"sub_categories":[],"projects_url":"https://awesome.ecosyste.ms/api/v1/lists/marcl%2Fawesome-javascript-testing/projects"}