---
title: "The one with the epic code and tools section"
publication: "Node Weekly"
issue: 432
published_at: "2022-04-07"
canonical_url: "https://nodeweekly.com/issues/432"
---

Plus 50 best practices for Node and JS testing, and the final release of Node 12. |        

🇺🇦 #​432 — April 7, 2022 

[Read on the Web](https://nodeweekly.com/issues/432)   

Node Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/dvzzl80qsechlzcrbhkt.jpg)](https://github.com/goldbergyoni/javascript-testing-best-practices#readme)  

[JavaScript and Node Testing Best Practices: 2022 Edition](https://github.com/goldbergyoni/javascript-testing-best-practices#readme) — Fifty best practices divided into categories (testing, backend, frontend, etc.) complete with simple examples. We first linked to this 2½ years ago, but a new edition is now out updated for 2022 standards and with translations in 7 other languages including Chinese, Spanish and French. 

Yoni Goldberg   [![\](https://copm.s3.amazonaws.com/1417d1b2.png)](https://www.rookout.com/lp-nodejs?utm_campaign=node&utm_source=nl&utm_medium=cooper) 

[Debug Node Apps in Production Without Stopping Them](https://www.rookout.com/lp-nodejs?utm_campaign=node&utm_source=nl&utm_medium=cooper) — Rookout empowers teams to debug cloud-native apps by helping them access real-time data in any environment, including prod. Get to the root cause faster without recreate, redeploy, or stop the app. Try Rookout free and start debugging 5x faster. 

Rookout sponsor   

[Locale Aware Sorting in JavaScript](https://elijahmanor.com/byte/js-locale-sort) — When building a localized app, the default sorting logic for strings might not do quite what you want.. `localeCompare` and `Intl.Collator` to the rescue. Is this just for browsers? Nope. [Node supports Intl](https://nodejs.org/api/intl.html) too. 

Elijah Manor   

[Node v12.22.12 (LTS) Released: It's the Final Node 12 👋](https://nodejs.org/en/blog/release/v12.22.12/) — A pleasantly gentle week for Node releases with just the final Node.js 12 release making the cut. Node 12 goes ‘end of life’ on April 30 and will receive no updates after then. 

Richard Lau   

**Quick bytes:** 

- [Get an early look](https://nodejs.org/download/nightly/v18.0.0-nightly20220403561885152e/docs/api/test.html) at Node 18's upcoming test runner system in the nightly docs. Shehzad Akbar also [explains it here.](https://fusebit.io/blog/node-testing-comes-to-core/)
- ❓ The folks behind the [Prisma](https://www.prisma.io/) ORM want to know [what your favorite Node.js ORM is](https://prisma103696.typeform.com/2022-orm-favs) – it's a pretty quick survey and they promise to share the results later.
- AWS Lambda has [added support for 'function URLs'](https://aws.amazon.com/blogs/aws/announcing-aws-lambda-function-urls-built-in-https-endpoints-for-single-function-microservices/) – built-in HTTPS endpoints that go direct to your functions without needing API Gateway.
- 📗 [Build Talking Apps for Alexa](https://pragprog.com/titles/cwalexa/build-talking-apps-for-alexa/) is a new book (by Craig Walls and published by _Pragmatic Bookshelf_) on building Alexa skills for Echo devices and uses Node.js to make it all happen.
- The folks at EdgeDB put ORMs to the test, [claiming that they're slow and getting slower](https://www.edgedb.com/blog/why-orms-are-slow-and-getting-slower) after using [IMDBench](https://github.com/edgedb/imdbench), a tool to compare Python and JavaScript ORMs with realistic queries.    

💻 Jobs  

[Back-End Developer (Node.js, Full-Time, Remote CET±3 Hours)](https://www.sweepbright.com/careers/back-end-developer) — Help us improve the speed and reliability of back-end processes that drive automation for real estate agencies. 
SweepBright   

[Senior Backend Engineer](https://jobs.lever.co/strapi/42d7e5e3-9ddc-4217-80ff-0dd63bceb48e) — We've built the next-generation CMS. We're open-source. JavaScript. Headless. Community & People first. And free. And will stay that way. Forever. 
Strapi   

[Find Tech Jobs with Hired](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-nodeweekly%29&utm_content=find-your-next-job) — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers. 
Hired      

[Basic Principles of Object-Oriented Programming in TypeScript](https://blog.appsignal.com/2022/04/06/principles-of-object-oriented-programming-in-typescript.html) — The author focuses on ‘three pillars’ of object-oriented programming in the TypeScript context: encapsulation, inheritance, and polymorphism (at a basic level). 

Camilo Reyes   

[Be Amongst the First to Shape Our New Dev Community. Join Us Today](https://community.bitmovin.com/?utm_source=cooper-node-weekly-brief-link&utm_medium=paid-newsletter&utm_campaign=dev-community) 

Bitmovin Inc. sponsor   

▶[Using Google Cloud Run's 'Always-On' CPU Allocation for Background Work](https://cloud.google.com/blog/topics/developers-practitioners/use-cloud-run-always-cpu-allocation-background-work) — _Cloud Run_ is Google's way to run containers in a serverless fashion, and Node is used to show off being able to run background jobs on it. 

Wesley Chun (Google Cloud)   

🛠 Code & Tools  

[JSZip 3.9: Create, Read and Edit .zip Archive Files](https://stuk.github.io/jszip/) — A simple and elegant API. The homepage is pretty cool as it has a live demo and a handy how-to. Or you can just go for the [GitHub repo](https://github.com/Stuk/jszip). 

Stuart Knightley   

[ssh2-sftp-client 8.0: A Node.js Client for SSH2 SFTP](https://github.com/theophilusx/ssh2-sftp-client) — List files, download files, upload files - it’s all here. Note that this release has [breaking changes](https://github.com/theophilusx/ssh2-sftp-client/releases/tag/v8.0.0). 

Tim Cross   

[ioredis 5: A Performance Focused Redis Client for Node](https://github.com/luin/ioredis) — Boasts support for Redis Cluster, Sentinel, pipelining, Lua scripting, pub/sub, etc, as well as ES6 types like `Map` and `Set`. If you’re already a user, the v4 to v5 transition does require [an upgrade guide](https://github.com/luin/ioredis/wiki/Upgrading-from-v4-to-v5) though. 

Zihua Li   

[ini 3.0: An INI File Parser/Serializer](https://github.com/npm/ini) — [INI](https://en.wikipedia.org/wiki/INI_file) is a text format that originated at Microsoft for formatting config files. 

Isaac Z. Schlueter et al.   

[Retool Makes It 10x Faster to Build Custom Internal Tools for Any Company](https://retool.com/?utm_source=sponsor&utm_medium=newsletter&utm_campaign=nodeweekly) 

Retool sponsor   

[Instauto 9.0: An Instagram Bot / Automation Library](https://github.com/mifi/instauto) — Uses Puppeteer to do the hard work. The focus here is on ease of use. 

Mikael Finstad   

[cron-parser 4.3: Node Library for Parsing `cron` Rules](https://github.com/harrisiirak/cron-parser) — `cron` is a commonly used mechanism on Unix-based systems for running recurring tasks and such tasks are defined in a very specific format. This package lets you parse this format for your own ends. 

Harri Siirak   

[Nightwatch.js 2.1: Automated End-to-End Testing from Node](https://nightwatchjs.org/) — Write end-to-end tests in Node – uses the W3C WebDriver API to drive browsers. [GitHub repo](https://github.com/nightwatchjs/nightwatch). 

Nightwatch Team   

[The Official MongoDB Node.js Driver v4.5.0](https://github.com/mongodb/node-mongodb-native) — Supports a `comment` argument on operations so you can trace things better in Mongo’s logs. 

MongoDB Inc.   

[AutoMapper 8.1: An Object-Object AutoMapper for TypeScript](https://automapperts.netlify.app/) — [GitHub repo.](https://github.com/nartc/mapper) 

Chau Tran   

[Kafka.js 1.16.0: A Modern Apache Kafka Client](https://github.com/tulios/kafkajs) — Production ready and supports Kafka 0.10+. _([Kafka](https://kafka.apache.org/) is a popular open source system for working with stream-processing at scale.)_ 

Túlio Ornelas   

[node-mssql 8.1: A Microsoft SQL Server Client for Node](https://github.com/tediousjs/node-mssql) — Works cross-platform (Windows, Linux or macOS) and supports two different TDS drivers (pure JS and native). 

Patrik Simek and contributors   

[isBinaryFile: Detects if a File is Binary or Text](https://github.com/gjtorikian/isBinaryFile) 
Garen Torikian   

[pkg 5.6.0: Package Your Node Project Into an Executable](https://github.com/vercel/pkg) 
Vercel   

[Fastify 3.28.0: The Fast and Low Overhead Web Framework](https://github.com/fastify/fastify) 
Fastify    

**Got a new email?** You can [change your address here](https://nodeweekly.com/edit_subscription/*|UID|*). 

--- 

**Bored of us?** [Click here to stop getting Node Weekly](https://nodeweekly.com/leave/*|UID|*). 

--- 

**Got a link for us?** Reply and tell us. We can't include everything but we'll look at anything you send. Thanks! 

--- 

**Want to sponsor?** Email `[kristina@cooperpress.com](mailto:kristina@cooperpress.com)` for details. 

--- 

Published by Cooper Press Ltd.
Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom 

[Stop getting this newsletter.](https://nodeweekly.com/leave/*|UID|*)
