mirror of
https://github.com/cypress-io/cypress.git
synced 2026-05-01 04:20:23 -05:00
31ee30b6f3
* chore: rename snapshots and spec files to fit vitest convention (#32405) * chore: move compiled files to dist directory to make vitest convertion easier (#32406) * chore: convert utils to vitest (#32407) * chore: convert logger to vitest * chore: convert errors spec to vitest * chore: convert cypress spec to vitest * chore: convert `exec` directory to `vitest` (#32428) * chore: cut over exec directory to vitest * Update cli/test/lib/exec/run.spec.ts * Update cli/test/lib/exec/run.spec.ts * Update cli/test/lib/exec/run.spec.ts * chore: convert the CLI and build script specs over to vitest (#32438) * chore: convert tasks directory to vitest (#32434) change way verify module is exported due to issues interpreting module (thinks its an esm) rework scripts as we cannot run an empty mocha suite chore: fix snapshots and verify requires that are internal to the cypress project fix stubbing issues with fs-extra which is also used by request-progress under the hood fix issues where xvfb was stopping prematurely * chore: remove files no longer used now that mocha tests are converted to vitest (#32455) * build binaries * chore: fix CLI tests (#32484) * chore: remove CI branch
103 lines
3.0 KiB
TypeScript
103 lines
3.0 KiB
TypeScript
// https://github.com/cypress-io/cypress/issues/316
|
|
import tmp from 'tmp'
|
|
import fs from 'fs-extra'
|
|
import openModule from './exec/open'
|
|
import runModule from './exec/run'
|
|
import util from './util'
|
|
import cli from './cli'
|
|
|
|
const cypressModuleApi = {
|
|
/**
|
|
* Opens Cypress GUI
|
|
* @see https://on.cypress.io/module-api#cypress-open
|
|
*/
|
|
open (options: any = {}): any {
|
|
options = util.normalizeModuleOptions(options)
|
|
|
|
return openModule.start(options)
|
|
},
|
|
|
|
/**
|
|
* Runs Cypress tests in the current project
|
|
* @see https://on.cypress.io/module-api#cypress-run
|
|
*/
|
|
async run (options: any = {}): Promise<any> {
|
|
if (!runModule.isValidProject(options.project)) {
|
|
throw new Error(`Invalid project path parameter: ${options.project}`)
|
|
}
|
|
|
|
options = util.normalizeModuleOptions(options)
|
|
tmp.setGracefulCleanup()
|
|
|
|
const outputPath: string = tmp.fileSync().name
|
|
|
|
options.outputPath = outputPath
|
|
|
|
const failedTests = await runModule.start(options)
|
|
const output = await fs.readJson(outputPath, { throws: false })
|
|
|
|
if (!output) {
|
|
return {
|
|
status: 'failed',
|
|
failures: failedTests,
|
|
message: 'Could not find Cypress test run results',
|
|
}
|
|
}
|
|
|
|
return output
|
|
},
|
|
|
|
cli: {
|
|
/**
|
|
* Parses CLI arguments into an object that you can pass to "cypress.run"
|
|
* @example
|
|
* const cypress = require('cypress')
|
|
* const cli = ['cypress', 'run', '--browser', 'firefox']
|
|
* const options = await cypress.cli.parseRunArguments(cli)
|
|
* // options is {browser: 'firefox'}
|
|
* await cypress.run(options)
|
|
* @see https://on.cypress.io/module-api
|
|
*/
|
|
parseRunArguments (args: string[]): any {
|
|
return cli.parseRunCommand(args)
|
|
},
|
|
},
|
|
|
|
/**
|
|
* Provides automatic code completion for configuration in many popular code editors.
|
|
* While it's not strictly necessary for Cypress to parse your configuration, we
|
|
* recommend wrapping your config object with `defineConfig()`
|
|
* @example
|
|
* module.exports = defineConfig({
|
|
* viewportWith: 400
|
|
* })
|
|
*
|
|
* @see ../types/cypress-npm-api.d.ts
|
|
* @param {Cypress.ConfigOptions} config
|
|
* @returns {Cypress.ConfigOptions} the configuration passed in parameter
|
|
*/
|
|
defineConfig (config: any): any {
|
|
return config
|
|
},
|
|
|
|
/**
|
|
* Provides automatic code completion for Component Frameworks Definitions.
|
|
* While it's not strictly necessary for Cypress to parse your configuration, we
|
|
* recommend wrapping your Component Framework Definition object with `defineComponentFramework()`
|
|
* @example
|
|
* module.exports = defineComponentFramework({
|
|
* type: 'cypress-ct-solid-js'
|
|
* // ...
|
|
* })
|
|
*
|
|
* @see ../types/cypress-npm-api.d.ts
|
|
* @param {Cypress.ThirdPartyComponentFrameworkDefinition} config
|
|
* @returns {Cypress.ThirdPartyComponentFrameworkDefinition} the configuration passed in parameter
|
|
*/
|
|
defineComponentFramework (config: any): any {
|
|
return config
|
|
},
|
|
}
|
|
|
|
export = cypressModuleApi
|