Files
cypress/packages/server/lib/plugins/dev-server.js
Brian Mann af26fbebe6 feat: component testing (#14479)
Co-authored-by: Jessica Sachs <jess@jessicasachs.io>
Co-authored-by: Barthélémy Ledoux <bart@cypress.io>
Co-authored-by: Lachlan Miller <lachlan.miller.1990@outlook.com>
Co-authored-by: Zach Bloomquist <github@chary.us>
Co-authored-by: Dmitriy Kovalenko <dmtr.kovalenko@outlook.com>
Co-authored-by: ElevateBart <ledouxb@gmail.com>
Co-authored-by: Ben Kucera <14625260+Bkucera@users.noreply.github.com>
2021-02-04 15:45:16 -05:00

56 lines
1.3 KiB
JavaScript

require('../cwd')
const EE = require('events')
const debug = require('debug')('cypress:ct:dev-server')
const plugins = require('../plugins')
const baseEmitter = new EE()
plugins.registerHandler((ipc) => {
baseEmitter.on('dev-server:specs:changed', (specs) => {
ipc.send('dev-server:specs:changed', specs)
})
ipc.on('dev-server:compile:error', (error) => {
baseEmitter.emit('dev-server:compile:error', error)
})
ipc.on('dev-server:compile:success', () => {
allowToRequest = true,
baseEmitter.emit('dev-server:compile:success')
})
return baseEmitter.on('dev-server:close', () => {
debug('base emitter plugin close event')
return ipc.send('dev-server:close')
})
})
// for simpler stubbing from unit tests
const API = {
emitter: baseEmitter,
start ({ specs, config }) {
if (!plugins.has('dev-server:start')) {
// TODO: add link to the documentation in the error message
throw new Error('It is required to register dev-server plugin that implements `dev-server:start` event for component testing.')
}
return plugins.execute('dev-server:start', { specs, config })
},
updateSpecs (specs) {
return baseEmitter.emit('dev-server:specs:changed', specs)
},
close () {
debug('close dev-server')
baseEmitter.emit('close')
return baseEmitter.removeAllListeners()
},
}
module.exports = API