Contentful Integration Test Utils
About
This repository contains utility functions for integration testing of some of Contentful's open source projects.
It supports ad-hoc space creation and deletion, environment creation as well as a test space clean-up function which can be run periodically or ad hoc.
Pre-requisites
Requires at least Node 14
Installation
Using npm:
npm install @contentful/integration-test-utils
Using yarn:
yarn add @contentful/integration-test-utils
Usage
const testUtils = require('@contentful/integration-test-utils')
API
Create Test Space
Creates a test space with strict naming rules. All space names start with '%'.
The space name will be built like this: %${language} ${repo} ${testSuiteName}
.
Its length must be less than 30 characters.
// returns an empty space with space '%JS CMA Entry API';
const testSpace = await testUtils.createTestSpace({
client,
organizationId,
repo: 'CMA',
language: 'JS',
testSuiteName: 'Entry API',
})
Create Test Environment
Creates a test environment in the provided space and waits for it to be ready (timeout: 5 minutes). The length of the environment name must be less than 40 characters.
const testEnvironment = await testUtils.createTestEnvironment(testSpace, 'some-test-env-name')
Delete Test Space
Deletes the space with the space name provided.
await testUtils.deleteSpace(client, '%JS CMA Entry API')
Clean up Test Spaces
Deletes spaces whose names start with the prefix %
and which were created prior to a specific threshold time. The threshold defaults to one hour (60 * 60 * 1000 ms).
The function has a dryRun
option, which lists all spaces to be deleted.
// Deletes all spaces starting with '%'
// that have been created more than one hour (default threshold) ago
await testUtils.cleanUpTestSpaces()
// With options
await testUtils.cleanUpTestSpaces({
threshold: 60 * 1000, // changes the threshold to one minute
dryRun: true // lists all spaces starting with '%' without deleting them
})
Usage: The test cleaner can be used in different ways, according to need.
- In your code, e.g. inside an
after()
within your test suiteafter(async () => { await testUtils.cleanUpTestSpaces() })
- As a bin script (
clean-up-test-spaces
) in a pipeline or manually./bin/clean-up-test-spaces
- As a script to your
package.json
"scripts":{ "clean-up-test-spaces": "clean-up-test-spaces" }
:warning:
cleanUpSpaces
initializes a CMA client and, for that, expects to find an environment variable calledCONTENTFUL_INTEGRATION_TEST_CMA_TOKEN
containing a functioning Contentful Management Token.
:warning: It will delete all spaces connected to that token which match the naming pattern (starting with '%').