Test-Driven Infrastructure Development with Pulumi and Jest

This page summarizes the projects mentioned and recommended in the original post on dev.to

Our great sponsors
  • SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • ts-jest

    A Jest transformer with source map support that lets you use Jest to test projects written in TypeScript.

  • Since we're working with TypeScript, we can use ts-jest, which conveniently brings Jest along for the ride:

  • node-fetch

    A light-weight module that brings the Fetch API to Node.js

  • The last thing we'll need to do is render some audio. For this, we'll need to communicate with Google Translate, our text-to-speech provider of choice, and that means we'll need an HTTP client. I generally like node-fetch, so let's go with that:

  • SurveyJS

    Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App. With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.

    SurveyJS logo
  • mocha

    ☕️ simple, flexible, fun javascript test framework for node.js & the browser

  • If you've written JavaScript tests before, particularly with tools like Jest, Jasmine, and Mocha, there's a good chance you've gotten used to writing those tests in a particular way. And if you're like me, you might've raised a bit of an eyebrow when you saw how that first test was written. Here it is again, this time with comments that capture the questions I might've had myself if I were seeing this code for the first time:

  • examples

    Infrastructure, containers, and serverless apps to AWS, Azure, GCP, and Kubernetes... all deployed with Pulumi (by pulumi)

  • From here, there's a bunch more you might think about next: writing more tests to cover the code we just added, exploring some additional flavors of testing in the docs, or having a look at a few examples. You'll find the full source for this walkthrough up on GitHub as well.

  • pulumi-jest-unit-testing-example

    An example of using Pulumi with Jest to write test-driven infrastructure code.

  • From here, there's a bunch more you might think about next: writing more tests to cover the code we just added, exploring some additional flavors of testing in the docs, or having a look at a few examples. You'll find the full source for this walkthrough up on GitHub as well.

  • jest

    Delightful JavaScript Testing.

  • Recalling all this stuff did make me wonder, though, what a more modern version of a speaking clock might look like. So in this post, we're going to build one ourselves. We won't use an actual phone number, but we will use Pulumi and AWS --- and because we want to do it right, we'll take a test-driven approach to developing the infrastructure with Jest, the JavaScript testing framework. We'll use TypeScript and Node.js for everything, focus on unit tests, and when we're done, we'll have a single, serverless, browser-friendly HTTPS endpoint that returns an MP3 audio stream that speaks the current time.

  • jasmine

    Simple JavaScript testing framework for browsers and node.js

  • If you've written JavaScript tests before, particularly with tools like Jest, Jasmine, and Mocha, there's a good chance you've gotten used to writing those tests in a particular way. And if you're like me, you might've raised a bit of an eyebrow when you saw how that first test was written. Here it is again, this time with comments that capture the questions I might've had myself if I were seeing this code for the first time:

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • aws-lambda-java-libs

    Official mirror for interface definitions and helper classes for Java code running on the AWS Lambda platform.

  • The first thing we'll need is a runtime environment --- someplace to run some server-side JavaScript that can render and deliver an audio file. Until recently, the easiest way to get an HTTP endpoint up and running on AWS has generally been with AWS Lambda and API Gateway, using Lambda to run the requisite code and API Gateway to expose the Lambda to the internet. Pulumi Crosswalk actually makes this really easy, too --- but with the release of AWS Lambda Function URLs this April, we now have another option, one that doesn't need API Gateway at all.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts