@contentful/integration-test-utils

v2.0.1
Utilities for Contentful integration tests

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 suite
after(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 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 '%').

npm i @contentful/integration-test-utils

Metadata

  • MIT
  • >=14
  • Contentful
  • released 1/11/2023

Downloads

Maintainers

pkeavenycontentful, msieroslawska, miguelcrespo, chrishelgert, tnugmanov-contentful, cdun.ctfl, asleepysamurai, budimir.budimir.cf, seth-carter-contentful, bhekanik, kudamupeni, konstantinminster, invalid_json, douglasnsovenhi, dropecostareis, lorenzonibrunno, baskiers, dancontentful, ivo-contentful, thy.pham, adrian-contentful, alvinometric, dimitrycf, cormac.debarra, jites, nhanlon-cf, cbentham-cf, cempesket, jfctfl, nkoyo.ating, crissto, evgeniip, max.cheremisin, sofia_margariti, dineshswamy_paranthaman, dmytro.filippov, arjun-londhey, eric-miller2129, liamstokingercontentful, aodhagan-cf, vikaskumr, dennise917, alicankargin, cf-aleks, jeffm_cf, bvkr, ebctfl, sjouli, mayakarabula, cf-engit, harshil1712, paradoja, mattvanvoorst-contentful, holgerstorm, cf-remylenoir, mayagillilan, ahsen, mar.contentful, rowadz_contentful, kiyutink_contentful, roosterhack, kurtulus-contentful, omasopust-cf, cemre.yuksel, peacemukke, sophiiistika, stephanleece, dogukano, 3b3ziz, or_yoffe_contentful, hennadii.shymanskyi, m.bensalem, sxagoraris, stathis.xagoraris, andreascful, richard_moran, yvesrijckaert_contentful, mehdi_contentful, georgpanok, riqwan.thahamir, piotr.ciazynski, felixboenke, farruco.sanjurjo, ronaldronson, silhoue, phbschmidt, timbeyer, kathrinholzmann, inbal.gordon, poberherr, mikita.savanovich, laurenceb, elblivion, fabianheymann, it-internal, sbezludny, medturki, danwe, marina-cf, dlitvakb, yann-cf, makinwa37, diacono, whydah-gally, tauraz, cakejelly, martin3walker, argvk_cf, yiotis, leonardofreitass, hwartig, davidfateh, dvasylenko, ruderngespra, janikomu, mshaaban0, kdamball, marcolink, gosiaszporer, z0al, mspagnolo, thomas.spiesser, jwhiles, anho, didi96, fs, cgrabo, dana_grn, andipaetzold-cf, denkristoffer, luizfonseca, juliabiro, vinz93, jbourne, 0mathcrap, damienxy, roryscarson, m99coder-cf, loweisz, thomas.contentful, marceltoben, anwar.ahmad, massao, bohdan.hutsol, contentful-ecosystem, vida.momenzadeh, yuri.mazursky, rebecca.koenig, annmary,