Skip to content

Commit

Permalink
added file
Browse files Browse the repository at this point in the history
  • Loading branch information
DavertMik committed Jan 8, 2025
1 parent fa7b767 commit 4fa6023
Show file tree
Hide file tree
Showing 2 changed files with 175 additions and 2 deletions.
174 changes: 174 additions & 0 deletions lib/command/check.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
const { getConfig, getTestRoot } = require('./utils')
const Codecept = require('../codecept')
const output = require('../output')
const standardActingHelpers = require('../plugin/standardActingHelpers')
const store = require('../store')
const container = require('../container')
const figures = require('figures')
const chalk = require('chalk')
const { createTest } = require('../mocha/test')
const { getMachineInfo } = require('./info')
const definitions = require('./definitions')

module.exports = async function (test, options) {
if (options.grep) process.env.grep = options.grep
const configFile = options.config

setTimeout(() => {
output.error("Something went wrong. Checks didn't pass and timed out. Please check your config and helpers.")
process.exit(1)
}, options.timeout || 50000)

const checks = {
config: false,
container: false,
pageObjects: false,
helpers: false,
setup: false,
tests: false,
def: false,
}

const testRoot = getTestRoot(configFile)
let config = getConfig(configFile)

try {
config = getConfig(configFile)
checks['config'] = true
} catch (err) {
checks['config'] = err
}

printCheck('config', checks['config'], config.name)

let codecept
try {
codecept = new Codecept(config, options)
codecept.init(testRoot)
await container.started()
checks.container = true
} catch (err) {
checks.container = err
}

printCheck('container', checks['container'])

if (codecept && options.bootstrap) {
try {
await codecept.bootstrap()
checks.bootstrap = true
} catch (err) {
checks.bootstrap = err
}
printCheck('bootstrap', checks['bootstrap'])
}

let numTests = 0
if (codecept) {
try {
codecept.loadTests()
const mocha = container.mocha()
mocha.files = codecept.testFiles
mocha.loadFiles()
mocha.suite.suites.forEach(suite => {
numTests += suite.tests.length
})
if (numTests > 0) {
checks.tests = true
} else {
throw new Error('No tests found')
}
} catch (err) {
checks.tests = err
}
}

printCheck('tests', checks['tests'], `Total: ${numTests} tests`)

store.dryRun = true

const helpers = container.helpers()

try {
if (!Object.keys(helpers).length) throw new Error('No helpers found')
// load helpers
for (const helper of Object.values(helpers)) {
helper._init()
}
checks.helpers = true
} catch (err) {
checks.helpers = err
}

printCheck('helpers', checks['helpers'], `${Object.keys(helpers).join(', ')}`)

const pageObjects = container.support()

try {
if (Object.keys(pageObjects).length) {
for (const pageObject of Object.values(pageObjects)) {
pageObject.name
}
}
checks.pageObjects = true
} catch (err) {
checks.pageObjects = err
}
printCheck('page objects', checks['pageObjects'], `Total: ${Object.keys(pageObjects).length} support objects`)

if (Object.keys(helpers).length) {
const suite = container.mocha().suite
const test = createTest('test', () => {})
try {
for (const helper of Object.values(helpers)) {
await helper._beforeSuite(suite)
await helper._before(test)
await helper._passed(test)
await helper._after(test)
await helper._finishTest(suite)
await helper._afterSuite(suite)
}
checks.setup = true
} catch (err) {
checks.setup = err
}
}

printCheck('Helpers Hooks', checks['setup'], standardActingHelpers.some(h => Object.keys(helpers).includes(h)) ? 'Initializing and closing browser' : '')

try {
definitions(configFile, { dryRun: true })
checks.def = true
} catch (err) {
checks.def = err
}

printCheck('TypeScript Definitions', checks['def'])

output.print('')

if (!Object.values(checks).every(check => check === true)) {
output.error("Something went wrong. Checks didn't pass.")
output.print()
getMachineInfo()
process.exit(1)
}

output.print(output.styles.success('All checks passed'.toUpperCase()), 'Ready to run your tests 🚀')
process.exit(0)
}

function printCheck(name, value, comment = '') {
let status = ''
if (value == true) {
status += chalk.bold.green(figures.tick)
} else {
status += chalk.bold.red(figures.cross)
}

if (value instanceof Error) {
comment = `${comment} ${chalk.red.italic(value.message)}`.trim()
}

output.print(status, name.toUpperCase(), chalk.dim(comment))
}
3 changes: 1 addition & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "codeceptjs",
"version": "3.7.0-beta.1",
"version": "3.6.10",
"description": "Supercharged End 2 End Testing Framework for NodeJS",
"keywords": [
"acceptance",
Expand Down Expand Up @@ -93,7 +93,6 @@
"fn-args": "4.0.0",
"fs-extra": "11.2.0",
"glob": "^11.0.0",
"fuse.js": "^7.0.0",
"html-minifier-terser": "7.2.0",
"inquirer": "6.5.2",
"invisi-data": "^1.0.0",
Expand Down

0 comments on commit 4fa6023

Please sign in to comment.