Skip to content

An crazy experiment recreating the Node.js test runner (with no libraries) using the same componentes of the original project

Notifications You must be signed in to change notification settings

ErickWendel/recreating-nodejs-test-runner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Node.js Custom Test Runner Experiment

Build Status

Introduction

This project is an experiment where I recreate the Node.js test runner using the same components. The primary goal is to understand and demonstrate the functionality of the test runner using:

  • Parallelism with Child Processes
  • AsyncHooks and Async LocalStorage for tracking the origin and retrieving the entire tree of tests.
  • Testing API with hooks such as describe, it, before, after, beforeEach, afterEach

Project Structure

  • app: Contains a complete project which is an API with a comprehensive test suite. This suite tests each individual route and uses the custom test runner to prove the experiment's functionality.

Test Runner Components

This custom test runner follows all the steps a test runner needs to have:

Role of AsyncHooks

AsyncHooks are crucial for this project as they allow tracking the origin and retrieving the entire tree of tests. This helps in understanding which describe block all hooks belong to. Using AsyncHooks, the context of asynchronous operations is maintained, ensuring that hooks like before, after, beforeEach, and afterEach are correctly associated with their respective test cases.

Getting Started

Prerequisites

Ensure you have the following installed:

  • Node.js (>=20.14)
  • Docker and docker-compose (for executing ./app)

Installation

git clone https://github.com/ErickWendel/recreating-nodejs-test-runner.git

Complete app

cd recreating-nodejs-test-runner/app
docker-compose up -d
npm test

Test runner Example

Clone the repository and install the dependencies:

cd recreating-nodejs-test-runner/test-runner
npm test

Try at home!

See at the example and execute one of your applications there :)

Contributing

Contributions are welcome! Please open an issue or submit a pull request for any changes or improvements.

License

This project is licensed under the MIT License.


Todo

  • add feature so before and beforeEach executes inside sub suites
  • fix log

About

An crazy experiment recreating the Node.js test runner (with no libraries) using the same componentes of the original project

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published