Skip to content

Commit 7c5a5f8

Browse files
committed
mouse
1 parent 786c754 commit 7c5a5f8

File tree

3 files changed

+31
-40
lines changed

3 files changed

+31
-40
lines changed

packages/driver/src/cy/mouse.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ const getMouseCoords = (state) => {
4242
return state('mouseCoords')
4343
}
4444

45-
const create = (state, keyboard, focused, Cypress) => {
45+
export const create = (state, keyboard, focused, Cypress) => {
4646
const isFirefox = Cypress.browser.family === 'firefox'
4747

4848
const sendPointerEvent = (el, evtOptions, evtName, bubbles = false, cancelable = false) => {
@@ -707,6 +707,8 @@ const create = (state, keyboard, focused, Cypress) => {
707707
return mouse
708708
}
709709

710+
export interface Mouse extends ReturnType<typeof create> {}
711+
710712
const { stopPropagation } = window.MouseEvent.prototype
711713

712714
const sendEvent = (evtName, el, evtOptions, bubbles = false, cancelable = false, Constructor, composed = false) => {
@@ -758,7 +760,3 @@ const toCoordsEventOptions = (x, y, win) => {
758760
layerY: x + scrollY,
759761
}
760762
}
761-
762-
export default {
763-
create,
764-
}

packages/driver/src/cypress.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import $errUtils from './cypress/error_utils'
2121
import $Log from './cypress/log'
2222
import $LocalStorage from './cypress/local_storage'
2323
import $Mocha from './cypress/mocha'
24-
import $Mouse from './cy/mouse'
24+
import { create as createMouse } from './cy/mouse'
2525
import $Runner from './cypress/runner'
2626
import $Screenshot from './cypress/screenshot'
2727
import $SelectorPlayground from './cypress/selector_playground'
@@ -661,7 +661,10 @@ $Cypress.prototype.LocalStorage = $LocalStorage
661661
$Cypress.prototype.Mocha = $Mocha
662662
$Cypress.prototype.resolveWindowReference = resolvers.resolveWindowReference
663663
$Cypress.prototype.resolveLocationReference = resolvers.resolveLocationReference
664-
$Cypress.prototype.Mouse = $Mouse
664+
$Cypress.prototype.Mouse = {
665+
create: createMouse,
666+
}
667+
665668
$Cypress.prototype.Runner = $Runner
666669
$Cypress.prototype.Server = $Server
667670
$Cypress.prototype.Screenshot = $Screenshot

packages/driver/src/cypress/cy.ts

Lines changed: 23 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import { create as createAliases, IAliases } from '../cy/aliases'
1313
import * as $Events from './events'
1414
import { create as createEnsures, IEnsures } from '../cy/ensures'
1515
import { create as createFocused, IFocused } from '../cy/focused'
16-
import $Mouse from '../cy/mouse'
16+
import { create as createMouse, Mouse } from '../cy/mouse'
1717
import { Keyboard } from '../cy/keyboard'
1818
import { create as createLocation, ILocation } from '../cy/location'
1919
import { create as createAssertions, IAssertions } from '../cy/assertions'
@@ -124,6 +124,7 @@ class $Cy implements ITimeouts, IStability, IAssertions, IRetries, IJQuery, ILoc
124124
config: any
125125
devices: {
126126
keyboard: Keyboard
127+
mouse: Mouse
127128
}
128129

129130
timeout: ITimeouts['timeout']
@@ -141,7 +142,10 @@ class $Cy implements ITimeouts, IStability, IAssertions, IRetries, IJQuery, ILoc
141142

142143
getRemoteLocation: ILocation['getRemoteLocation']
143144

144-
// focused, keyboard, mouse
145+
fireBlur: IFocused['fireBlur']
146+
fireFocus: IFocused['fireFocus']
147+
needsFocus: IFocused['needsFocus']
148+
getFocused: IFocused['getFocused']
145149

146150
pauseTimers: ITimer['pauseTimers']
147151

@@ -178,11 +182,6 @@ class $Cy implements ITimeouts, IStability, IAssertions, IRetries, IJQuery, ILoc
178182
detachDom: ISnapshots['detachDom']
179183
getStyles: ISnapshots['getStyles']
180184

181-
fireBlur: IFocused['fireBlur']
182-
fireFocus: IFocused['fireFocus']
183-
needsFocus: IFocused['needsFocus']
184-
getFocused: IFocused['getFocused']
185-
186185
// Private methods
187186
resetTimer: ReturnType<typeof createTimer>['reset']
188187

@@ -205,10 +204,6 @@ class $Cy implements ITimeouts, IStability, IAssertions, IRetries, IJQuery, ILoc
205204
this.config = config
206205
initVideoRecorder(Cypress)
207206

208-
this.devices = {
209-
keyboard: new Keyboard(state),
210-
}
211-
212207
// bind methods
213208
this.$$ = this.$$.bind(this)
214209

@@ -245,7 +240,23 @@ class $Cy implements ITimeouts, IStability, IAssertions, IRetries, IJQuery, ILoc
245240

246241
this.getRemoteLocation = location.getRemoteLocation
247242

248-
// focused, keyboard, mouse
243+
const focused = createFocused(state)
244+
245+
this.fireBlur = focused.fireBlur
246+
this.fireFocus = focused.fireFocus
247+
this.needsFocus = focused.needsFocus
248+
this.getFocused = focused.getFocused
249+
250+
this.documentHasFocus = focused.documentHasFocus
251+
this.interceptFocus = focused.interceptFocus
252+
this.interceptBlur = focused.interceptBlur
253+
254+
const keyboard = new Keyboard(state)
255+
256+
this.devices = {
257+
keyboard,
258+
mouse: createMouse(state, keyboard, focused, Cypress),
259+
}
249260

250261
const timer = createTimer(Cypress)
251262

@@ -300,20 +311,6 @@ class $Cy implements ITimeouts, IStability, IAssertions, IRetries, IJQuery, ILoc
300311

301312
this.onCssModified = snapshots.onCssModified
302313
this.onBeforeWindowLoad = snapshots.onBeforeWindowLoad
303-
304-
const focused = createFocused(state)
305-
306-
this.fireBlur = focused.fireBlur
307-
this.fireFocus = focused.fireFocus
308-
this.needsFocus = focused.needsFocus
309-
this.getFocused = focused.getFocused
310-
311-
this.documentHasFocus = focused.documentHasFocus
312-
this.interceptFocus = focused.interceptFocus
313-
this.interceptBlur = focused.interceptBlur
314-
315-
// temporary -> should be removed
316-
this.focused = focused
317314
}
318315

319316
$$ (selector, context) {
@@ -401,8 +398,6 @@ export default {
401398
})
402399
}
403400

404-
const mouse = $Mouse.create(state, cy.devices.keyboard, cy.focused, Cypress)
405-
406401
const testConfigOverride = new TestConfigOverride()
407402

408403
const isStopped = () => {
@@ -726,11 +721,6 @@ export default {
726721

727722
isStopped,
728723

729-
devices: {
730-
mouse,
731-
keyboard: cy.devices.keyboard,
732-
},
733-
734724
initialize ($autIframe) {
735725
setRemoteIframeProps($autIframe, state)
736726

0 commit comments

Comments
 (0)