UNPKG

create-smktest

Version:

Smoketest suites gerentator in jest format

223 lines (201 loc) 7.73 kB
// import arg from 'arg'; // import inquirer from 'inquirer'; import smktestUtils from './utils/smktestUtils'; import criteria from './serviceV2/suiteGenerator/criteria'; import suiteGenerator from './serviceV2/suiteGenerator/suiteGenerator'; // import runJestTest from './runJestTest' const Listr = require('listr'); // import Listr from 'listr'; const execa = require('execa'); const fs = require('fs'); async function printHelp(args: string[]) { console.log(); let continueCli = true; for (const arg of args) { if (arg === '--help' || arg === '-h') { console.log(); console.log(); console.log('---------------- SMOKE TEST GENERATOR HELP ---------------'); console.log( " This library's to generates smoke test suites using kubernetes." ); console.log( ' Apply adequacy criteria. Each criterion offers a specific coverage ' ); console.log( 'and automatic level. Below is an example of how to use the criteria' ); console.log(); console.log(' Utils commands'); console.log( ' --run-tests: Run tests suites after of generate suites'); console.log(); console.log('Example of use:'); console.log(); console.log('create-smktest --cluster-coverage'); console.log(); console.log(); console.log(' Criteria | Descriptions'); console.log('--cluster-coverage | Verify kubernetes nodes conditions '); console.log( ' Tests: Description: Input Required:' ); console.log( ' --check-disc: Check free space inside of the cluster No' ); console.log( ' --check-memory: Check if exist memory pressure No' ); console.log( ' --check-disc : Check if exist hard disk pressure No' ); console.log( ' --check-cluster: Verify the conditions of the cluster No' ); console.log( ' --check-nodes: Verify the conditions of the cluster nodes No' ); console.log(); console.log( '--ingress-coverage | Verify cluster ingress access from outside' ); console.log( ' Tests: Description: Input Required: VIDEO* ---' ); console.log( ' --check-ingress: Check all exposed ingress --namespace' ); console.log(); console.log( '--service-coverage | Verify if all cluster services and pods are Running' ); console.log( ' Tests: Description: Input Required:' ); console.log( ' --check-pods-logs: Search logs error --namespace' ); console.log( ' --check-pods-running: Check if all services are active --namespace' ); console.log( ' --execution-unit-coverage: Check if all pods are active --namespace' ); console.log(); console.log( '--resource-up | Verify if all volume and files area accessible VIDEO* ---' ); console.log( ' Tests: Description: Input Required:' ); console.log( ' --volumes-free-space: Verify if the volume have enough space --namespace' ); console.log( ' --volumes-exist-files: Verify if exist files inside of the volumes --namespace' ); console.log(); console.log('--endpoint-coverage | Verify endpoint list ** PENDING **'); console.log( ' Tests: Description: Input Required:' ); console.log( ' --curl-assert: Check response of the curl --curl-assert=\'["curl -v www.google.com", " curl -v www.googleFalse.com"]\'' ); console.log( " --swagger-docs: Check response of the curl --swagger-docs='Swagger apis docs url'" ); console.log( " --swagger-login-curl: Check response of the curl --swagger-docs='Swagger apis docs url'" ); console.log( ' --check-pods-logs: Verify if exist files inside of the volumes --namespace' ); console.log(); console.log( '--dependency-coverage | Verify endpoint list ** PENDING **' ); console.log( ' Tests: Description: Input Required:' ); console.log( ' --curl-assert: Check response of the curl --curl-assert=\'["curl -v www.google.com", " curl -v www.googleFalse.com"]\'' ); console.log( " --swagger-docs: Check response of the curl --swagger-docs='Swagger apis docs url'" ); console.log( ' --cross-ping: Verify if exist files inside of the volumes --namespace' ); console.log( ' --check-pods-logs: Verify if exist files inside of the volumes --namespace' ); console.log( ' --check-dependencies: Verify if dependencies are active --namespace' ); console.log( ' --check-images: Verify if dependencies are active --namespace' ); console.log( ' --check-internet-access: Verify if dependencies are active --namespace' ); console.log(); console.log(); console.log(); console.log(); console.log(); continueCli = false; } } return continueCli; } //? Read the standards Variables export async function cli(args) { let options; let continueCli = await printHelp(args); if (continueCli) { // Check if the library have access to kubernetes cluster // This part is for avoid the error of the generate command const tasksInit = new Listr([ { title: 'Verify connection with kubernetes cluster', task: () => { return new Listr( [ { title: 'Get Cluster Info (kubectl cluster-info)', task: async () => { return await smktestUtils.checkAccessToCluster({}); }, }, ], { concurrent: false } ); }, }, ]); let result = await tasksInit.run().catch((err) => { console.error(err); return err.message; }); options = await smktestUtils.parseArgumentsIntoOptions(args); options['projectDir'] = __dirname; // SmokeTest route options['smktestFolder'] = 'smktest'; // SmokeTet base directory options['testId'] = '00120102301230123'; //TODO PENDING TO ADD IF IS NECESSARY options = await criteria.promptForContext(options); process.env.SMKTEST_OPTIONS = JSON.stringify(options); // import dependencies. await suiteGenerator.suiteGenerator(options); options['cli'] = { tasksInit: result, }; } // console.log(">>>>>-1769419500>>>>>") // console.log(continueCli) // console.log("<<<<<<<<<<<<<<<<<<<") // if (options.listOfJestPath) { //TODO active // await runJestTest(options); // } return options; } export default cli;