@applitools/docker-compose-mocha
Advanced tools
Comparing version
27
index.js
@@ -6,2 +6,3 @@ // @flow | ||
const { Spinner } = require('cli-spinner'); | ||
const fs = require('fs'); | ||
const chance = require('./lib/setup-environment-names-seed'); | ||
@@ -63,3 +64,4 @@ const { cleanupContainersByEnvironmentName, cleanupOrphanEnvironments } = require('./lib/docker-utility-functions'); | ||
*/ | ||
dockerComposeTool: function dockerComposeTool(beforeFunction/* :Function */, | ||
dockerComposeTool: function dockerComposeTool( | ||
beforeFunction/* :Function */, | ||
afterFunction/* :Function */, | ||
@@ -80,3 +82,4 @@ pathToComposeFile/* : string */, | ||
} | ||
/* :DockerComposeToolOptions */ = {})/* : string */ { | ||
/* :DockerComposeToolOptions */ = {}, | ||
)/* : string */ { | ||
const randomComposeEnv = envName | ||
@@ -127,5 +130,15 @@ ? extractEnvFromEnvName(envName) | ||
} | ||
await exec(`docker compose -p ${runNameSpecific} -f "${pathToComposeFile}" up -d ${onlyTheseServicesMessageCommandAddition}`, | ||
envVars ? { env: { PATH: process.env.PATH, ...envVars }, shell: getShell() } : {}); | ||
let envVarsToUse = {}; | ||
if (envVars) { | ||
// const npmFile = process.env.NPM_FILE || fs.readFileSync(`${process.env.HOME}/.npmrc`).toString().replace('\n', ''); | ||
envVarsToUse = { env: { PATH: process.env.PATH, /* NPM_FILE: npmFile, */ ...envVars }, shell: getShell() }; | ||
} | ||
await exec( | ||
`docker compose -p ${runNameSpecific} -f "${pathToComposeFile}" up -d ${onlyTheseServicesMessageCommandAddition}`, | ||
envVarsToUse, | ||
); | ||
if (!process.env.NOSPIN) { | ||
@@ -137,6 +150,8 @@ spinner.stop(); | ||
if (healthCheck !== null && typeof healthCheck === 'object' && healthCheck.state === true) { | ||
await healthCheckMethods.verifyServicesReady(runNameSpecific, | ||
await healthCheckMethods.verifyServicesReady( | ||
runNameSpecific, | ||
pathToComposeFile, | ||
healthCheck.options || {}, | ||
startOnlyTheseServices); | ||
startOnlyTheseServices, | ||
); | ||
} | ||
@@ -143,0 +158,0 @@ }); |
@@ -7,5 +7,7 @@ const { exec } = require('child-process-promise'); | ||
*/ | ||
async function dockerCheckByServiceName(runName/* : Function */, | ||
async function dockerCheckByServiceName( | ||
runName/* : Function */, | ||
pathToCompose/* : string */, | ||
serviceName/* : string */) { | ||
serviceName, /* : string */ | ||
) { | ||
const command = `docker compose -p ${runName} -f "${pathToCompose}" ps`; | ||
@@ -15,4 +17,4 @@ const result = await exec(command, { shell: getShell() }); | ||
const exist = lines.find((element) => { | ||
const containerName = `${runName}_${serviceName}`; | ||
return element.indexOf(containerName) > -1 && element.indexOf('Up') > -1; | ||
const containerName = `${runName}-${serviceName}`; | ||
return element.indexOf(containerName) > -1 && element.indexOf('Up') > -1 && element.indexOf('Paused') === -1; | ||
}); | ||
@@ -19,0 +21,0 @@ return Boolean(exist); |
@@ -8,3 +8,3 @@ // @flow | ||
const { exec } = childProcess; | ||
if (originalPort.toString().includes(':')) { | ||
if (originalPort?.toString().includes(':')) { | ||
// If the port is locked - we return it - no need to query for it with the code below | ||
@@ -11,0 +11,0 @@ return `0.0.0.0:${originalPort.split(':')[0]}`; |
{ | ||
"name": "@applitools/docker-compose-mocha", | ||
"version": "2.0.5", | ||
"version": "2.0.6-npmFile.0", | ||
"description": "Tool used for setting up an isolated environment for end to end testing / integration testing using Docker Compose", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -100,14 +100,29 @@ const { expect } = require('chai'); | ||
const serviceName = 'dct_s1'; | ||
const checkBefore = await dockerCheckByServiceName(generatedEnvName, | ||
pathToCompose, serviceName); | ||
const checkBefore = await dockerCheckByServiceName( | ||
generatedEnvName, | ||
pathToCompose, | ||
serviceName, | ||
); | ||
expect(checkBefore).to.eql(true); | ||
await dockerStopByServiceName(generatedEnvName, | ||
pathToCompose, serviceName); | ||
const checkAfterStop = await dockerCheckByServiceName(generatedEnvName, | ||
pathToCompose, serviceName); | ||
await dockerStopByServiceName( | ||
generatedEnvName, | ||
pathToCompose, | ||
serviceName, | ||
); | ||
const checkAfterStop = await dockerCheckByServiceName( | ||
generatedEnvName, | ||
pathToCompose, | ||
serviceName, | ||
); | ||
expect(checkAfterStop).to.eql(false); | ||
await dockerStartByServiceName(generatedEnvName, | ||
pathToCompose, serviceName); | ||
const checkAfterRestart = await dockerCheckByServiceName(generatedEnvName, | ||
pathToCompose, serviceName); | ||
await dockerStartByServiceName( | ||
generatedEnvName, | ||
pathToCompose, | ||
serviceName, | ||
); | ||
const checkAfterRestart = await dockerCheckByServiceName( | ||
generatedEnvName, | ||
pathToCompose, | ||
serviceName, | ||
); | ||
expect(checkAfterRestart).to.eql(true); | ||
@@ -129,18 +144,37 @@ } catch (err) { | ||
const serviceName = 'dct_s1'; | ||
const checkBefore = await dockerCheckByServiceName(generatedEnvName, | ||
pathToCompose, serviceName); | ||
const checkBefore = await dockerCheckByServiceName( | ||
generatedEnvName, | ||
pathToCompose, | ||
serviceName, | ||
); | ||
expect(checkBefore).to.eql(true); | ||
const address = await getAddressForService(generatedEnvName, pathToCompose, serviceName); | ||
await dockerPauseByServiceName(generatedEnvName, | ||
pathToCompose, serviceName); | ||
const checkAfterStop = await dockerCheckByServiceName(generatedEnvName, | ||
pathToCompose, serviceName); | ||
const address = await getAddressForService(generatedEnvName, pathToCompose, serviceName, '3001'); | ||
await dockerPauseByServiceName( | ||
generatedEnvName, | ||
pathToCompose, | ||
serviceName, | ||
); | ||
const checkAfterStop = await dockerCheckByServiceName( | ||
generatedEnvName, | ||
pathToCompose, | ||
serviceName, | ||
); | ||
expect(checkAfterStop).to.eql(false); | ||
await dockerUnpauseByServiceName(generatedEnvName, | ||
pathToCompose, serviceName); | ||
const checkAfterRestart = await dockerCheckByServiceName(generatedEnvName, | ||
pathToCompose, serviceName); | ||
await dockerUnpauseByServiceName( | ||
generatedEnvName, | ||
pathToCompose, | ||
serviceName, | ||
); | ||
const checkAfterRestart = await dockerCheckByServiceName( | ||
generatedEnvName, | ||
pathToCompose, | ||
serviceName, | ||
); | ||
expect(checkAfterRestart).to.eql(true); | ||
const addressAfterPause = await getAddressForService(generatedEnvName, | ||
pathToCompose, serviceName); | ||
const addressAfterPause = await getAddressForService( | ||
generatedEnvName, | ||
pathToCompose, | ||
serviceName, | ||
'3001', | ||
); | ||
expect(address).to.eql(addressAfterPause); | ||
@@ -147,0 +181,0 @@ } catch (err) { |
Sorry, the diff of this file is not supported yet
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
59612
9.12%49
25.64%1007
5.01%2
100%17
6.25%