mirror of
https://github.com/cypress-io/cypress.git
synced 2025-12-21 14:21:13 -06:00
* migrate cli scripts to TypeScript * convert all javascript source files in the CLI to TypeScript rebase into first * chore: refactor all tests to TypeScript rebase into second * add npmignore for cli for typescript files * update build process * fix publically available exports * Fix cy-in-cy tests * add ts-expect-error to failing files * fix projectConfigIpc failures as there are now multiple installs of tsx * fix after-pack hook * fix binary script * chore: update publish binary to account for CLI being an ESModule compiled down to CommonJS * does this work? * fix the verify spec by making the listr2 renderer silent as it behaves differently since the refactor and is printing non deterministic outputs into our tests that do not have a large impact on the area we are testing and mostly served to actually test the renders of the listr2 framework itself * empty commit * additional refactor to code to remove strange any typing and exporting * bump cache and build binaries * fix CLI exports to keep backwards compatibility * fix unit-tests * turn on mac jobs * fix group name rename in CLI * remove babel deps from cli and explicitly install typescript * address feedback from code review * dont just falsy check results and instead explicitly check for null or undefined * add ts-expect-error * additional pass on cleaning up dynamic require / import from global lib references * annotate ts-expect-errors with reason for why error is expected * add rest of ts-expect-error comments * removing hardcoded branch to publish binary chore/migrate_cli_to_typescript
60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
import { errors } from '../errors'
|
|
|
|
/**
|
|
* Throws an error with "details" property from
|
|
* "errors" object.
|
|
* @param {Object} details - Error details
|
|
*/
|
|
export const throwInvalidOptionError = (details?: any): never => {
|
|
if (!details) {
|
|
details = errors.unknownError
|
|
}
|
|
|
|
// throw this error synchronously, it will be caught later on and
|
|
// the details will be propagated to the promise chain
|
|
const err: any = new Error()
|
|
|
|
err.details = details
|
|
throw err
|
|
}
|
|
|
|
/**
|
|
* Selects exec args based on the configured `testingType`
|
|
* @param {string} testingType The type of tests being executed
|
|
* @returns {string[]} The array of new exec arguments
|
|
*/
|
|
export const processTestingType = (options: any): string[] => {
|
|
if (options.e2e && options.component) {
|
|
return throwInvalidOptionError(errors.incompatibleTestTypeFlags)
|
|
}
|
|
|
|
if (options.testingType && (options.component || options.e2e)) {
|
|
return throwInvalidOptionError(errors.incompatibleTestTypeFlags)
|
|
}
|
|
|
|
if (options.testingType === 'component' || options.component || options.ct) {
|
|
return ['--testing-type', 'component']
|
|
}
|
|
|
|
if (options.testingType === 'e2e' || options.e2e) {
|
|
return ['--testing-type', 'e2e']
|
|
}
|
|
|
|
if (options.testingType) {
|
|
return throwInvalidOptionError(errors.invalidTestingType)
|
|
}
|
|
|
|
return []
|
|
}
|
|
|
|
/**
|
|
* Throws an error if configFile is string 'false' or boolean false
|
|
* @param {*} options
|
|
*/
|
|
export const checkConfigFile = (options: any): void => {
|
|
// CLI will parse as string, module API can pass in boolean
|
|
if (options.configFile === 'false' || options.configFile === false) {
|
|
throwInvalidOptionError(errors.invalidConfigFile)
|
|
}
|
|
}
|