Utilities for Contentful integration tests
npm install @contentful/integration-test-utilsIt 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.
Requires at least Node 14
Using npm:
``bash`
npm install @contentful/integration-test-utils
Using yarn:
`bash`
yarn add @contentful/integration-test-utils
`js`
const testUtils = require('@contentful/integration-test-utils')
#### 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.
`ts`
// 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.
`ts`
const testEnvironment = await testUtils.createTestEnvironment(testSpace, 'some-test-env-name')
#### Delete Test Space
Deletes the space with the space name provided.
`ts`
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).dryRun
The function has a option, which lists all spaces to be deleted.`ts
// 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 suite`ts`
after(async () => {
await testUtils.cleanUpTestSpaces()
})clean-up-test-spaces
- As a bin script () in a pipeline or manually`bash`
./bin/clean-up-test-spacespackage.json
- As a script to your `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 called CONTENTFUL_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 '%').