mirror of
https://github.com/cypress-io/cypress.git
synced 2026-01-13 02:09:52 -06:00
143 lines
4.1 KiB
JavaScript
143 lines
4.1 KiB
JavaScript
require('../../spec_helper')
|
|
|
|
const verify = require(`${lib}/tasks/verify`)
|
|
const spawn = require(`${lib}/exec/spawn`)
|
|
const open = require(`${lib}/exec/open`)
|
|
const util = require(`${lib}/util`)
|
|
|
|
describe('exec open', function () {
|
|
context('.start', function () {
|
|
beforeEach(function () {
|
|
sinon.stub(util, 'isInstalledGlobally').returns(true)
|
|
sinon.stub(verify, 'start').resolves()
|
|
sinon.stub(spawn, 'start').resolves()
|
|
})
|
|
|
|
it('verifies download', function () {
|
|
return open.start()
|
|
.then(() => {
|
|
expect(verify.start).to.be.called
|
|
})
|
|
})
|
|
|
|
it('calls spawn with correct options', function () {
|
|
return open.start({ dev: true })
|
|
.then(() => {
|
|
expect(spawn.start).to.be.calledWith([], {
|
|
detached: false,
|
|
dev: true,
|
|
})
|
|
})
|
|
})
|
|
|
|
it('spawns with port', function () {
|
|
return open.start({ port: '1234' })
|
|
.then(() => {
|
|
expect(spawn.start).to.be.calledWith(['--port', '1234'])
|
|
})
|
|
})
|
|
|
|
it('spawns with --env', function () {
|
|
return open.start({ env: 'host=http://localhost:1337,name=brian' })
|
|
.then(() => {
|
|
expect(spawn.start).to.be.calledWith(
|
|
['--env', 'host=http://localhost:1337,name=brian'],
|
|
)
|
|
})
|
|
})
|
|
|
|
it('spawns with --config', function () {
|
|
return open.start({ config: 'watchForFileChanges=false,baseUrl=localhost' })
|
|
.then(() => {
|
|
expect(spawn.start).to.be.calledWith(
|
|
['--config', 'watchForFileChanges=false,baseUrl=localhost'],
|
|
)
|
|
})
|
|
})
|
|
|
|
it('spawns with --config-file set', function () {
|
|
return open.start({ configFile: 'special-cypress.config.js' })
|
|
.then(() => {
|
|
expect(spawn.start).to.be.calledWith(
|
|
['--config-file', 'special-cypress.config.js'],
|
|
)
|
|
})
|
|
})
|
|
|
|
it('spawns with cwd as --project if not installed globally', function () {
|
|
util.isInstalledGlobally.returns(false)
|
|
|
|
return open.start()
|
|
.then(() => {
|
|
expect(spawn.start).to.be.calledWith(
|
|
['--project', process.cwd()],
|
|
)
|
|
})
|
|
})
|
|
|
|
it('spawns without --project if not installed globally and passing --global option', function () {
|
|
util.isInstalledGlobally.returns(false)
|
|
|
|
return open.start({ global: true })
|
|
.then(() => {
|
|
expect(spawn.start).not.to.be.calledWith(
|
|
['--project', process.cwd()],
|
|
)
|
|
})
|
|
})
|
|
|
|
it('spawns with --project passed in as options even when not installed globally', function () {
|
|
util.isInstalledGlobally.returns(false)
|
|
|
|
return open.start({ project: '/path/to/project' })
|
|
.then(() => {
|
|
expect(spawn.start).to.be.calledWith(
|
|
['--project', '/path/to/project'],
|
|
)
|
|
})
|
|
})
|
|
|
|
it('spawns with --project if specified and installed globally', function () {
|
|
return open.start({ project: '/path/to/project' })
|
|
.then(() => {
|
|
expect(spawn.start).to.be.calledWith(
|
|
['--project', '/path/to/project'],
|
|
)
|
|
})
|
|
})
|
|
|
|
it('spawns without --project if not specified and installed globally', function () {
|
|
return open.start()
|
|
.then(() => {
|
|
expect(spawn.start).to.be.calledWith([])
|
|
})
|
|
})
|
|
|
|
it('spawns without --testing-type when not specified', () => {
|
|
return open.start().then(() => {
|
|
expect(spawn.start).to.be.calledWith([])
|
|
})
|
|
})
|
|
|
|
it('spawns with --testing-type e2e', () => {
|
|
return open.start({ testingType: 'e2e' }).then(() => {
|
|
expect(spawn.start).to.be.calledWith(['--testing-type', 'e2e'])
|
|
})
|
|
})
|
|
|
|
it('spawns with --testing-type component', () => {
|
|
return open.start({ testingType: 'component' }).then(() => {
|
|
expect(spawn.start).to.be.calledWith(['--testing-type', 'component'])
|
|
})
|
|
})
|
|
|
|
it('throws if --testing-type is invalid', () => {
|
|
expect(() => open.processOpenOptions({ testingType: 'randomTestingType' })).to.throw()
|
|
})
|
|
|
|
it('throws if --config-file is false', () => {
|
|
expect(() => open.processOpenOptions({ configFile: 'false' })).to.throw()
|
|
})
|
|
})
|
|
})
|