
Security News
Meet the Socket Team at RSAC and BSidesSF 2025
Join Socket for exclusive networking events, rooftop gatherings, and one-on-one meetings during BSidesSF and RSA 2025 in San Francisco.
ava-patterns
Advanced tools
Some useful helpers for tests in AVA.
Install ava-patterns by running:
yarn add ava-patterns
useTemporaryDirectory()
Create a temporary directory and delete it (and its contents) at the end of the test.
Takes the following options (all of which are optional):
prefix
: The directory in which to create the temporary directory. Defaults
to a suitable location based on the host system (e.g. /tmp
).Returns an object with the following members:
path
: The absolute path to the temporary directory.writeFile(filePath, fileContents)
: Write a file with path relative to the
temporary directory, returning the absolute path to the file. Any leading
whitespace in the file contents is stripped. If the file starts with a
shebang, it is given executable permissions.import process from 'node:process'
import test from 'ava'
import {useTemporaryDirectory} from 'ava-patterns'
test('writing files to a temporary directory', async (t) => {
const directory = await useTemporaryDirectory(t)
await directory.writeFile('file.txt', `
Hello World!
`)
t.pass()
})
test('creating temporary directories in a specified location', async (t) => {
const directory = await useTemporaryDirectory(t, { prefix: process.cwd() })
await directory.writeFile('file.txt', `
Hello World!
`)
t.pass()
})
runProcess()
Spawn a process and kill it at the end of the test.
The second argument supports the following options:
command
: The command line command as an array of strings.env
: An object of environment variables.cwd
: The working directory in which to run the commandReturns an object with the following members:
output
: A string containing all of the output from stdout and stderr.events
: An EventEmitter
that emits the following events:
stdout
: Any output written to standard outputstderr
: Any output written to standard erroroutput
: Any output written to either standard output or errorexit
: The exit code after the process endswaitForOutput(pattern, timeout = 1000)
: Enables waiting for a given
substring or regular expression to be output, for up to a given timeout.waitUntilExit()
: Returns a promise that will resolve with the exit code.childProcess
: The underlying instance of ChildProcess
import test from 'ava'
import {runProcess} from 'ava-patterns'
import got from 'got'
test('running a Node server', async (t) => {
const script = `
import * as http from 'http'
const server = http.createServer((request, response) => {
response.end('Hello World!')
})
server.listen(10000, () => {
console.log('Listening')
})
`
const program = runProcess(t, {
command: ['node', '--input-type', 'module', '--eval', script]
})
await program.waitForOutput('Listening')
t.is(program.output, 'Listening\n')
const response = await got('http://localhost:10000')
t.is(response.body, 'Hello World!')
})
wait()
Wait for a given number of milliseconds.
import test from 'ava'
import {wait} from 'ava-patterns'
test('writing files', async (t) => {
// perform action and wait for results
await wait(500)
// check results
})
http()
Make an HTTP request.
It takes in an object with properties method
, url
, optional headers
, and
an optional body
and returns an object with properties status
, headers
,
and body
.
import {http} from 'ava-patterns'
test('sending HTTP requests', async (t) => {
const response = await http({
method: 'POST',
url: 'https://httpbin.org/post',
body: 'Hello World!'
})
t.like(JSON.parse(response.body), {data: 'Hello World!'})
})
FAQs
Some useful helpers for tests in AVA
We found that ava-patterns demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Join Socket for exclusive networking events, rooftop gatherings, and one-on-one meetings during BSidesSF and RSA 2025 in San Francisco.
Security News
Biome's v2.0 beta introduces custom plugins, domain-specific linting, and type-aware rules while laying groundwork for HTML support and embedded language features in 2025.
Security News
Next.js has patched a critical vulnerability (CVE-2025-29927) that allowed attackers to bypass middleware-based authorization checks in self-hosted apps.