Skip to main content
You might want to use (binary) files in your Multistep checks. For example, you might want to upload a file to an API endpoint using a binary body. Or, you might want to validate some aspect of a file that is available for download on your app.

Testing uploads using HTTP POST requests

To test any binary uploads, you need to provide a file object. Currently, Checkly does not have a dedicated storage layer where you could upload that file, so you need to host it yourself at a (publicly) accessible location like an AWS S3 bucket, Dropbox or any other file hosting service. Having done that, you can “upload” files using a simple HTTP POST request with a (binary) body using Playwright’s built-in request object.
http-upload.spec.ts

Using the file system

Sometimes, you do want to explicitly save a file to disk. This is what you need to know. Checkly creates a sandboxed directory for each check run. During the run you can use this directory to save or upload artifacts. This directory is destroyed after a check is finished.
Due to this sandbox, certain Node.js variables are adapted to our platform and have values we set for them. The behaviour is slightly different when creating a Multistep check in the Web UI or using the Checkly CLI. When creating a Multistep check in the Web UI, the variables are:
  • __dirname will have the value of /
  • __filename will have the value of /script.js
When creating a Multistep check using the Checkly CLI, each run uses a temporary directory that mirrors your project structure:
  • __dirname is the directory of your spec file in that temporary directory, for example /tmp/<random>/__checks__.
  • __filename is the full path of your spec file in that temporary directory, for example /tmp/<random>/__checks__/my.spec.ts.